内容简介
在一些简单处理EXCEL表格工作,会遇到汇总大量EXCEL表格,并且将表格进行汇总整合到一个EXCEL表格中,尤其是在参加一些学科竞赛的过程中,像参加一些数模竞赛,需要大量的统计数据,那么以下代码就完全符合小伙伴们的需求。
相信大家在处理多个EXCEL表格,想将表格进行汇总的时候,如果手动去汇总的话,耗时,费力,假如汇总20个EXCEL表格,意味着要重复20遍Ctrl+C 和 Ctrl+v 最快也需要20分钟的时间才能完成任务 而使用下边这个代码不到1秒就可以完成工作 当然如果需要整合上千EXCEL文件,代码运行时间,自然也需要更长一点
下面这个代码适应于所有EXCEL表格的汇总工作
代码图
import pandas as pd
import os
combined_data = pd.DataFrame()
folder_path = 'get_list'
file_names = os.listdir(folder_path)
for file_name in file_names:
file_path = os.path.join(folder_path, file_name)
df = pd.read_excel(file_path)
combined_data = pd.concat([combined_data, df], ignore_index=True)
combined_data.to_excel('combined_data.xlsx', index=False)
以上就是汇总EXCEL表格的全部代码,代码内容非常的简短,这是我在处理工作的时候写出来的,当时需要整合500多个EXCEL文件,我感觉手动根本没有办法做,于是写了这个代码来与大家进行分享
如果对代码感兴趣的小伙伴,下面将为大家进行简单的讲解一下代码(纯小白都可以看懂)
代码讲解
一、第一部分
import pandas as pd
import os
首先是需要进行导入库,一共需要导入两个库,分别是pandas和os库(python常用的三大库:Numpy、pandas和Matplotlib)
pandas库
首先为小伙伴们讲解一下pandas库,pandas有的小伙伴会相成大熊猫,No No
在python语言中,pandas库数据分析中是非常常用的库,在数据预处理、缺失值填补、时间序列、可视化等方面都有应用。
有的小伙伴会有疑惑,在import pandas 后面为什么要加上 as pd 呢?
原因是在下边代码导入库的时候为了方面,一般使用pd 将6个字母简化成2个字母 没别的也只为了方便!
OS库
然后为小伙伴们讲解os库,os模块为多操作系统的访问提供了相关功能的支持,涉及对文件相关操作功能的实现,系统访问path路径的操作。
说白了这个os库就是,在代码中进行访问系统(windows、linux)中的文件,在这里也就是咱们需要处理的EXCEL文件。
二、第二部分
combined_data = pd.DataFrame()
这行代码创建了一个空的Pandas数据框combined_data
,用于后续存储合并的数据。
当然这个combined_data是一个文件名,可以进行随意的定义,没有特殊的含义
pd的话就是前边导入的pandas这个库,后面的DataFrame() 是pandas库中的函数
(注意:1、在python语言中,库与函数之间通过英文字符.间隔
2、所有的函数后边都需要加上英文的() 符号 )
三、第三部分
folder_path = 'get_list'
file_names = os.listdir(folder_path)
获取文件夹路径
folder_path = ‘get_list’
这一行代码中的 folder_path 定义的一个变量用来表示文件夹的路径(文件夹(文件夹名:get_list)就是那500个EXCEL文件的文件夹)
获取文件名称
file_names = os.listdir(folder_path)
os.listdir() 函数用于返回指定目录中的文件和目录的名称列表。
也就是说os库中的listdir()函数,是将get_list这个文件夹中的所有文件名,全部提取成列表的形式
解释:
(那为什么listdir()函数,括号中是folder_path呢? 是因为在获取文件夹路径时,也就是上一行代码中将这个文件夹名get_list赋值给变量folder_path了)
四、第四部分
这里就到了最核心的部分
for file_name in file_names:
file_path = os.path.join(folder_path, file_name)
df = pd.read_excel(file_path)
combined_data = pd.concat([combined_data, df], ignore_index=True)
废话不多说,直接说重点:
第一行代码:
用到了for循环 也就是最基础的 for i in range();
在这里file_name充当的是i 代表的是遍历的文件名称
file_names这个是在第三部分中写到的:所有的文件名列表
第二行代码:
这行代码使用了 os.path.join() 函数,它的作用是将多个路径组合成一个完整的文件路径。在这个例子中,folder_path 是文件夹的路径,file_name 是文件名(用到了第三部分中的两个变量名称),os.path.join(folder_path, file_name) 将这两部分路径连接起来,形成完整的文件路径file_path。这样做的好处是,它会根据操作系统的不同自动添加正确的路径分隔符(比如在Unix系统下是/
,在Windows系统下是\
),确保生成的路径在不同操作系统下都是有效的。
上边是比较专业的语言 上边的意思就是获取file_path文件路径 在第三部分,像文件名和文件夹路径,全部都铺垫好了 现在就开始使用for 循环进行一个调用 将这些文件一一进行调用
第三行代码:
pandas库中的 pd.read_excel()函数,用于从 Excel 文件中读取数据并创建一个 DataFrame 对象 df。
简单说就是read_excel()是pandas库的一个内置函数,这个函数的作用是提取EXCEL中的数据,然后将这个数据赋值给df变量。(那么这个df也是自己进行定义的一个变量名,但是这里尽量写成df,因为是和第二部分中的DataFrame相对应的,下面将会讲解是如何对应的)
第四行代码:
combined_data = pd.concat([combined_data, df], ignore_index=True)
pd.concat()这个函数用于将两个或多个 DataFrame 连接在一起,形成一个新的 DataFrame。
将现有的 combined_data DataFrame 和 df
DataFrame 沿着行的方向(垂直方向)连接起来,生成一个新的 DataFrame combined_data。
在第二部分的时候,combined_data这个变量表示的是单个空的DataFrame, pd.concat([combined_data, df]) 这一块代码就是将df与combined_data进行一个对应
参数 ignore_index=True 表示忽略连接时的索引,新生成的 DataFrame 将重新分配新的整数索引。 也就是说每一个EXCEL文件都有表头名,这里是将表头名进行删除的一个操作
直白来说,这一行代码不是在for循环里嘛,每次循环都会将新的文件数据加入到combined_data变量中去 不断的循环,里边的信息就会不断的进行增加(这里理解起来 稍微有点抽象,小白可以看着完整的代码自己静下来好好的思考一下)
五、第五部分
combined_data.to_excel('combined_data.xlsx', index=False)
这行代码使用了 DataFrame 对象的 to_excel() 方法,用于将 DataFrame 中的数据保存到 Excel 文件中。 因为combined_data这个是使用了DataFrame的数据储存方式进行储存的,因此使用to_excel() 方法进行EXCEL表格的保存