使用groupby分组后agg函数对单列进行多种运算和对多列进行多种运算

import pandas as pd
import numpy as np
url = 'https://raw.githubusercontent.com/HoijanLai/dataset/master/PoliceKillingsUS.csv'
df = pd.read_csv(url,sep=',')
df

在这里插入图片描述

1.对多列运算

df.groupby('race').agg({'age':np.median,'signs_of_mental_illness':np.sum})

在这里插入图片描述

2.对单列进行多个运算

df.groupby('flee')['age'].agg([np.mean,np.median])

在这里插入图片描述

### Pandas 二维数据 `groupby` 使用方法 #### 创建示例 DataFrame 为了展示如何使用 `groupby` 对二维数据进行分组操作,先创建一个简单的 DataFrame。 ```python import pandas as pd data = { 'company': ['Google', 'Facebook', 'Google', 'Microsoft'], 'department': ['Engineering', 'Marketing', 'HR', 'Sales'], 'salary': [90000, 80000, 75000, 120000], 'bonus': [10000, 8000, 7000, 15000] } df = pd.DataFrame(data) print(df) ``` 输出如下: | | company | department | salary | bonus | | --- | --------- | ---------- | ------ | ----- | | 0 | Google | Engineering| 90000 | 10000 | | 1 | Facebook | Marketing | 80000 | 8000 | | 2 | Google | HR | 75000 | 7000 | | 3 | Microsoft | Sales | 120000 | 15000 | #### 单列分组 可以按照单个列对公司员工的数据进行分组,并计算每家公司工资的平均值。 ```python group_company_salary_mean = df.groupby('company')['salary'].mean() print(group_company_salary_mean) ``` 这会得到按公司分组后的平均薪资[^1]。 #### 多列分组 如果想要更加细致地了解不同部门在同一公司的表现,则可以通过多列来进行分组。比如同时基于公司部门两列进行分组,并分别求得各小组内的奖金总以及人数计数。 ```python multi_group_result = df.groupby(['company', 'department']).agg({ 'bonus': 'sum', 'salary': 'count' }) print(multi_group_result) ``` 上述代码实现了对多个维度的同时分组,并进行了聚合运算[^4]。 #### 自定义聚合函数 除了内置的一些简单聚合方式外,还可以自定义复杂的逻辑作为聚合函数传递给 `.agg()` 方法。例如,这里定义了一个匿名 lambda 函数用于返回最大值减去最小值得到范围差额。 ```python custom_agg_function = df.groupby('company').agg( max_minus_min=pd.NamedAgg(column='salary', aggfunc=lambda x: x.max() - x.min()) ) print(custom_agg_function) ``` 此部分展示了如何利用自定义聚合函数增强数据分析能力[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值