agg函数的⽤法(⼀般与groupby函数连⽤)groupby是什么函数
为了了解agg这个函数 我们先以下数据集作为研究对象 (截图的⼀部分)
agg:这⾥⼀般都与groupby函数作为⽐较
pandas引⼊了agg函数,它提供基于列的聚合操作。⽽groupby可以看做是基于⾏,或者说index的聚合操作
通过这⾥介绍我们可以交接 groupby函数是基于⾏操作的 ⽽agg是基于列操作的
这个说可能太抽象,什么是⾏操作 什么是列操作呢
最简单的理解就是 基于⾏操作 我可以进⾏分类(⽐如⼀个班名单 所有180以上的是⼀组 160-180是⼀组 低于160是⼀组)如果实现这个过程 我们是每⼀⾏每⼀⾏就⾏查,查看符合什么条件 然后分组。这就是groupby函数最简单的理解 ⽽我们分好组以后 想得到每⼀组的平均值咋办 ⼀般我们是着⽤操作的 选择⼀个组之后 把他们所有⾝⾼都加起来 然后除以该组⼈数。那么问题来了 不管是⾝⾼和还是平均值我们都是进⾏列操作的 即我们是从上⾄下加起来的 ⽽不是从左到右。为了计算简便 我们引⼊了agg函数。
import pandas as pd
import numpy as np
path_df_part_1 = r'C:\Users\yang\Desktop\ceshi.csv' #时间11.22-11.27的数据
path_df = open(path_df_part_1, 'r')
try:
df_part_1 = pd.read_csv(path_df, index_col = False, parse_dates = [0])
df_lumns = ['user_id','item_id','behavior_type','item_category']
finally:
path_df.close()
df_part_1['cumcount'] = df_upby(['user_id', 'behavior_type']).cumcount()#
df_part_1_u_b_count_in_6 = df_part_1.drop_duplicates(['user_id','behavior_type'], 'last')
#相当于保存的最⼤的那个计数的 因为 0 1 2 3 4 5 6 这些计数前⾯都是重复的 保留最后⼀个即可。drop_duplicate函数括号⾥⾯的完全重复才算重复项
#完全重复就代表 user_id 与 behavior_type 完全相同 然后保留last最后u⼀个项
df_part_1_u_b_count_in_6 =
<_dummies(df_part_1_u_b_count_in_6['behavior_type']).join(df_part_1_u_b_count_in_6[['user_id','cumcount']])
#把1 2 3 4类型的进⾏热编码 变成0001 0010 0100 1000类型
df_part_1_u_b_count_ame(columns = {1:'behavior_type_1',
2:'behavior_type_2',
3:'behavior_type_3',
4:'behavior_type_4'}, inplace=True)
#只是对热编码的columns重新命名 便于以后取值 因为分成了单独的列了print(df_part_1)
df_part_1_u_b_count_in_6['u_b1_count_in_6'] = df_part_1_u_b_count_in_6['behavior_type_1'] *
(df_part_1_u_b_count_in_6['cumcount']+1)#统计⽤户点击操作总数
df_part_1_u_b_count_in_6['u_b2_count_in_6'] = df_part_1_u_b_count_in_6['behavior_type_2'] *
(df_part_1_u_b_count_in_6['cumcount']+1)#统计⽤户收藏操作总数
df_part_1_u_b_count_in_6['u_b3_count_in_6'] = df_part_1_u_b_count_in_6['behavior_type_3'] *
(df_part_1_u_b_count_in_6['cumcount']+1)#统计⽤户购物车操作总数
df_part_1_u_b_count_in_6['u_b4_count_in_6'] = df_part_1_u_b_count_in_6['behavior_type_4'] *
(df_part_1_u_b_count_in_6['cumcount']+1)#统计⽤户购买操作总数
★print(df_part_1_u_b_count_in_6)
df_part_1_u_b_count_in_6 = df_part_1_u_b_count_upby('user_id').agg({'u_b1_count_in_6': np.sum,
'u_b2_count_in_6': np.sum,
'u_b3_count_in_6': np.sum,
'u_b4_count_in_6': np.sum})
★ print(df_part_1_u_b_count_in_6)
为了更容易看懂程序 我们做了标记 第⼀个五⾓星输出的是刚开始我们给的数据图
第⼆个五⾓星输出如下
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论