groupby后对数据的聚合处理方法汇总

1、常规使用agg

优势:简单便捷

agg({'B':'count','C':'sum'})B列计数,C列求和,列名称分别为BC

import pandas as pd

# 创建一个示例DataFrame
df = pd.DataFrame({'A': ['a', 'b', 'a', 'b', 'a'],
                   'B': [1, 2, 2, 3, 1],
                   'C': [1, 2, 2, 1, 2]})

# 对A列进行分组,并在C列为2的情况下同时对B列进行去重计数和计数
result = df.groupby('A').agg({'B':'count','C':'sum'}).reset_index()

# 打印结果
print(result)

2、使用传参型agg

优势:可以对同一列进行不同计算,同时可以对计算到的列命名

.agg(去重计数=('B', 'nunique'),count_B=('B', 'count'))B列计算去重计数和直接计数,分别命名为 去重计数count_B

import pandas as pd

# 创建一个示例DataFrame
df = pd.DataFrame({'A': ['a', 'b', 'a', 'b', 'a'],
                   'B': [1, 2, 2, 3, 1],
                   'C': [1, 2, 2, 1, 2]})

# 对A列进行分组,并在C列为2的情况下同时对B列进行去重计数和计数
result = df[df['C'] == 2].groupby('A').agg(count_distinct_B=('B', 'nunique'),
                                           count_B=('B', 'size')).reset_index()

# 打印结果
print(result)

3、使用传参型agg+匿名函数

优势:可以对同一列进行不同计算,同时可以对计算到的列命名,可以对分组后的数据筛选后处理

agg(B列名称=('B', lambda x: x[df['C'] == 2].nunique()),count_B=('B', lambda x: x[df['C'] == 2].count()))

import pandas as pd

# 创建一个示例DataFrame
df = pd.DataFrame({'A': ['a', 'b', 'a', 'b', 'a'],
                   'B': [1, 2, 2, 3, 1],
                   'C': [1, 2, 2, 1, 2]})

# 对A列进行分组,并在C列为2的情况下同时对B列进行去重计数和计数
result = df.groupby('A').agg(B列名称=('B', lambda x: x[df['C'] == 2].nunique()),
                             count_B=('B', lambda x: x[df['C'] == 2].count())).reset_index()

# 打印结果
print(result)

4、使用apply+匿名函数

优势:可以对同一列进行不同计算,同时可以对计算到的列命名,可以对分组后的数据筛选后处理

apply(lambda x: pd.Series({ 'count_distinct_B': x[x['C'] == 2]['B'].nunique(), 'count_B': x[x['C'] == 2]['B'].count() }))

import pandas as pd

# 创建一个示例DataFrame
df = pd.DataFrame({'A': ['a', 'b', 'a', 'b', 'a'],
                   'B': [1, 2, 2, 3, 1],
                   'C': [1, 2, 2, 1, 2]})

# 对A列进行分组,并在C列为2的情况下同时对B列进行去重计数和计数
result = df.groupby('A').apply(lambda x: pd.Series({
    'count_distinct_B': x[x['C'] == 2]['B'].nunique(),
    'count_B': x[x['C'] == 2]['B'].count()
})).reset_index()

# 打印结果
print(result)

你可能感兴趣的:(工作使用,数据分析,数据挖掘,人工智能)