之前参加JD的比赛,遇见了这个问题。
先说一下电脑配置: Win10, i73630QM, 28G, 1TB 5400.
赛题是通过对3月内用户对商品的操作行为数据,预测未来5天用户的购买情况。最大的数据来源于3个月的行为操作数据,大概4G左右的数据量。我们是用python2.7进行操作的,全程都是python完成。
一开始没有注意这个问题,用python写循环去处理数据,统计相应的特征指标。需要循环4000万次,而且循环越来越慢,内存占用越来越大,当时循环一次需要1周时间,有点崩溃。后来减少了python循环的使用,多使用了python自带的函数进行处理,速读就快起来了。
总结一下:
1.数据量大的时候,不要循环操作。python提供了很多处理数据的包,pandas, numpy这些包中的函数速读快而且内存占用少。merge,groupby, count, 这些函数要用起来啊。
2.可以预先在数据库里对数据进行处理,像我们遇到的这个数据量,在mysql里运用SQL进行特征提取,效率比python要快。
处理完数据后,运用python跑模型的时候,选好模型python的效率还是可以接受的。希望对于只会用python的数据分析同学有帮助啊。