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 相关文章推荐
Python3 模块、包调用&路径详解
Oct 25 Python
Python中的默认参数实例分析
Jan 29 Python
python利用高阶函数实现剪枝函数
Mar 20 Python
pandas创建新Dataframe并添加多行的实例
Apr 08 Python
Python 实现在文件中的每一行添加一个逗号
Apr 29 Python
Python get获取页面cookie代码实例
Sep 12 Python
通过pykafka接收Kafka消息队列的方法
Dec 27 Python
python实现websocket的客户端压力测试
Jun 25 Python
python栈的基本定义与使用方法示例【初始化、赋值、入栈、出栈等】
Oct 24 Python
如何基于python实现不邻接植花
May 01 Python
python中pow函数用法及功能说明
Dec 04 Python
python 进阶学习之python装饰器小结
Sep 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命名空间(namespace)的动态访问及使用技巧
2014/08/18 PHP
php+mongodb判断坐标是否在指定多边形区域内的实例
2016/10/28 PHP
Thinkphp事务操作实例(推荐)
2017/04/01 PHP
php简单处理XML数据的方法示例
2017/05/19 PHP
jquery插件jbox使用iframe关闭问题
2009/02/09 Javascript
ajax 缓存 问题 requestheader
2010/08/01 Javascript
jquery的键盘事件修改代码
2011/02/24 Javascript
javascript实现简单的Map示例介绍
2013/12/23 Javascript
JS实现网页滚动条感应鼠标变色的方法
2015/02/26 Javascript
nodejs开发微博实例
2015/03/25 NodeJs
基于jQuery和CSS3制作响应式水平时间轴附源码下载
2015/12/20 Javascript
解析JavaScript模仿块级作用域
2016/12/29 Javascript
Angularjs验证用户输入的字符串是否为日期时间
2017/06/01 Javascript
Angular.js实现获取验证码倒计时60秒按钮的简单方法
2017/10/18 Javascript
详解webpack+ES6+Sass搭建多页面应用
2018/11/05 Javascript
详解json串反转义(消除反斜杠)
2019/08/12 Javascript
微信小程序仿通讯录功能
2020/04/09 Javascript
koa2 数据api中间件设计模型的实现方法
2020/07/13 Javascript
PyTorch中 tensor.detach() 和 tensor.data 的区别详解
2020/01/06 Python
TensorFlow实现自定义Op方式
2020/02/04 Python
python读取图片的几种方式及图像宽和高的存储顺序
2020/02/11 Python
pyqt5中动画的使用详解
2020/04/01 Python
Python多个装饰器的调用顺序实例解析
2020/05/22 Python
pycharm实现print输出保存到txt文件
2020/06/01 Python
详解Pandas 处理缺失值指令大全
2020/07/30 Python
pandas统计重复值次数的方法实现
2021/02/20 Python
GIVENCHY纪梵希官方旗舰店:高定彩妆与贵族护肤品
2018/04/16 全球购物
高性能钓鱼服装:Huk Gear
2019/02/20 全球购物
struct和class的区别
2015/11/20 面试题
运动会解说词200字
2014/02/06 职场文书
销售个人求职信范文
2014/04/28 职场文书
课外小组活动总结
2014/08/27 职场文书
护理专业自荐信范文
2015/03/06 职场文书
Python多线程 Queue 模块常见用法
2021/07/04 Python
Java+swing实现抖音上的表白程序详解
2022/06/25 Java/Android
JavaScript parseInt0.0000005打印5原理解析
2022/07/23 Javascript