pandas read_table与read_csv与from_csv与read_excel的性能差异?

时间:2015-07-11 22:43:16

标签: python performance csv pandas dataframe

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

今天,我刚刚发现了read_table作为"泛型"其他格式的导入器,并想知道在pandas中用于读取.csv文件的各种方法之间是否存在显着的性能差异,例如: read_tablefrom_csvread_excel

  1. 这些其他方法的效果是否优于read_csv
  2. 创建read_csvfrom_csvDataFrame有很大差异吗?

2 个答案:

答案 0 :(得分:24)

  1. read_tableread_csvsep=','替换为sep='\t',它们是围绕同一功能的两个薄包装器,因此性能将相同。 read_excel使用xlrd包将xls和xlsx文件读入DataFrame,它不会处理csv文件。
  2. from_csv来电read_table,所以没有。

答案 1 :(得分:6)

我发现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)

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

的时间为34.5秒

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

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