python3关于groupby函数最简单的介绍和理解

首先我们先来看下网上最经典的解释


即对不同列进行在分类,标准是 先拆分 在组合(如果有操作比如sum则可以进行操作)


什么意思呢 。就是我们读取文件不是有很多列吗,如果我按列就行分类,那么先把选取列一样的挑出来

然后在进行操作。具体的看下下面一个例子


这里我们的列名省略了 其实是df_part_1.columns = ['user_id','item_id','behavior_type','item_category']


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_part_1.columns = ['user_id','item_id','behavior_type','item_category']
finally:
    path_df.close()

df_part_1['cumcount'] = df_part_1.groupby(['user_id', 'behavior_type']).cumcount()#
print(df_part_1)


这里我们选取了groupby(['user_id', 'behavior_type']

可能刚开始不懂啥意思 基本意思就是 我用这两列进行分类 树结构看过吗 这两个列就相当于树的节点 其他的列

通过这个节点再进行分支。还是不懂?没关系 来个最直白的意思 就是所有数据 只要['user_id', 'behavior_type']

这两个取值一样 就是一个小类 。如果这两个取值不一样则就不是一类 。可能单纯的说搞不懂,我们加了一个cumcount辅助理解


上述程序运行结果为上面所示 ,那么我们解释下 什么叫

只要['user_id', 'behavior_type'] 这两个取值一样 就是一个小类 

我们看上图0-3行 选取的groupby没有变 即['user_id', 'behavior_type']  没变 则一直计数

而3和4(横行标签)相比'behavior_type' 由1变成4了 则我们刚开始说的 只要有一个变就不是一类了 所以重新计数



现在懂了吧 最基本的就是可以选取我们需要的列进行分类 比如我们统计所有用户不同操作类型进行了多少次 

首先我们必须先把同样的用户分在一起 然后再把相同操作分在一起 所以我们选取groupby(['user_id', 'behavior_type']

进行分类 ,而不是在很大的数据中茫茫没有思路

猜你喜欢

转载自blog.csdn.net/qq_24753293/article/details/80311336