Python实现Excel文件的合并(以新冠疫情数据为例)


Posted in Python onMarch 20, 2022

注:本篇文章以新冠疫情数据文件的合并为例。

需要相关数据的请移步:》2020-2022年新冠疫情数据

一、单目录下面的数据合并

Python实现Excel文件的合并(以新冠疫情数据为例)

将2020下的所有文件进行合并,成一个文件:

import requests
import json
import openpyxl
import datetime
import datetime as dt
import time
import pandas as pd
import csv
from openpyxl import load_workbook
from sqlalchemy import create_engine
import math
import os
import glob
csv_list=glob.glob(r'D:\Python\03DataAcquisition\COVID-19\2020\*.csv')
print("所有数据文件总共有%s" %len(csv_list))
for i in csv_list:
    fr=open(i,"rb").read() #除了第一个数据文件外,其他不读取表头
    with open('../output/covid19temp0314.csv','ab') as f:
        f.write(fr)
    f.close()
print('数据合成完毕!')

Python实现Excel文件的合并(以新冠疫情数据为例)

合并后的数据:

Python实现Excel文件的合并(以新冠疫情数据为例)

二、使用函数进行数据合并

## 02 使用函数进行数据合并
import os
import pandas as pd 
# 定义函数(具有递归功能)
def mergeFile(parent,path="",pathdeep=0,filelist=[],csvdatadf=pd.DataFrame(),csvdata=pd.DataFrame()):
    fileAbsPath=os.path.join(parent,path)
    if os.path.isdir(fileAbsPath)==True:
        if(pathdeep!=0 and ('.ipynb_checkpoints' not in str(fileAbsPath))): # =0代表没有下一层目录
            print('--'+path)
        for filename2 in os.listdir(fileAbsPath):
            mergeFile(fileAbsPath,filename2,pathdeep=pathdeep+1)
    else:
        if(pathdeep==2 and path.endswith(".csv") and os.path.getsize(parent+'/'+path)>0):
            filelist.append(parent+'/'+path)
    return filelist

# D:\Python\03DataAcquisition\COVID-19
path=input("请输入数据文件所在目录:")
filelist=mergeFile(path)

filelist

csvdata=pd.DataFrame()
csvdatadf=pd.DataFrame()

for m in filelist:
    csvdata=pd.read_csv(m,encoding='utf-8-sig')
    csvdatadf=csvdatadf.append(csvdata)
# 由于2023年的数据还没有,所以不合并

Python实现Excel文件的合并(以新冠疫情数据为例)

(* ̄(oo) ̄)注: 这个的等待时间应该会比较长,因为一共有一百九十多万条数据。

将合并后的数据进行保存:

csvdatadf.to_csv("covid190314.csv",index=None,encoding='utf-8-sig')
csvdatadf=pd.read_csv("covid190314.csv",encoding='utf-8-sig')
csvdatadf.info()

Python实现Excel文件的合并(以新冠疫情数据为例)

读取新冠疫情在2020/0101之前的数据:

beforedf=pd.read_csv(r'D:\Python\03DataAcquisition\COVID-19\before20201111.csv',encoding='utf-8-sig')
beforedf.info()

Python实现Excel文件的合并(以新冠疫情数据为例)

Python实现Excel文件的合并(以新冠疫情数据为例)

将两组数据合并:

tempalldf=beforedf.append(csvdatadf)
tempalldf.head()

Python实现Excel文件的合并(以新冠疫情数据为例)

三、处理港澳台数据

Python实现Excel文件的合并(以新冠疫情数据为例)

如图所示:要将Country_Region从Hong Kong变成China。澳门和台湾也是如此:

查找有关台湾的数据:

beforedf.loc[beforedf['Country/Region']=='Taiwan']
beforedf.loc[beforedf['Country/Region'].str.contains('Taiwan')]
beforedf.loc[beforedf['Country/Region'].str.contains('Taiwan'),'Province/State']='Taiwan'
beforedf.loc[beforedf['Province/State']=='Taiwan','Country/Region']='China'
beforedf.loc[beforedf['Province/State']=='Taiwan']

Python实现Excel文件的合并(以新冠疫情数据为例)

香港的数据处理:

beforedf.loc[beforedf['Country/Region'].str.contains('Hong Kong'),'Province/State']='Hong Kong'
beforedf.loc[beforedf['Province/State']=='Hong Kong','Country/Region']='China'
afterdf.loc[afterdf['Country_Region'].str.contains('Hong Kong'),'Province_State']='Hong Kong'
afterdf.loc[afterdf['Province_State']=='Hong Kong','Country_Region']='China'

澳门的数据处理:

beforedf.loc[beforedf['Country/Region'].str.contains('Macau'),'Province/State']='Macau'
beforedf.loc[beforedf['Province/State']=='Macau','Country/Region']='China'
afterdf.loc[afterdf['Country_Region'].str.contains('Macau'),'Province_State']='Macau'
afterdf.loc[afterdf['Province_State']=='Macau','Country_Region']='China'

最终将整理好的数据进行保存:

beforedf.to_csv("beforedf0314.csv",index=None,encoding='utf-8-sig')
afterdf.to_csv("afterdf0314.csv",index=None,encoding='utf-8-sig')

Python实现Excel文件的合并(以新冠疫情数据为例)

到此这篇关于Python实现Excel文件的合并(以新冠疫情数据为例)的文章就介绍到这了,更多相关Python合并Excel内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python基于二分查找实现求整数平方根的方法
May 12 Python
python3中str(字符串)的使用教程
Mar 23 Python
python实现分页效果
Oct 25 Python
python调用百度地图WEB服务API获取地点对应坐标值
Jan 16 Python
Python把对应格式的csv文件转换成字典类型存储脚本的方法
Feb 12 Python
基于python分析你的上网行为 看看你平时上网都在干嘛
Aug 13 Python
基于Django统计博客文章阅读量
Oct 29 Python
python 画函数曲线示例
Dec 04 Python
pytorch方法测试详解——归一化(BatchNorm2d)
Jan 15 Python
python正则表达式实例代码
Mar 03 Python
python中return不返回值的问题解析
Jul 22 Python
python 邮件检测工具mmpi的使用
Jan 04 Python
Python中三种花式打印的示例详解
Mar 19 #Python
Python学习之包与模块详解
Python requests用法和django后台处理详解
Mar 19 #Python
Python实现Hash算法
Mar 18 #Python
python实现会员信息管理系统(List)
Mar 18 #Python
Python实现归一化算法详情
Mar 18 #Python
python实现会员管理系统
Mar 18 #Python
You might like
PHP新手上路(二)
2006/10/09 PHP
php实现天干地支计算器示例
2014/03/14 PHP
php生成excel列名超过26列大于Z时的解决方法
2014/12/29 PHP
php上传文件并显示上传进度的方法
2015/03/24 PHP
laravel orm 关联条件查询代码
2019/10/21 PHP
JavaScript Undefined,Null类型和NaN值区别
2008/10/22 Javascript
JavaScript 设计模式学习 Factory
2009/07/29 Javascript
JQuery开发的数独游戏代码
2010/10/29 Javascript
js实现文字跟随鼠标移动而移动的方法
2015/02/28 Javascript
基于jQuery实现交互体验社会化分享代码附源码下载
2016/01/04 Javascript
JavaScript数据结构之链表的实现
2017/03/19 Javascript
vue2.0实现导航菜单切换效果
2017/05/08 Javascript
JavaScript引用类型Array实例分析
2018/07/24 Javascript
vue视图不更新情况详解
2019/05/16 Javascript
javascript导出csv文件(excel)的方法示例
2019/08/25 Javascript
vue从零实现一个消息通知组件的方法详解
2020/03/16 Javascript
[48:31]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第一场 2月2日
2021/03/11 DOTA
Python 面向对象 成员的访问约束
2008/12/23 Python
Python内置函数bin() oct()等实现进制转换
2012/12/30 Python
python Django模板的使用方法(图文)
2013/11/04 Python
Python中取整的几种方法小结
2017/01/06 Python
详解Python中最难理解的点-装饰器
2017/04/03 Python
python 多个参数不为空校验方法
2019/02/14 Python
python做反被爬保护的方法
2019/07/01 Python
Django跨域资源共享问题(推荐)
2020/03/09 Python
python实现五子棋程序
2020/04/24 Python
python操作toml文件的示例代码
2020/11/27 Python
使用HTML5中的contentEditable来将多行文本自动增高
2016/03/01 HTML / CSS
AmazeUI 评论列表的实现示例
2020/08/13 HTML / CSS
Schutz鞋官方网站:Schutz Shoes
2017/12/13 全球购物
什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?
2012/05/23 面试题
2014最新党员违纪检讨书
2014/10/12 职场文书
环境卫生工作汇报材料
2014/10/28 职场文书
酒店仓管员岗位职责
2015/04/01 职场文书
秋收起义观后感
2015/06/11 职场文书
Win11如何设置右键单击显示所有选项?Win11右键单击显示所有选项设置教程
2022/04/08 数码科技