首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Pandas笔记(一)

昨天碰见一个问题,处理两千多万条数据。数据的一小部分截图如下:

图中的最后一列是用户行为,有0,1,2,3,4,5这6种行为。图中第一列是用户ID。每个用户有多个行为,比如说ID为1062323的用户就有0,1,2,3这4个行为(图中并未全显示)。

我需要统计每个用户ID(图中第一列)的每种行为(图中最后一列)的次数,并保存起来,最后组成一个数据框。如果是很小的数据集的话,用excel排个序就解决了。但是面对这么多的数据,excel都无法全部打开。

我最初的想法是,在这个数据框中再插入一列'ct',数值全为0,然后利用循环,当用户行为是0时,就把ct这一列对应的值改为1。再用pandas里的groupby函数以id分组对ct求和即可。代码:

循环了1个多小时吧,电脑最后以卡死告终。

我的第二个想法是利用高性能函数query()同时选择ID与行为类型,比如我先统计行为类型为0的那些数据:

我把用户ID保存在一个列表里,通过遍历列表对每个用户ID都进行操作:选出满足:第一,id都等于当前循环id;第二,行为类型都是0,这样的数据框。获得它的行数作为value,把id作为key保存在一个字典里。后续字典还可以转为DataFrame。

我很喜欢我这个想法,但是失败了,电脑还是卡死。

最后我是这样解决的:

经验:

一、处理大数组或数据框时,尽量不要用遍历的方法,要充分使用numpy或pandas里封装好的函数,在这个基础上探索方法。如果不懂,或是对numpy及pandas不熟练,乱用遍历,那可能10小时都得不到结果;

二、学好numpy和pandas非常重要!那些高大上机器学习不一定实用,很有可能把简单问题弄复杂,掌握基础的数据操作是重中之重!

三、有钱把你的PC弄到200G内存的话就可以为所欲为了。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180604G160NW00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券