python进阶课python

python合并多个EXCEL表

2019-07-23  本文已影响1人  Xyxtank

一、背景

在日常工作中经常回用到数据分析与统计工作,而在实施数据分析之前,最为最要的就是数据的搜集、整理工作。这里介绍一下多个相同格式的excel合并的处理。如果在excel文件表比较少时,手工合并还可以应付,当几十个几百个甚至更多的表时,手工合并效率会非常低,于是让计算机自动合并处理,帮助我们完成工作就显得非常有必要。

二、同一文件夹下合并excel文件

比如,在“2019年集团大学生招聘”下有两个表格,想要实现的是将这两个表格数据合并。

各个表中的数据格式如下图:

import pandas as pd
import os

#文件路径
file_dir = r'C:\Users\Administrator\Desktop\2019年集团大学生招聘'
#构建新的表格名称
new_filename = file_dir + '\\new_file.xls'
#找到文件路径下的所有表格名称,返回列表
file_list = os.listdir(file_dir)
new_list = []

for file in file_list:
    #重构文件路径
    file_path = os.path.join(file_dir,file)
    #将excel转换成DataFrame
    dataframe = pd.read_excel(file_path)
    #保存到新列表中
    new_list.append(dataframe)

#多个DataFrame合并为一个
df = pd.concat(new_list)
#写入到一个新excel表中
df.to_excel(new_filename,index=False)

结果:

三、不同文件夹下合并excel表

有时候表格存放在文件夹下,现在需要将不同文件夹下的表格合并,此时需要对程序进行简单的修改。

文件目录结构如下:

2019年集团大学生招聘

  • ------公司A

    • ------A公司2019年度接收毕业生公示信息表
  • ------公司B

    • ------B公司2019年度接收毕业生公示信息表

在此之前需要先了解一下os模块中的walk方法:

import os

file_dir = r'C:\Users\Administrator\Desktop\2019年集团大学生招聘'
file_list = os.walk(file_dir)
for x,y,z in file_list: #x是文件路径,y是目录下的文件夹,z目录下的文件
    print('x是{}'.format(x))
    print('y是{}'.format(y))
    print('z是{}'.format(z))
    print('*'*50)

结果:

x是C:\Users\Administrator\Desktop\2019年集团大学生招聘
y是['这是第一个文件夹', '这是第二个文件夹']
z是['大渡河公司2019年度接收毕业生公示信息表.xlsx', '河南公司2019年度接收高校毕业生信息表\xa0.xls']
**************************************************
x是C:\Users\Administrator\Desktop\2019年集团大学生招聘\这是第一个文件夹
y是['新建文件夹']
z是[]
**************************************************
x是C:\Users\Administrator\Desktop\2019年集团大学生招聘\这是第一个文件夹\新建文件夹
y是[]
z是[]
**************************************************
x是C:\Users\Administrator\Desktop\2019年集团大学生招聘\这是第二个文件夹
y是[]
z是[]
**************************************************

注意:os.walk()方法,它可以查询到目录下不同文件夹中的文件。其中,x代表的是文件路径,y代表的是目录下的文件夹,z代表的是目录下的文件。

import pandas as pd
import os

#文件路径
file_dir = r'C:\Users\Administrator\Desktop\2019年集团大学生招聘'
#构建新的表格名称
new_filename = file_dir + '\\new_file.xls'
#找到文件路径下的所有表格名称
file_list = os.walk(file_dir)
new_list = []

for dir_path,dirs,files in file_list:
    for file in files:
        #重构文件路径
        file_path = os.path.join(dir_path,file)
        #将excel转换成DataFrame
        df = pd.read_excel(file_path)
        new_list.append(df)

#多个DataFrame合并为一个
df = pd.concat(new_list)
#写入到一个新excel表中
df.to_excel(new_filename,index=False)

结果:

最后,需要注意,以上只是一个简单的程序,对于数据量不是很大的场景,可以放心使用。但当数据量非常大时,程序还需要进一步优化,因为程序是将所有的数据保存在一个列表中,最后再一次性写入excel表中,这里需要考虑excel版本是否支持大数据量的写入,另外,也要考虑程序资源消耗的问题,内存可能不足。

上一篇下一篇

猜你喜欢

热点阅读