Python 实现 Excel 批处理:高效数据处理之道
在数据处理工作中,常常需要对大量 Excel 文件执行相同操作,比如数据提取、格式调整、汇总统计等。手动逐个处理不仅耗时费力,还容易出错。借助 Python 的强大功能,我们可以轻松实现 Excel 批处理,大幅提升工作效率。下面将详细介绍如何使用 Python 完成常见的 Excel 批处理任务。
一、准备工作
在开始之前,需要安装两个重要的库:pandas 和 openpyxl。pandas 是数据处理与分析的利器,openpyxl 则用于对 Excel 文件进行底层操作。可以使用 pip 进行安装:
bash
pip install pandas openpyxl
二、数据读取与合并
假设我们有多个 Excel 文件,每个文件都包含一个名为 “Sheet1” 的工作表,且结构相同,现在要将这些文件的数据合并到一个新的 Excel 文件中。
python
import os
import pandas as pd
def batch_merge_excel():
folder_path = 'your_folder_path'
output_path = 'output_file.xlsx'
all_data = []
for file in os.listdir(folder_path):
if file.endswith('.xlsx'):
file_path = os.path.join(folder_path, file)
df = pd.read_excel(file_path, sheet_name='Sheet1')
all_data.append(df)
combined_df = pd.concat(all_data, ignore_index=True)
combined_df.to_excel(output_path, index=False)
if __name__ == '__main__':
batch_merge_excel()
在上述代码中:
- 首先定义了存放 Excel 文件的文件夹路径 folder_path 和输出文件路径 output_path。
- 通过 os.listdir() 遍历文件夹中的所有文件,使用 pd.read_excel() 读取每个 Excel 文件的 “Sheet1” 工作表数据。
- 将读取的数据存储在列表 all_data 中,最后使用 pd.concat() 函数将所有数据合并成一个 DataFrame,并通过 to_excel() 方法将合并后的数据保存到新的 Excel 文件中,index=False 表示不保存索引。
三、数据提取与处理
若要从多个 Excel 文件中提取特定列的数据,并进行简单的数据处理,例如计算某列数据的平均值。
python
import os
import pandas as pd
def batch_extract_and_process():
folder_path = 'your_folder_path'
output_path = 'output_file.xlsx'
result_data = []
for file in os.listdir(folder_path):
if file.endswith('.xlsx'):
file_path = os.path.join(folder_path, file)
df = pd.read_excel(file_path, sheet_name='Sheet1')
target_column = df['TargetColumn']
average_value = target_column.mean()
result_data.append({'FileName': file, 'Average': average_value})
result_df = pd.DataFrame(result_data)
result_df.to_excel(output_path, index=False)
if __name__ == '__main__':
batch_extract_and_process()
此代码的步骤如下:
- 同样先指定文件夹路径和输出路径。
- 遍历文件夹中的 Excel 文件,读取 “Sheet1” 工作表,并提取名为 “TargetColumn” 的列数据。
- 计算该列数据的平均值,并将文件名和平均值存储在 result_data 列表中。
- 最后将 result_data 转换为 DataFrame 并保存为 Excel 文件。
四、格式调整与写入
使用 openpyxl 库可以对 Excel 文件进行格式调整,如设置字体、颜色、对齐方式等。以下示例展示了如何将多个 Excel 文件中某列的数据复制到新文件,并设置目标列的字体为加粗。
python
import os
from openpyxl import Workbook, load_workbook
from openpyxl.styles import Font
def batch_copy_and_format():
folder_path = 'your_folder_path'
output_path = 'output_file.xlsx'
wb = Workbook()
ws = wb.active
for file in os.listdir(folder_path):
if file.endswith('.xlsx'):
file_path = os.path.join(folder_path, file)
source_wb = load_workbook(file_path)
source_ws = source_wb['Sheet1']
for cell in source_ws['A']:
new_cell = ws.cell(row=ws.max_row + 1, column=1, value=cell.value)
new_cell.font = Font(bold=True)
source_wb.close()
wb.save(output_path)
if __name__ == '__main__':
batch_copy_and_format()
代码实现过程如下:
- 设定文件夹路径和输出路径,创建一个新的工作簿和工作表。
- 遍历文件夹中的 Excel 文件,加载每个文件的 “Sheet1” 工作表。
- 将源工作表中 A 列的数据逐个复制到新工作表,并为新单元格设置加粗字体。
- 完成所有文件处理后,保存新的 Excel 文件。
通过 Python 实现 Excel 批处理,能够自动化完成复杂的数据处理任务,减少人工操作的误差,显著提高工作效率。无论是简单的数据合并,还是复杂的数据处理与格式调整,Python 都提供了丰富的工具和方法来满足需求。在实际应用中,可以根据具体场景灵活调整代码,实现个性化的批处理功能。