2015-07-11 150 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)