本文为数据团Python课程学员作品
本文约1500字,阅读需要5分钟
关键词:Excel表格 批量合并 Python
离下班还有五分钟,QQ突然来消息:
我怀着激动,紧张,忐忑的心情解压了一个名为“全国空气质量”神秘压缩包!
!!!
2016年至今中国所有城市空气质量数据!
共有912个CSV表格。
每个表格共370列,约360行不等,列名相同。
而我!要把这912个表格合并成一张表格!!!
三个方案瞬间浮现在我眼前:
1、Ctrl C + Ctrl V——可以睡公司了;
2、Excel Power Query,估计等电脑卡崩了,还得用回方案一;
3、敲代码!俗话说,没有什么是一行代码解决不了的,如果有,就再敲一行。
工欲善其事,必先利其器,我果断祭出了两件敲码神器!
Python是一种,嗯…总之很厉害的编程语言,它能够做网站,做软件,做网络爬虫,做数据分析,做人工智能,做游戏和完成老板布置的工作。
Jupyter Notebook 是一本可以写代码的…草稿本,你可以大胆地在上面随意涂鸦。你可以写Julia, Python, Erlang, R等(jupyter),当然还可以用来完成老板布置的工作。
神器在手,我立刻开始思考代码。
首先,我把这个问题分解成四个小目标:
01
查找到工作表所在文件位置
02
提取表格
03
合并表格
04
导出
01
查找文件位置
首先我们导入python的os模块:import os
os模块:
os 模块提供了非常丰富的方法用来处理文件和目录。
使用os模块的walk方法输出指定目录的文件
for file in os.walk('H:/Document/神秘文件'):
print(file)
os.walk() 方法:
os.walk() 方法用于通过在文件目录树中游走输出在目录中的文件名。
我使用for循环遍历‘H:/Document/全国空气质量汇总’,这个文件目录,得到一个(),这是“元组”(姑且理解为一个盛放东西的容器)。里面用两个逗号分成三部分:
1)第一部分就是我输入的文件夹目录。
2)第二部分是个空列表,不去管它。
3)第三部分也是一个列表,里面是我要提取的每个工作表。
第一个小目标达成:
02
提取表格
首先,我需要知道工作表的文件路径,这很简单!完整的路径就是文件夹目录+工作表名称。
如图——
然后,我定义一个列表,嗯…这也是个容器,容纳提取的912个文件。
l = []
接着,我导入pandas包,用read_csv()方法来提取工作表。
Pandas包:
一款提取,清洗,处理数据的神器。
容器:
Python中有四种容器,列表;元组;字典;集合。功能和用法不同。
Pandas.read_csv()方法:
Pandas用来提取csv文件的方法。
最后,写好循环,把提取的文件装进列表中。
别忘了设置一个计数,用来运行时显示进度。
第二个小目标达成:
03
合并表格
这里我们用到了pandas的concat方法。
pandas.concat()
pandas.concat()方法:
用于拼接多份数据的方法。
合并刚才列表‘l’中的所有工作表到data_result这个变量中。
第三个小目标达成:
04
导出表格
同样,解决问题的方法也来自于pandas这款神器。
pandas.DataFrame.to_csv()方法
pandas.DataFrame.to_csv()方法:
用于导出Dataframe数据为csv格式的方法。
类似的方法还有pandas.DataFrame.to_excel()等。
其实,pandas可以保存数据为许多种格式,这里我还是选择了最常用的csv格式。
这里括号内首先填写保存的数据路径和名称,其次,别忘了设置index=0的参数,否则数据会多出一列索引列。啊?听不明白?动手试一试就明白了。
第四个小目标达成:
让我们回顾一下代码全貌:
代码不长,一共20行。
其中用橙色框选出的是代码核心部分,一共9行,这是实现工作表合并最基本的代码。
主要的工作思路是找到工作表所在的文件夹,提取其中每个工作表,合并它们,然后导出数据。(四个小目标)
代码虽少,复用性却很强,以后碰到类似的工作任务,我们只需要更改数据所在文件夹和导出数据的两个路径即可。
好了,运行代码!
见证奇迹的时刻到了!
合并912个工作表仅仅只要150秒!
厉!不!厉!害!
然而,正当我准备下班的时候…老板又戳我了!
这就可以难倒我吗?不存在的!是时候拿出真正的利器了!
防加班神器——Excel工作表合并工具
纯python开发,应用场景包括单工作簿多工作表、多工作簿多工作表、多文件夹多工作簿的合并。并且可以处理同时含以上三种情况的综合问题!
看图!
敲一敲回车,从此远离加班!
import os
os.system("shutdown-s -t 0")
友情提示:运行前请先保存好所有需要的文件
然后…我终于可以回家了!
关注“数据团学社”
即可免费获取文中数据和防加班神器!
领取专属 10元无门槛券
私享最新 技术干货