我有一个30GB的csv文件,2列,80M行。一列有80M独特元素(电子邮件),另一列5M独特(匿名发件人),80M地图多对一。我想输出,只有5M行的CSV:发件人,邮件发送者这8行python + pandas需要1个月执行,帮助我加快速度?
此代码工作在理论派,在实践中它会带约1个月期100%
与至强CPU核心来完成df = pd.read_csv('emails.csv')
uni = df.sender_id.unique()
grouped = ((i, ' '.join(df.text[df.sender_id == i])) for i in uni)
with open('/storage/test.csv', 'w') as csvfile:
test_writer = csv.writer(csvfile)
for i in grouped:
test_writer.writerow(i)
csvfile.close()
任何想法如何使这个更快?我试着用joblib并行化,但是内存不足。
也许进入RDBMS并从那里查询? – JimmyB
我建议使用线剖析器来分析您的代码,查看哪些线路正在占用大部分时间,然后从此处继续。 – jme
如果内存使用是主要问题,您可以尝试使用['dask.dataframe''](http://dask.pydata.org/en/latest/dataframe.html),它可以自动并行化类似熊猫的操作。另外,是否有任何理由你手动分组而不是使用“groupby”? – jakevdp