运维开发网

用Python实现Excel文件的合并

运维开发网 https://www.qedev.com 2022-06-16 16:55 出处:网络
这篇将以新冠疫情数据为例,详细介绍了如何利用Python实现合并Excel文件,文中的示例代码讲解详细,感兴趣的可以了解一下

这篇将以新冠疫情数据为例,详细介绍了如何利用Python实现合并Excel文件,文中的示例代码讲解详细,感兴趣的可以了解一下

注:本文以新冠肺炎疫情数据文件合并为例。

如果需要相关数据,请继续:“2020-2022年新冠肺炎疫情数据”


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


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

import requestsimport jsonimport openpyxlimport datetimeimport datetime as dtimport timeimport pandas as pdimport csvfrom openpyxl import load_workbookfrom sqlalchemy import create_engineimport mathimport osimport globcsv_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('数据合成完毕!')


组合数据:



二、使用函数进行数据合并## 02 使用函数进行数据合并import osimport 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)gt;0): filelist.append(parent+'/'+path) return filelist# D:\Python\03DataAcquisition\COVID-19path=input("请输入数据文件所在目录:")filelist=mergeFile(path)filelistcsvdata=pd.DataFrame()csvdatadf=pd.DataFrame()for m in filelist: csvdata=pd.read_csv(m,encoding='utf-8-sig') csvdatadf=csvdatadf.append(csvdata)# 由于2023年的数据还没有,所以不合并


(* ~(oo)~)注意:这个应该要花很长时间,因为有190多万条数据。

保存合并的数据:

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


阅读2020/0101年前新冠肺炎疫情数据:

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



合并两组数据:

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



三、处理港澳台数据


如图:将Country_Region从香港改为中国。澳门和台湾省也是如此:

查找有关台湾省的数据:

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']


香港的数据处理:

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的更多信息,请搜索源搜网之前的文章或者继续浏览下面的相关文章

0

精彩评论

暂无评论...
验证码 换一张
取 消