离下班还有五分钟,QQ突然来消息: 我怀着激动,紧张,忐忑的心情解压了一个名为“全国空气质量”神秘压缩包! !!! 2016年至今中国所有城市空气质量数据!
而我!要把这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') 友情提示:运行前请先保存好所有需要的文件 然后…我终于可以回家了! |
|