pandas read_table vs. read_csv vs. from_csv vs. read_excel的性能差异?

Posted

技术标签:

【中文标题】pandas read_table vs. read_csv vs. from_csv vs. read_excel的性能差异?【英文标题】:Performance difference in 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.

    这些其他方法的性能是否比read_csv 更好? read_csvfrom_csv 创建 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】:
    read_tableread_csvsep=',' 替换为 sep='\t',它们是相同功能的两个薄包装器,因此性能将相同。 read_excel 使用 xlrd 包将 xls 和 xlsx 文件读入 DataFrame,它不处理 csv 文件。 from_csv 打电话给read_table,所以没有。

【讨论】:

以上是关于pandas read_table vs. read_csv vs. from_csv vs. read_excel的性能差异?的主要内容,如果未能解决你的问题,请参考以下文章

pandas 读取大文件 read_table C-engine CParserError: Error tokenizing data

pandas读写结构化数据(read_csv,read_table, read_excel, read_html, read_sql)

Pandas —— 数据读取

pandas-文件加载

18.Pandas实战,对电影数据进行分析

Pandas过滤值小于10且大于1000的数据帧行[重复]