pandas之groupby

import pandas as pd
path = 'https://raw.githubusercontent.com/HoijanLai/dataset/master/PoliceKillingsUS.csv'
data = pd.read_csv(path,index_col=None)
data.head()
``            name       date    race  age signs_of_mental_illness  flee
0          Tim Elliot  02/01/15    A   53.0     True              Not fleeing
1    Lewis Lee Lembke  02/01/15    W   47.0    False              Not fleeing
2  John Paul Quintero  03/01/15    H   23.0    False              Not fleeing
3     Matthew Hoffman  04/01/15    W   32.0     True              Not fleeing
4   Michael Rodriguez  04/01/15    H   39.0    False              Not fleeing

### 统计不同种族的个数
data['race'].value_counts()
W    1201
B     618
H     423
A      39
N      31
O      28
### 不同种族年龄的平均值
data.groupby('race')['age'].mean()
race
A    36.605263
B    31.635468
H    32.995157
N    30.451613
O    33.071429
W    40.046980
### 患有精神病和没有精神病的人数
data['signs_of_mental_illness'].value_counts()
False    1902
True      633
### 统计不同种族患有精神病和没有精神病的人数
data.groupby('race')['signs_of_mental_illness'].value_counts()

race  signs_of_mental_illness
A     False                       29
      True                        10
B     False                      523
      True                        95
H     False                      338
      True                        85
N     False                       23
      True                         8
O     False                       21
      True                         7
W     False                      819
      True                       382
data.groupby('race'['signs_of_mental_illness'].value_counts().unstack()

signs_of_mental_illness False True
race
A                         29   10 
B                         523  95 
H                         338  85 
N                         23   8 
O                         21   7 
W                         819  382 
### 统计不同种族的逃逸方式
data.groupby('race')['flee'].value_counts().unstack()
flee    Car   Foot  Not fleeing  Other
race                                  
A       4.0    5.0         28.0    NaN
B      90.0  113.0        379.0   23.0
H      74.0   50.0        268.0   19.0
N       2.0    6.0         21.0    NaN
O       4.0    2.0         21.0    1.0
W     191.0  103.0        838.0   46.0
### 统计不同种族的逃逸方式直方图
data.groupby('race'['flee'].value_counts().unstack().plot(kind='bar',figsize=(20,5))
https://img-blog.csdnimg.cn/20191121093253192.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIxODQwMjAx,size_16,color_FFFFFF,t_70
好的,关于Pandasgroupby和agg操作,我可以为您进行介绍和讲解,以下是详细内容: 在Pandas中,groupby和agg是非常常用的两个操作,可以对数据集进行分组聚合操作,非常适用于数据分析和处理。下面我会分别进行介绍。 首先,我们来看看groupby操作。groupby可以将数据集按照某一列或多列进行分组,然后对每个组进行操作。例如: ```python import pandas as pd data = pd.DataFrame({'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva', 'Frank', 'Grace', 'Hank', 'Ivy', 'Jack'], 'gender': ['F', 'M', 'M', 'M', 'F', 'M', 'F', 'M', 'F', 'M'], 'age': [21, 23, 25, 27, 29, 31, 33, 35, 37, 39], 'score': [80, 85, 90, 95, 96, 97, 98, 99, 100, 100]}) grouped = data.groupby('gender') ``` 以上代码中,我们用了一个DataFrame来存储一些人的信息,包括姓名、性别、年龄和分数。我们使用了groupby将数据按照性别进行分组,将得到一个groupby对象。接下来,我们可以对每个组进行操作,例如: ```python print(grouped.mean()) ``` 运行以上代码,输出结果为: ``` age score gender F 29.333333 92.0 M 32.800000 93.4 ``` 以上代码中,我们使用了mean函数对每个组进行操作,求出了每个组的平均年龄和平均分数。可以看到,我们得到了按照性别分组后的结果。 接下来,我们来看看agg操作。agg可以对每个组进行多个操作,例如求最大值、最小值、平均值等等。例如: ```python print(grouped.agg({'age': 'mean', 'score': ['min', 'max']})) ``` 运行以上代码,输出结果为: ``` age score mean min max gender F 29.333333 80 98 M 32.800000 85 100 ``` 以上代码中,我们使用了agg函数对每个组进行操作,求出了每个组的平均年龄和分数的最大值和最小值。可以看到,我们得到了按照性别分组后的结果。 总的来说,groupby和agg是非常常用的Pandas操作,能够帮助我们方便地对数据集进行分组聚合操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值