【问题标题】:Performance difference in pandas read_table vs. read_csv vs. from_csv vs. read_excel?pandas read_table vs. read_csv vs. from_csv vs. read_excel的性能差异?
【发布时间】:2015-09-30 11:45:30
【问题描述】:

我倾向于将 .csv 文件导入 pandas,但有时我可能会获取其他格式的数据来制作 DataFrame 对象。

今天,我刚刚发现 read_table 作为其他格式的“通用”导入器,想知道 pandas 中读取 .csv 文件的各种方法之间是否存在显着的性能差异,例如read_table, from_csv, read_excel.

  1. 这些其他方法的性能是否比read_csv 更好?
  2. read_csvfrom_csv 创建 DataFrame 有很大不同吗?

【问题讨论】:

    标签: python performance csv pandas dataframe


    【解决方案1】:

    我发现 CSV 和制表符分隔文本 (.txt) 在读写速度上相当,都比读写 MS Excel 文件快得多。但是,Excel 格式压缩了很多文件大小。


    对于相同的 320 MB CSV 文件 (16 MB .xlsx) (i7-7700k,SSD,运行 Anaconda Python 3.5.3,Pandas 0.19.2)

    使用标准约定import pandas as pd

    2 秒读取 .csv df = pd.read_csv('foo.csv')(pd.read_table 相同)

    15.3 秒读取 .xlsx df = pd.read_excel('foo.xlsx')

    10.5 秒写入 .csv df.to_csv('bar.csv', index=False) (.txt 也一样)

    34.5 秒写入 .xlsx df.to_excel('bar.xlsx', sheet_name='Sheet1', index=False)


    要将数据框写入制表符分隔的文本文件,您可以使用:

    df.to_csv('bar.txt', sep='\t', index=False)

    【讨论】:

    • 仅供参考,to_csv 有一个 compression 参数,因此您可以写入压缩文件。请参阅to_csv 文档。不过,不确定这里的压缩与 Excel 的格式相比有多好。
    【解决方案2】:
    1. read_tableread_csvsep=',' 替换为 sep='\t',它们是相同功能的两个薄包装器,因此性能将相同。 read_excel 使用 xlrd 包将 xls 和 xlsx 文件读入 DataFrame,它不处理 csv 文件。
    2. from_csv 打电话给read_table,所以没有。

    【讨论】:

      猜你喜欢
      • 2019-02-09
      • 2016-03-17
      • 2018-09-28
      • 2012-01-03
      • 1970-01-01
      • 2019-04-21
      • 2010-10-15
      • 1970-01-01
      • 2013-02-18
      相关资源
      最近更新 更多