• 主页

  • 投资

  • IT

    🔥
  • 设计

  • 销售

  • 共95篇

    python3.X - 数据分析 - Pandas

关闭

返回栏目

关闭

返回python3.X - 数据分析 - Pandas栏目

72 - 运算 - df.agg() - 聚合运算

作者:

贺及楼

成为作者

更新日期:2025-01-08 19:26:27

agg()聚合运算

例子

  1. import numpy as np
  2. import pandas as pd
  3. df = pd.DataFrame([{'类别': '黄水果', '水果': '香蕉', '点赞': 14, '投币': 7}, {'类别': '黄水果', '水果': '菠萝', '点赞': 30, '投币': 15}, {'类别': '黄水果', '水果': '柠檬', '点赞': 50, '投币': 25}, {'类别': '红水果', '水果': '草莓', '点赞': 160, '投币': 80}, {'类别': '红水果', '水果': '苹果', '点赞': 6, '投币': 3}, {'类别': '红水果', '水果': '樱桃', '点赞': 8, '投币': 4}])
类别 水果 点赞 投币
0 黄水果 香蕉 14 7
1 黄水果 菠萝 30 15
2 黄水果 柠檬 50 25
3 红水果 草莓 160 80
4 红水果 苹果 6 3
5 红水果 樱桃 8 4

agg例子

groupby

  1. grouped = df1.groupby(['类别','水果'])
  2. <pandas.core.groupby.generic.DataFrameGroupBy object at 0x7feea03249d0>

agg()参数

方法 说明
agg_df = df.groupby(['类别'])['点赞'].agg('mean') 单维单列单值
agg_df = df.groupby(['类别']).agg('mean') 单维双列单值
agg_df = df.groupby(['类别'])['点赞'].agg(['min','max']) 单维单列双值
agg_df = df.groupby(['类别'])['点赞'].agg([('最小值','min'),('最大值','max')]) 单维单列双值改名
agg_df = df.groupby(['类别']).agg({'点赞':['sum','mean'], '投币':['min','max']}) 单维双列双值
agg_df = df.groupby(['类别', '水果']).agg({'点赞':['sum','mean'], '投币':['min','max']}) 多维双列双值
函数名 说明
count或size 分组中非NA值得数量
sum 非NA值的和
mean 非NA值的平均值
median 非NA值的算术平均数(中位数)
std、var 无偏(分母为n-1)标准差和方差
min、max 非NA值的最小值和最大值
prod 非NA值的积
first、last 第一个和最后一个非NA值

单维单列单值

单维’类别’ - 单列’点赞’ - 求单值平均数mean

  1. agg_df = df.groupby(['类别'])['点赞'].agg('mean')
类别
红水果 58.000000
黄水果 31.333333

Name: 点赞, dtype: float64

单维双列单值

单维’类别’ - 双列’点赞’、’投币’ - 求单值平均数mean

  1. agg_df = df.groupby(['类别']).agg('mean')
点赞 投币
类别
红水果 58.000000 29.000000
黄水果 31.333333 15.666667

单维单列多值

单维’类别’ - 单列’点赞’ - 求双值最大值max、最小值min

  1. agg_df = df.groupby(['类别'])['点赞'].agg(['min','max'])
  2. agg_df = df.groupby(['类别'])['点赞'].agg([('最小值','min'),('最大值','max')])
min max
类别
红水果 6 160
黄水果 14 50
最小值 最大值
类别
红水果 6 160
黄水果 14 50

单维双列多值

单维’类别’ - 双列’点赞’、’投币’ - 求多值最大值max、最小值min、平均值mean、和sum

  1. agg_df = df.groupby(['类别']).agg({'点赞':['sum','mean'], '投币':['min','max']})
点赞 投币
sum mean min max
类别
红水果 174 58.000000 3 80
黄水果 94 31.333333 7 25

多维双列多值

多维’类别’,’水果’ - 双列’点赞’、’投币’ - 求多值最大值max、最小值min、平均值mean、和sum

  1. agg_df = df.groupby(['类别', '水果']).agg({'点赞':['sum','mean'], '投币':['min','max']})
点赞 投币
sum mean min max
类别 水果
红水果 樱桃 8 8 4 4
苹果 6 6 3 3
草莓 160 160 80 80
黄水果 柠檬 50 50 25 25
菠萝 30 30 15 15
香蕉 14 14 7 7
  1. ## 去掉最上面的Multi-Level
  2. agg_df = agg_df.droplevel(0, axis=1)
  3. ## 重复的话,会多个同名列名,需要改名

列级 - df.columns=[“a”,”b”] - 重命名列名

sum mean min max
类别 水果
红水果 樱桃 8 8 4 4
苹果 6 6 3 3
草莓 160 160 80 80
黄水果 柠檬 50 50 25 25
菠萝 30 30 15 15
香蕉 14 14 7 7
  1. agg_df = agg_df.reset_index()
类别 水果 sum mean min max
红水果 樱桃 8 8 4 4
红水果 苹果 6 6 3 3
红水果 草莓 160 160 80 80
黄水果 柠檬 50 50 25 25
黄水果 菠萝 30 30 15 15
黄水果 香蕉 14 14 7 7