纳闷
在 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