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

文章目录

  • 前言
  • 1、性能比较
  • 2、测试示例
  • 3、测试结果
  • 4、为什么 pandas 更快?
  • 5、使用场景
  • 6、进一步优化
  • 总结
  • 前言

    在 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。

  • 作者:盲敲代码的阿豪

    物联沃分享整理
    物联沃-IOTWORD物联网 » python之处理Excel表格数据,pandas库和openpyxl库,谁的存储速度更快,案例演示,一看便知

    发表回复