疑惑
在pandas文档中看到,不建议频繁使用append追加数据,而是使用concat连接,能够提高效率。
于是想到,这样操作已有DataFrame时可能没别的办法,但是在爬虫中,经常是分批采集到数据,那应该在每个线程中转为DataFrame再最后合并,还是应该先用list追加(extand/append)最后再转为DataFrame?
于是自己测试一下,发现结果list处理比频繁转换DataFrame效率高得多。
所以,爬虫中应该先使用list存储、更新数据,抓取结束后再使用pandas处理。
测试如下
1. 使用pandas直接转为DataFrame,最后再concat合并
t = time.perf_counter()
pd1 = pd.concat([pd.DataFrame([[i, i, i, i]], columns=['0', '1', '2', '3']) for i in range(1000)],
ignore_index=True)
t = time.perf_counter() - t
print(pd1)
print('任务全部完成耗时:', t)
输出:
[1000 rows x 4 columns]
任务全部完成耗时: 0.47608409999998
2. 使用list合并,最后使用pandas直接转为DataFrame
t = time.perf_counter()
lst = []
for i in range(1000):
lst.extend([[i, i, i, i]])
pd1 = pd.DataFrame(lst, columns=['0', '1', '2', '3'])
t = time.perf_counter() - t
print(pd1)
print('任务全部完成耗时:', t)
输出:
[1000 rows x 4 columns]
任务全部完成耗时: 0.002777700000024197
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。