pandas+openpyxl处理Excel

1. 读取多个 Excel 文件并合并

假设你有一个文件夹,里面包含多个 Excel 文件,你想将这些文件合并成一个 DataFrame。

import pandas as pd
import os
# 文件夹路径
folder_path = 'path/to/your/excel/files'
# 获取文件夹中的所有 Excel 文件
excel_files = [f for f in os.listdir(folder_path) if f.endswith('.xlsx') or f.endswith('.xls')]
# 创建一个空的 DataFrame 来存储所有数据
all_data = pd.DataFrame()
# 逐个读取每个 Excel 文件并将数据追加到 all_data 中
for file in excel_files:
    file_path = os.path.join(folder_path, file)
    df = pd.read_excel(file_path)
    all_data = pd.concat([all_data, df], ignore_index=True)
# 查看合并后的数据
print(all_data.head())
__

2. 批量处理多个 Excel 文件

假设你需要对多个 Excel 文件进行相同的处理(例如,添加一列、过滤数据等)。

import pandas as pd
import os
# 文件夹路径
folder_path = 'path/to/your/excel/files'
output_folder = 'path/to/output/folder'
# 确保输出文件夹存在
os.makedirs(output_folder, exist_ok=True)
# 获取文件夹中的所有 Excel 文件
excel_files = [f for f in os.listdir(folder_path) if f.endswith('.xlsx') or f.endswith('.xls')]
# 处理每个 Excel 文件
for file in excel_files:
    file_path = os.path.join(folder_path, file)
    df = pd.read_excel(file_path)
    # 添加一列
    df['New_Column'] = 'Some Value'
    # 过滤数据
    filtered_df = df[df['Some_Column'] > 100]
    # 保存处理后的数据
    output_file_path = os.path.join(output_folder, file)
    filtered_df.to_excel(output_file_path, index=False)
print("Processing complete.")
__

3. 从多个 Excel 文件中提取特定信息

假设你需要从多个 Excel 文件中提取特定的信息(例如,某个特定单元格的数据)。

import pandas as pd
import os
# 文件夹路径
fol
`pandas` 和 `openpyxl` 都是 Python 中用于处理 Excel 文件的强大库,但它们各有优缺点。`pandas` 是基于数据分析的库,而 `openpyxl` 主要专注于读写Excel文件,特别是xlsx/xlsm格式。 如果你需要高效地进行数据操作(如数据清洗、合并、分组等),`pandas` 可能会更合适,因为它设计为处理大型数据集并且优化了性能。然而,`openpyxl` 在处理大型或复杂的工作簿时可能更快,因为它不需要加载整个数据集到内存,而是按需读取和写入。 对于 WPS 的 Excel 文件,由于格式兼容性问题,通常情况下它们与标准的 `.xlsx` 或 `.xls` 格式略有差异。如果 WPS 工作簿与标准格式非常接近,`openpyxl` 应该能够处理。但如果存在不常见的格式或自定义功能,可能需要额外的适配才能确保正确解析。 至于速度方面,这取决于具体的数据量、工作负载以及文件的具体结构。为了测试它们在特定情况下的性能,你可以编写一段代码分别使用这两个库读取和处理一个小片段的 WPS Excel 文件,然后比较执行时间。例如: ```python import time import pandas as pd from openpyxl import load_workbook # 用法示例 start = time.time() df_pandas = pd.read_excel('wps_file.xlsx') end_pandas = time.time() start = time.time() wb = load_workbook(filename='wps_file.xlsx') sheet = wb.active data_openpyxl = [row for row in sheet.iter_rows()] end_openpyxl = time.time() print(f"Pandas execution time: {end_pandas - start} seconds") print(f"OpenPyXL execution time: {end_openpyxl - start} seconds") # 如果时间差显著,说明某一种库的速度更快 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值