1. 背景
实际操作中,往往会处理一些相同格式的Excel表格数据,比如某商家都是按照每月进行产品A和B的数据的统计,有时为了季度或者年度数据的处理,就需要将多个Excel中的表格数据汇总到一起(不是覆盖),并且表格的标题还不变,也就产生了题目的要求,方便之后的数据处理
假设表格中内容如下:(标题相同,但是数据不同,以第一个文件中数据为例)
2. 代码编写
主要是使用到了pandas
里面的concat
方法,先给出全部代码,然后进行解析
import os
os.chdir(r'C:\Users\86177\Desktop\demo')
import glob
import pandas as pd
paths = glob.glob('*.xlsx')
print(paths,'\n')
print('------------\n')
df = pd.DataFrame()
for path in paths:
df_ = pd.read_excel(path)
df = pd.concat([df,df_])
print(len(df))
df.to_excel('data.xlsx',index = False)
3. 代码解析
1)设置代码的运行路径,这个属于自己的编程习惯,每次运行代码之前会把路径设定在要操作的文件夹所对应的路径,方便对于该文件夹下数据的获取,比如这里就是设定在桌面的demo
文件夹下
import os
os.chdir(r'C:\Users\86177\Desktop\demo')
2) 导入glob
库是为了选取示例文件夹中所有的Excel
文件(格式都是相同的),只需要将名称用*
号代替,保留后缀名即可,*
号前面的内容就是测试文件夹的路径,然后返回的是一个列表,包含了所有Excel
文件的名称
import glob
paths = glob.glob(r'*.xlsx')
print(paths)
–> 输出结果为:
['data01.xlsx', 'data02.xlsx', 'data03.xlsx']
2) 创建一个空的DataFrame
数据,因为pd.concat
方法的使用是需要有一个基础的或者已有的DataFrame
数据作为参考的,既然在读取第一份Excel
表格前没有参照,就可以创建一个空的数据进行数据合并,合并之后的结果就是导入的第一份Excel
表格中的内容
df = pd.DataFrame()
3)一次遍历paths中的数据,也就是文件的名称,同时由于系统运行设置的路径已经是在该文件夹里,所以文件名称也是要读取文件的路径了,接着就可以将数据逐次进行合并了,df会由一个空的数据,变成三个表格数据汇总后的总数据
for path in paths:
df_ = pd.read_excel(path)
df = pd.concat([df,df_])
4)最后将数据保存到本地,可以顺带输入一下汇总后的总长度,用来验证(这里的数值并不是真正意义上的每个月,只是用来做演示,将每个Excel
中的数据都配置为30个,所以汇总后是90个)
print(len(df))
df.to_excel('data.xlsx',index = False)
5) 输出结果为: