Numpy 对战 Pandas 之CSV文件读取效率
- 1. Numpy.loadtxt()
- 2. Pandas.read_csv()
- 3. 总结
- 4. 意外发现
本文旨在分析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到编程的快乐。
加油!