如何用150秒完成1000个Excel表格的合并

本文为数据团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")

友情提示:运行前请先保存好所有需要的文件

然后…我终于可以回家了!

关注“数据团学社”

即可免费获取文中数据防加班神器!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180710G07EIX00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券