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实现的生成随机迷宫算法核心代码分享(含游戏完整代码)
Jul 11 Python
跟老齐学Python之Python文档
Oct 10 Python
使用Python设置tmpfs来加速项目的教程
Apr 17 Python
Django返回json数据用法示例
Sep 18 Python
Python 详解基本语法_函数_返回值
Jan 22 Python
python导入pandas具体步骤方法
Jun 23 Python
Django实现发送邮件功能
Jul 18 Python
Flask框架学习笔记之表单基础介绍与表单提交方式
Aug 12 Python
Python post请求实现代码实例
Feb 28 Python
解决pytorch 保存模型遇到的问题
Mar 03 Python
详解Python+OpenCV绘制灰度直方图
Mar 22 Python
python创建字典及相关管理操作
Apr 13 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+javascript液晶时钟
2006/10/09 PHP
php如何解决无法上传大于8M的文件问题
2014/03/10 PHP
thinkphp框架page类与bootstrap分页(美化)
2017/06/25 PHP
tp5递归 无限级分类详解
2019/10/18 PHP
JavaScript 版本自动生成文章摘要
2008/07/23 Javascript
Jquery uploadify图片上传插件无法上传的解决方法
2013/12/16 Javascript
不使用jquery实现js打字效果示例分享
2014/01/19 Javascript
简介JavaScript中toUpperCase()方法的使用
2015/06/06 Javascript
最基础的vue.js双向绑定操作
2017/08/23 Javascript
JavaScript面向对象精要(上部)
2017/09/12 Javascript
详解vue-cli项目中用json-sever搭建mock服务器
2017/11/02 Javascript
vue-cli与webpack处理静态资源的方法及webpack打包的坑
2018/05/15 Javascript
Nuxt项目支持eslint+pritter+typescript的实现
2019/05/20 Javascript
简单谈谈javascript高级特性
2019/09/04 Javascript
JavaScript 链表定义与使用方法示例
2020/04/28 Javascript
Python3自动签到 定时任务 判断节假日的实例
2018/11/13 Python
python 获取url中的参数列表实例
2018/12/18 Python
python实现大转盘抽奖效果
2019/01/22 Python
Python实现SQL注入检测插件实例代码
2019/02/02 Python
python使用pymongo操作mongo的完整步骤
2019/04/13 Python
利用python和百度地图API实现数据地图标注的方法
2019/05/13 Python
Python shelve模块实现解析
2019/08/28 Python
python [:3] 实现提取数组中的数
2019/11/27 Python
Windows下python3安装tkinter的问题及解决方法
2020/01/06 Python
Python终端输出彩色字符方法详解
2020/02/11 Python
解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题
2020/04/20 Python
django 解决model中类写不到数据库中,数据库无此字段的问题
2020/05/20 Python
在 Windows 下搭建高效的 django 开发环境的详细教程
2020/07/27 Python
Jupyter Notebook 安装配置与使用详解
2021/01/06 Python
爱情检讨书大全
2014/01/21 职场文书
2014年3.15团委活动总结
2014/03/16 职场文书
《孔繁森》教学反思
2014/04/17 职场文书
学生会感恩节活动方案
2014/10/11 职场文书
生产现场禁烟通知
2015/04/23 职场文书
复活读书笔记
2015/06/29 职场文书
班委竞选稿范文
2015/11/21 职场文书