Python技术迷

Python实现Excel拆分与合并

嗨,大家好,我是虎哥。

今天我们来聊聊在数据处理和分析中,经常会遇到的一个问题:如何使用Python对Excel文件进行拆分与合并。Excel文件在日常工作中是一个常见的数据存储形式,而当数据量变大时,如何高效地管理这些数据就显得尤为重要。

准备工作

在开始之前,我们需要安装几个必要的Python库。这些库可以帮助我们轻松读写和处理Excel文件。我们需要:

  • pandas:用于数据处理和分析的强大工具。

  • openpyxl:用于读取和写入Excel文件的库。

可以通过以下命令安装这些库:

pip install pandas openpyxl

安装好库之后,我们就可以开始拆分和合并Excel文件了。

使用Python拆分Excel文件

拆分单个工作表

假设你有一个包含大量数据的Excel文件,希望将其拆分为多个较小的文件。以下是一个示例代码,展示如何按行拆分单个工作表:

import pandas as pd
def split_excel_by_rows(file_path, rows_per_file, output_prefix): # 读取Excel文件 df = pd.read_excel(file_path) # 计算总行数 total_rows = len(df) # 计算需要拆分的文件数量 num_files = (total_rows // rows_per_file) + (1 if total_rows % rows_per_file != 0 else 0) for i in range(num_files): start_row = i * rows_per_file end_row = (i + 1) * rows_per_file split_df = df.iloc[start_row:end_row] # 保存拆分后的文件 output_file = f"{output_prefix}_{i+1}.xlsx" split_df.to_excel(output_file, index=False) print(f"文件 {output_file} 已保存")
# 示例使用split_excel_by_rows('data.xlsx', 100, 'split_data')

在这段代码中,我们首先读取了指定的Excel文件,然后计算需要拆分的文件数量,最后按指定的行数进行拆分并保存到新的Excel文件中。每个文件的命名规则为“split_data_1.xlsx”、“split_data_2.xlsx”等等。

拆分多个工作表

如果你的Excel文件中包含多个工作表,想要按工作表拆分,可以使用以下代码:

import pandas as pd
def split_excel_by_sheets(file_path, output_prefix): # 读取Excel文件 xls = pd.ExcelFile(file_path) for sheet_name in xls.sheet_names: df = pd.read_excel(file_path, sheet_name=sheet_name) output_file = f"{output_prefix}_{sheet_name}.xlsx" df.to_excel(output_file, index=False) print(f"工作表 {sheet_name} 已拆分为文件 {output_file}")
# 示例使用split_excel_by_sheets('data_with_sheets.xlsx', 'split_data')

这段代码将遍历Excel文件中的所有工作表,并将每个工作表保存为一个独立的Excel文件。

使用Python合并Excel文件

合并多个工作表到一个文件

有时,你需要将多个Excel文件合并为一个文件中的多个工作表。以下是示例代码:

import pandas as pd
def merge_excels_to_sheets(file_list, output_file): with pd.ExcelWriter(output_file) as writer: for file in file_list: df = pd.read_excel(file) sheet_name = file.split('.')[0] # 使用文件名作为工作表名 df.to_excel(writer, sheet_name=sheet_name, index=False) print(f"文件 {file} 已合并到 {output_file} 的工作表 {sheet_name}")
# 示例使用files_to_merge = ['data1.xlsx', 'data2.xlsx', 'data3.xlsx']merge_excels_to_sheets(files_to_merge, 'merged_data.xlsx')

在这个示例中,我们创建了一个新的Excel文件,并将每个输入文件的数据写入不同的工作表中。这样,合并后的文件便于管理和查看。

合并多个文件到一个工作表

另一种常见的需求是将多个Excel文件的数据合并到一个文件的同一个工作表中。可以使用以下代码:

import pandas as pd
def merge_excels_to_one_sheet(file_list, output_file): merged_df = pd.DataFrame() for file in file_list: df = pd.read_excel(file) merged_df = pd.concat([merged_df, df], ignore_index=True) print(f"文件 {file} 的数据已合并") merged_df.to_excel(output_file, index=False) print(f"所有文件已合并到 {output_file}")
# 示例使用files_to_merge = ['data1.xlsx', 'data2.xlsx', 'data3.xlsx']merge_excels_to_one_sheet(files_to_merge, 'merged_data.xlsx')

这里我们首先创建一个空的DataFrame,然后将每个文件的数据依次合并到这个DataFrame中,最后再将合并后的数据保存到一个新的Excel文件中。

综合示例:拆分并合并Excel文件

假设你需要先将一个大Excel文件拆分为多个小文件,然后再将这些小文件合并成一个新的文件。完整的代码如下:

import pandas as pd
def split_excel_by_rows(file_path, rows_per_file, output_prefix): df = pd.read_excel(file_path) total_rows = len(df) num_files = (total_rows // rows_per_file) + (1 if total_rows % rows_per_file != 0 else 0) for i in range(num_files): start_row = i * rows_per_file end_row = (i + 1) * rows_per_file split_df = df.iloc[start_row:end_row] output_file = f"{output_prefix}_{i+1}.xlsx" split_df.to_excel(output_file, index=False) print(f"文件 {output_file} 已保存")
def merge_excels_to_one_sheet(file_list, output_file): merged_df = pd.DataFrame() for file in file_list: df = pd.read_excel(file) merged_df = pd.concat([merged_df, df], ignore_index=True) print(f"文件 {file} 的数据已合并") merged_df.to_excel(output_file, index=False) print(f"所有文件已合并到 {output_file}")
# 示例使用# 拆分大文件split_excel_by_rows('data.xlsx', 100, 'split_data')
# 假设我们已经将文件拆分成了多个文件split_files = ['split_data_1.xlsx', 'split_data_2.xlsx', 'split_data_3.xlsx']
# 合并拆分后的文件merge_excels_to_one_sheet(split_files, 'final_merged_data.xlsx')

通过以上示例,我们详细介绍了如何使用Python实现Excel文件的拆分与合并操作。利用pandas和openpyxl库,我们可以快速地读取、处理和保存Excel文件。无论是按行拆分、按工作表拆分,还是将多个文件合并到一个文件中,Python都能为我们提供强大的支持。

这项技能无疑可以帮助你在工作中提高效率,简化数据处理流程。如果你觉得本文对你有帮助,欢迎点赞、分享和留言,这将激励我继续为大家带来更多优质内容!希望大家在实际应用中能够得心应手,享受数据处理的乐趣!

目前,对编程、职场感兴趣的同学,大家可以联系我微信:golang404,拉你进入“程序员交流群”。

🔥虎哥私藏精品 热门推荐🔥

虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》。

资料包含了《IDEA视频教程》、《最全python面试题库》、《最全项目实战源码及视频》及《毕业设计系统源码》,总量高达650GB。全部免费领取!全面满足各个阶段程序员的学习需求。