Numpy 對戰 Pandas 之CSV文件讀取效率
本文旨在分析Numpy讀取CSV文件和Pandas讀取CSV文件的對比。
1. Numpy.loadtxt()
官網教程-Numpy.loadtxt()
使用numpy中的loadtxt()
方法可以很方便的讀取文件,代碼如下:
import time
import numpy as np
path = r"C:\Users\hewenyong\Desktop\csv\csv_folder\2.csv"
start = time.clock() # 起始時間
dataset = np.loadtxt(path, dtype=np.str, delimiter=',') # 讀取文件
test_dict = {}
data = dataset.tolist()
for item in data:
print(item)
end = time.clock() # 結束時間
print(str(end-start))
結果如下:
紅色框起來的爲整個讀取csv文件的的時間,大約0.106秒
,(上面還有一大堆打印的結果就沒粘貼出來)
2. Pandas.read_csv()
官網教程-Pandas.read_csv()
這是pandas.read_csv()
方法的基本使用過程,代碼如下:
import time
path = r"C:\Users\hewenyong\Desktop\csv\csv_folder\2.csv"
start = time.clock()
with open(path, 'r', encoding='UTF-8') as f:
dataset = pd.read_csv(f, header=None)
for index,row in dataset.iterrows():
print(row[0],row[1])
end = time.clock()
print(str(end-start))
結果如下:
可以看到耗時大約0.386s
3. 總結
結論:
從上面結果圖可以看到我們考慮從csv文件的讀取,到遍歷每一行數據完成。
numpy.load_txt()
更勝一籌。
4. 意外發現
由於print函數
等中間操作存在效率影響,所以將中間操作代碼直接註釋,只考慮文件讀取過程,發現,結果恰恰相反,pandas.read_csv()時間更短。
結果如下表格:
numpy.load_txt() | pandas.read_csv() | |
---|---|---|
打按行印所有數據 | 0.106秒 | 0.386s |
只考慮文件讀取 | 0.0107秒 | 0.0029s |
因此,具體使用沒有絕對,還是看場景。
- 論直接讀取csv,pandas可能更快;
- 但是當我們需要遍歷每一行數據,則numpy更快。
開心,又Get到編程的快樂。
加油!