2015-07-11 130 views
8

我倾向于将.csv文件导入熊猫,但有时我可能会以其他格式获取数据以制作DataFrame对象。pandas read_table与read_csv的性能差异与from_csv与read_excel的差异?

今天,我刚刚发现约read_table作为其他格式的“通用”导入程序,并且想知道读取.csv文件的各种方法在大熊猫中是否存在显着的性能差异。 read_table,from_csv,read_excel

  1. 做这些其他方法比read_csv有更好的性能吗?
  2. read_csv与创建DataFramefrom_csv大不相同?

回答

19
  1. read_tableread_csvsep=','sep='\t'取代,它们是围绕相同功能的两个薄包装纸因此性能将是相同的。 read_excel使用xlrd包将xls和xlsx文件读取到DataFrame中,但它不处理csv文件。
  2. from_csv来电read_table,所以没有。
4

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


对于相同的320 MB CSV文件(16 MB的.xlsx) (i7-7700k,SSD,运行阿纳康达的Python 3.5.3,熊猫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)


要写dataframes为制表符分隔的文本文件,你可以使用:

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