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 socket网络编程步骤详解(socket套接字使用)
Dec 06 Python
Python实现线程池代码分享
Jun 21 Python
Python列出一个文件夹及其子目录的所有文件
Jun 30 Python
Pycharm学习教程(5) Python快捷键相关设置
May 03 Python
Python实现调度算法代码详解
Dec 01 Python
Python入门学习指南分享
Apr 11 Python
python实现自动获取IP并发送到邮箱
Dec 26 Python
pip安装py_zipkin时提示的SSL问题对应
Dec 29 Python
Python 微信之获取好友昵称并制作wordcloud的实例
Feb 21 Python
Pycharm使用远程linux服务器conda/python环境在本地运行的方法(图解))
Dec 09 Python
Python语法学习之进程的创建与常用方法详解
Apr 08 Python
Python matplotlib绘制条形统计图 处理多个实验多组观测值
Apr 21 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缩略图生成程式(需要GD库支持)
2007/03/06 PHP
PHP利用REFERER根居访问来地址进行页面跳转
2013/09/28 PHP
php根据日期判断星座的函数分享
2014/02/13 PHP
浅析PHP的静态成员函数效率更高的原因
2014/06/13 PHP
php+mysqli实现批量替换数据库表前缀的方法
2014/12/29 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
2017/06/15 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
dwr spring的集成实现代码
2009/03/22 Javascript
一个选择最快的服务器转向代码
2009/04/27 Javascript
js 遍历对象的属性的代码
2011/12/29 Javascript
JavaScript执行效率与性能提升方案
2012/12/21 Javascript
兼容主流浏览器的iframe自适应高度js脚本
2014/01/10 Javascript
手机号码,密码正则验证
2014/09/04 Javascript
详解JavaScript数组和字符串中去除重复值的方法
2016/03/07 Javascript
JQuery控制DIV的选取实现方法
2016/09/18 Javascript
JS键盘版计算器的制作方法
2016/12/03 Javascript
Java与JavaScript中判断两字符串是否相等的区别
2017/03/13 Javascript
js实现Tab选项卡切换效果
2020/07/17 Javascript
js正则相关知识点专题
2018/05/10 Javascript
Vue开发Html5微信公众号的步骤
2019/04/11 Javascript
vue调用语音播放的方法
2019/09/27 Javascript
vue+elementUI(el-upload)图片压缩,默认同比例压缩操作
2020/08/10 Javascript
解决python写的windows服务不能启动的问题
2014/04/15 Python
python实现用于测试网站访问速率的方法
2015/05/26 Python
python中Matplotlib实现绘制3D图的示例代码
2017/09/04 Python
使用turtle绘制五角星、分形树
2019/10/06 Python
Django DRF APIView源码运行流程详解
2020/08/17 Python
找到不普通的东西:Bonanza
2016/10/20 全球购物
Monnier Freres中文官网:法国领先的奢侈品配饰在线零售商
2017/11/01 全球购物
多媒体专业自我鉴定
2014/02/28 职场文书
2015元旦节寄语
2014/12/08 职场文书
2014普法依法治理工作总结
2014/12/18 职场文书
工作能力自我评价2015
2015/03/05 职场文书
离婚被告答辩状
2015/05/22 职场文书
小学语文继续教育研修日志
2015/11/13 职场文书
一篇合格的广告文案,其主要目的是什么?
2019/07/12 职场文书