Python 汇总 Excel 教程
使用 Python 快速处理多个 Excel 文件,提高工作效率
一、安装必要的库
在开始之前,需要安装 pandas 和 openpyxl 库。pandas 是 Python 中最强大的数据处理库,openpyxl 用于读写 Excel 文件。
# 使用 pip 安装
pip install pandas openpyxl
# 或者使用 conda 安装
conda install pandas openpyxl二、读取单个 Excel 文件
使用 pandas 的 read_excel() 函数可以轻松读取 Excel 文件。
import pandas as pd
# 读取 Excel 文件
df = pd.read_excel('data.xlsx')
# 读取指定工作表
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
# 读取前几行数据
print(df.head())三、汇总多个 Excel 文件
当需要汇总多个相同格式的 Excel 文件时,可以使用循环读取并合并。
import pandas as pd
import os
from pathlib import Path
# 方法一:使用列表存储后合并
data_frames = []
folder_path = './excel_files' # Excel 文件所在文件夹
for file in os.listdir(folder_path):
if file.endswith('.xlsx') or file.endswith('.xls'):
file_path = os.path.join(folder_path, file)
df = pd.read_excel(file_path)
data_frames.append(df)
# 合并所有数据
combined_df = pd.concat(data_frames, ignore_index=True)
# 方法二:使用 glob 模块(更简洁)
from glob import glob
excel_files = glob('./excel_files/*.xlsx')
data_frames = [pd.read_excel(file) for file in excel_files]
combined_df = pd.concat(data_frames, ignore_index=True)四、合并多个工作表
如果一个 Excel 文件包含多个工作表,需要将它们合并在一起。
import pandas as pd
# 读取 Excel 文件的所有工作表
excel_file = pd.ExcelFile('data.xlsx')
# 方法一:读取所有工作表并合并
all_sheets = []
for sheet_name in excel_file.sheet_names:
df = pd.read_excel(excel_file, sheet_name=sheet_name)
all_sheets.append(df)
combined_df = pd.concat(all_sheets, ignore_index=True)
# 方法二:使用字典一次性读取所有工作表
all_sheets_dict = pd.read_excel('data.xlsx', sheet_name=None)
combined_df = pd.concat(all_sheets_dict.values(), ignore_index=True)五、分组汇总数据
使用 groupby() 函数可以对数据进行分组统计。
import pandas as pd
# 假设数据包含 '部门' 和 '销售额' 列
# 按部门分组并计算总销售额
summary = df.groupby('部门')['销售额'].sum()
# 多列分组汇总
summary = df.groupby(['部门', '月份']).agg({
'销售额': 'sum',
'订单数': 'count',
'平均金额': 'mean'
}).reset_index()
# 更复杂的汇总统计
summary = df.groupby('部门').agg({
'销售额': ['sum', 'mean', 'max', 'min'],
'订单数': 'count'
})六、导出汇总结果
处理完数据后,可以将结果导出为 Excel 文件。
import pandas as pd
# 导出为 Excel 文件
combined_df.to_excel('汇总结果.xlsx', index=False)
# 导出到多个工作表
with pd.ExcelWriter('汇总结果.xlsx') as writer:
combined_df.to_excel(writer, sheet_name='合并数据', index=False)
summary.to_excel(writer, sheet_name='汇总统计', index=False)
# 导出为 CSV 文件(可选)
combined_df.to_csv('汇总结果.csv', index=False, encoding='utf-8-sig')完整示例代码
以下是一个完整的示例,演示如何汇总多个 Excel 文件并进行统计分析。
import pandas as pd
import os
from glob import glob
def merge_excel_files(folder_path, output_file='汇总结果.xlsx'):
"""
汇总指定文件夹中的所有 Excel 文件
参数:
folder_path: Excel 文件所在文件夹路径
output_file: 输出文件名
"""
# 获取所有 Excel 文件
excel_files = glob(os.path.join(folder_path, '*.xlsx'))
if not excel_files:
print('未找到 Excel 文件')
return
# 读取所有文件
data_frames = []
for file in excel_files:
try:
df = pd.read_excel(file)
data_frames.append(df)
print(f'已读取: {os.path.basename(file)}')
except Exception as e:
print(f'读取文件 {file} 时出错: {e}')
if not data_frames:
print('没有成功读取任何文件')
return
# 合并数据
combined_df = pd.concat(data_frames, ignore_index=True)
# 保存结果
combined_df.to_excel(output_file, index=False)
print(f'汇总完成!共 {len(combined_df)} 行数据,已保存到 {output_file}')
return combined_df
# 使用示例
if __name__ == '__main__':
# 汇总当前目录下的所有 Excel 文件
result = merge_excel_files('./excel_files', '汇总结果.xlsx')
# 如果需要分组汇总
if result is not None:
summary = result.groupby('部门')['销售额'].sum()
print('\n分组汇总结果:')
print(summary)注意事项
- 确保所有 Excel 文件的列结构相同,否则合并时可能出现问题
- 如果文件较大,建议分批处理以避免内存不足
- 处理前建议备份原始文件
- 注意处理 Excel 文件中的空值和格式问题
- 使用
encoding='utf-8-sig'导出 CSV 可以避免中文乱码
蒙ICP备2023000685号