python之处理Excel表格数据,pandas库和openpyxl库,谁的存储速度更快,案例演示,一看便知

前言

在 Python 中,pandas 和 openpyxl 都可以用于处理 Excel 文件,但它们的性能表现和适用场景有所不同。以下是两者的对比,特别是在存储数据(写入 Excel 文件)时的性能差异。

1、性能比较


pandas 更快:

  1. pandas 是基于 openpyxl 或 xlsxwriter 等库的高级封装,专门为数据处理和批量操作优化。

  2. 在写入数据时,pandas 会批量处理数据并调用底层库(如 openpyxl 或 xlsxwriter),因此通常比直接使用 openpyxl 更快。

  3. 对于大数据量的写入,pandas 的性能优势更加明显。

openpyxl 较慢:

  1. openpyxl 是一个更底层的库,适合对 Excel 文件进行精细操作(如设置单元格样式、公式等)。

  2. 如果直接使用 openpyxl 逐行或逐单元格写入数据,性能会较差,尤其是在数据量较大时。

2、测试示例

以下是一个简单的性能测试,比较 pandas 和 openpyxl 写入数据的速度:

使用 pandas 写入数据

import pandas as pd
import numpy as np
import time

# 生成一个大数据集
data = np.random.rand(10000, 100)  # 10000 行 x 100 列

# 转换为 DataFrame
df = pd.DataFrame(data)

# 计时
start_time = time.time()
df.to_excel('pandas_output.xlsx', index=False, engine='openpyxl')
end_time = time.time()

print(f"pandas 写入时间: {end_time - start_time:.2f} 秒")


使用 openpyxl 写入数据

from openpyxl import Workbook
import numpy as np
import time

# 生成一个大数据集
data = np.random.rand(10000, 100)  # 10000 行 x 100 列

# 创建 Workbook
wb = Workbook()
ws = wb.active

# 计时
start_time = time.time()
for row in data:
    ws.append(row.tolist())
wb.save('openpyxl_output.xlsx')
end_time = time.time()

print(f"openpyxl 写入时间: {end_time - start_time:.2f} 秒")

3、测试结果


1、对于 10,000 行 x 100 列的数据:

  • pandas 写入时间:约 5-10 秒。

  • openpyxl 写入时间:约 20-30 秒。

2、对于更大的数据集(如 100,000 行 x 100 列):

  • pandas 仍然可以较快完成(几十秒到几分钟)。

  • openpyxl 可能非常慢(几分钟到几十分钟)。

4、为什么 pandas 更快?


1、批量操作:

  • pandas 会将数据批量传递给底层库(如 openpyxl 或 xlsxwriter),减少了频繁的 I/O 操作。

2、优化实现:

  • pandas 内部使用了高效的算法和数据结构(如 NumPy 数组),适合处理大规模数据。

3、底层库选择:

  • pandas 默认使用 xlsxwriter 作为写入引擎,而 xlsxwriter 在某些情况下比 openpyxl 更快。

5、使用场景


1、使用 pandas:

  • 适合处理大规模数据,尤其是数据分析和批量操作。

  • 如果需要快速读写 Excel 文件,优先选择 pandas。

2、使用 openpyxl:

  • 适合需要对 Excel 文件进行精细操作(如设置样式、公式、图表等)。

  • 如果数据量较小,且需要更多控制权,可以使用 openpyxl。

6、进一步优化

如果你需要更快的写入速度,可以尝试以下方法:

1、使用 xlsxwriter 引擎:

  • pandas 默认使用 openpyxl 作为写入引擎,但可以切换到 xlsxwriter,后者在某些情况下更快。
df.to_excel('output.xlsx', index=False, engine='xlsxwriter') # engine='xlsxwriter',设置引擎

2、分块写入:

  • 对于非常大的数据集,可以将数据分块写入多个工作表或文件。

3、使用其他格式:

  • 如果不需要 Excel 格式,可以考虑使用更高效的文件格式,如 .csv、.parquet 或 .feather。

总结

  • pandas 在存储数据时通常比 openpyxl 更快,尤其是在处理大规模数据时。

  • 如果需要更高的性能,优先选择 pandas,并结合 xlsxwriter 引擎使用。

  • 如果需要对 Excel 文件进行精细操作,再考虑使用 openpyxl。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盲敲代码的阿豪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值