python之处理Excel表格数据,pandas库和openpyxl库,谁的存储速度更快,案例演示,一看便知
文章目录
前言
在 Python 中,pandas 和 openpyxl 都可以用于处理 Excel 文件,但它们的性能表现和适用场景有所不同。以下是两者的对比,特别是在存储数据(写入 Excel 文件)时的性能差异。
1、性能比较
pandas 更快:
-
pandas 是基于 openpyxl 或 xlsxwriter 等库的高级封装,专门为数据处理和批量操作优化。
-
在写入数据时,pandas 会批量处理数据并调用底层库(如 openpyxl 或 xlsxwriter),因此通常比直接使用 openpyxl 更快。
-
对于大数据量的写入,pandas 的性能优势更加明显。
openpyxl 较慢:
-
openpyxl 是一个更底层的库,适合对 Excel 文件进行精细操作(如设置单元格样式、公式等)。
-
如果直接使用 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、批量操作:
2、优化实现:
3、底层库选择:
5、使用场景
1、使用 pandas:
适合处理大规模数据,尤其是数据分析和批量操作。
如果需要快速读写 Excel 文件,优先选择 pandas。
2、使用 openpyxl:
适合需要对 Excel 文件进行精细操作(如设置样式、公式、图表等)。
如果数据量较小,且需要更多控制权,可以使用 openpyxl。
6、进一步优化
如果你需要更快的写入速度,可以尝试以下方法:
1、使用 xlsxwriter 引擎:
df.to_excel('output.xlsx', index=False, engine='xlsxwriter') # engine='xlsxwriter',设置引擎
2、分块写入:
3、使用其他格式:
总结
pandas 在存储数据时通常比 openpyxl 更快,尤其是在处理大规模数据时。
如果需要更高的性能,优先选择 pandas,并结合 xlsxwriter 引擎使用。
如果需要对 Excel 文件进行精细操作,再考虑使用 openpyxl。
作者:盲敲代码的阿豪