将文件夹内多个子文件里的Excel数据合并到一个文件,保存为CSV格式
使用条件:
Excel文件必须是xlsx格式,且数据结构一致,方可用以下代码。
# 第一步 导入模块
import pandas as pd
import os
# pandas是python中数据分析最主要的模块
# os是实现实现办公自动化最为主要库之一
# 第二步 读取数据
# 设置合并所有的文件路径
path_dir = r'E:\e企简税\简税产品数据\2020年\简税数据\简税登录数据\2020登录\下半年\第4季度'
save_path = r"E:\呼叫中心数据反馈\高活跃高票量用户"
# r即是raw单词的所有,可以告诉python其中d额斜杠\不是转移字符,否则,只能
# 能写为双斜杠,即“E:\\9_培训资料\\1_办公自动化\\1_合并多个工作簿”才能被
# 识别为有效路径
# 为了做到心里面有数,可以新建一专门用来存放文件名称的列表
filename = []
# 建立专门用来存在数据框的列表
data_source = []
# 利用os模块中的os.walk()函数来对文件/文件夹/路径进行读取
# root表示该文件所在的路径
# dirs表示该文件下的子文件夹
# files表示文件夹下面所有文件
for root, dirs, files in os.walk(path_dir):
print(root, '\n', dirs, '\n', files, '\n')
# 其中,\n代表换行,也就是三个列印出来的数据换行显示
# 结果
# E:\9_培训资料\1_办公自动化\1_合并多个工作簿 --- root
# [] --- dirs 表示没有子文件夹
# ['全国成人高等学校名录1.xlsx', '全国成人高等学校名录2.xlsx', '全国成人高等学校名录3.xlsx'] ----文件
print('开始对文件夹Excel逐个提取...')
for root, dirs, files in os.walk(path_dir):
# print(root, '\n', dirs, '\n', files, '\n')
# 对获取的文件进行逐个提取,并加入文件列表中
# 使用for循环进行处理
for file in files:
# 列印出每个完整路径下的文件名
# os.path.join()函数将路径和文件名结合到一起
# E:\9_培训资料\1_办公自动化\1_合并多个工作簿\全国成人高等学校名录1.xlsx
print(os.path.join(root, file))
# 将文件名存入到列表中
filename.append(os.path.join(root, file))
# 读取excel数据并转换成DataFrame形式
df = pd.read_excel(os.path.join(root, file))
# 将二维数组的数据存入到列表中,以便后续进行转化
data_source.append(df)
# 为了以防万一,我们可以打印文件名列表,看下是否都已经将所需数据合并
merge_result = pd.concat(data_source,ignore_index=True)
print(merge_result)
print('合并完成!!')
merge_result.to_csv(os.path.join(save_path,'简税近3月登录合并明细201229.csv'), index = False)
print('保存完毕!!')