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 相关文章推荐
利用pandas将numpy数组导出生成excel的实例
Jun 14 Python
python爬虫之urllib,伪装,超时设置,异常处理的方法
Dec 19 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
Jan 29 Python
Python第三方库h5py_读取mat文件并显示值的方法
Feb 08 Python
利用Python实现Shp格式向GeoJSON的转换方法
Jul 09 Python
python障碍式期权定价公式
Jul 19 Python
python3在同一行内输入n个数并用列表保存的例子
Jul 20 Python
pytorch 状态字典:state_dict使用详解
Jan 17 Python
对tensorflow中cifar-10文档的Read操作详解
Feb 10 Python
PyInstaller将Python文件打包为exe后如何反编译(破解源码)以及防止反编译
Apr 15 Python
解决virtualenv -p python3 venv报错的问题
Feb 05 Python
如何利用pygame实现打飞机小游戏
May 30 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/12/05 PHP
加速XP搜索功能堪比vista
2007/03/22 PHP
PHP多个图片压缩成ZIP的方法
2020/08/18 PHP
PHP const定义常量及global定义全局常量实例解析
2020/05/28 PHP
JS日历 推荐
2006/12/03 Javascript
js实现权限树的更新权限时的全选全消功能
2009/02/17 Javascript
JQuery toggle使用分析
2009/11/16 Javascript
HTML,CSS,JavaScript速查表推荐
2014/12/02 Javascript
关于动态执行代码(js的Eval)实例详解
2016/08/15 Javascript
浅谈键盘上回车按钮的js触发事件
2017/02/13 Javascript
BootStrap 获得轮播中的索引和当前活动的焦点对象
2017/05/11 Javascript
原生JS实现不断变化的标签
2017/05/22 Javascript
Angularjs的$http异步删除数据详解及实例
2017/07/27 Javascript
Vue2.0用 watch 观察 prop 变化(不触发)
2017/09/08 Javascript
使用JQuery实现图片轮播效果的实例(推荐)
2017/10/24 jQuery
官方推荐react-navigation的具体使用详解
2018/05/08 Javascript
jQuery实现为动态添加的元素绑定事件实例分析
2018/09/07 jQuery
Angular6 发送手机验证码按钮倒计时效果实现方法
2019/01/08 Javascript
vue中keep-alive组件的入门使用教程
2019/06/06 Javascript
Python常用模块介绍
2014/11/21 Python
总结网络IO模型与select模型的Python实例讲解
2016/06/27 Python
Python实现的摇骰子猜大小功能小游戏示例
2017/12/18 Python
Python线性回归实战分析
2018/02/01 Python
python实现人民币大写转换
2018/06/20 Python
pycharm安装和首次使用教程
2018/08/27 Python
Ubuntu下Python2与Python3的共存问题
2018/10/31 Python
tensorflow指定CPU与GPU运算的方法实现
2020/04/21 Python
什么是python类属性
2020/06/10 Python
python 实现逻辑回归
2020/12/30 Python
Python中对象的比较操作==和is区别详析
2021/02/12 Python
vivo智能手机官方商城:vivo
2016/09/22 全球购物
Dockers鞋官网:Dockers Shoes
2018/11/13 全球购物
Eclipse面试题
2014/03/22 面试题
技能竞赛活动方案
2014/02/21 职场文书
医学专业毕业生求职信
2014/06/20 职场文书
SQL SERVER触发器详解
2022/02/24 SQL Server