美文网首页python进阶课python
python合并多个EXCEL表

python合并多个EXCEL表

作者: Xyxtank | 来源:发表于2019-07-23 10:31 被阅读1次

    一、背景

    在日常工作中经常回用到数据分析与统计工作,而在实施数据分析之前,最为最要的就是数据的搜集、整理工作。这里介绍一下多个相同格式的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版本是否支持大数据量的写入,另外,也要考虑程序资源消耗的问题,内存可能不足。

    相关文章

      网友评论

        本文标题:python合并多个EXCEL表

        本文链接:https://www.haomeiwen.com/subject/cwwwlctx.html