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_csv
与 from_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_table
是 read_csv
与 sep=','
替换为 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)