pandas 进阶 --- 去重 合并 与实战

1.去重

1.1 groupby

groupby用于对pandas数据进行分组,使用示例如下:

card_group=card_df.groupby(['id','how'])['amount'].sum()

首先我们根据id和how两列对数据进行分组,并对分组结果中的amount列进行求和运算,返回最后的结果。

1.2 pivot_table

pivot_table是pandas提供的透视表函数,它根据一个或多个键对数据进行聚合,并根据行列上的分组键将数据分配到各个矩形区域中。使用示例如下:

card_df.pivot_table('amount',index=['id'],columns=['how'],aggfunc=sum)

这里,我们指定行索引为id列,列索引为how列,并返回amount列按照aggfunc参数指定的聚合方法的聚合结果值,这样描述起来可能有些拗口,举个简单的例子,比如原使数据是下面这个样子:

id  how   amount
01  食堂    200
01  淋浴    10
01  食堂    20
02  食堂    300
02  淋浴    50
02  淋浴    30
02  食堂    150

则按照上面的方式生成的透视表如下所示:

    食堂   淋浴
01  220    10
02  450    80

2 图书数据处理

这里,小编将介绍官方给出的图书馆数据的处理过程,首先回顾一下图书馆数据样例:

图书馆的开放时间为早上7点到晚上22点,门禁编号数据在2014/02/23之前只有“编号”信息,之后引入了“进门、出门”信息,还有些异常信息为null,请参赛者自行处理。 字段描述和示例如下: 学生id,门禁编号,具体时间 3684,"5","2013/09/01 08:42:50" 7434,"5","2013/09/01 08:50:08" 8000,"进门2","2014/03/31 18:20:31" 5332,"小门","2014/04/03 20:11:06" 7397,"出门4","2014/09/04 16:50:51"

根据官方给出的数据,我们想要得到每位同学去过图书馆的天数统计信息,结果如下:

id    times                    
0     13         
1      1     
10     3   
19    10     
20    13     
21     3     
22     9        
23     7        
28    32          
29    38

下面开始介绍小编的数据处理过程,首先是从读入数据,很简单,使用read_csv的方法读入数据并指定其columns列表:

library_df=pd.read_csv('library_train.txt',header=None)
library_df.columns=['id','gate','time_stamp']
print (library_df.head(10))

读入的数据示例如下:

      id    gate       time_stamp
0   3684    5  2013/09/01 08:42:50
1  14314    6  2013/09/01 08:42:59
2   5108    9  2013/09/01 08:43:32
3   5826    7  2013/09/01 08:44:06
4   7730    5  2013/09
  • 6
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值