groupby函数中如何算组中值、频数、频率、累计频率
时间: 2023-05-19 12:01:05 浏览: 383
在groupby函数中,可以使用agg方法来计算组中的值、频数、频率和累计频率。具体实现方法如下:
1. 计算组中的值:使用agg方法,传入一个字典,字典的key为列名,value为对应的计算方法,例如:{'列名': 'mean'}表示计算该列的平均值。
2. 计算组中的频数:使用agg方法,传入一个字典,字典的key为列名,value为'count',表示计算该列的非空值数量。
3. 计算组中的频率:先计算组中的频数,再除以该组的总数。
4. 计算组中的累计频率:先计算组中的频率,再使用cumsum方法计算累计和。
示例代码如下:
```python
import pandas as pd
# 创建一个DataFrame
df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
'C': [1, 2, 3, 4, 5, 6, 7, 8]})
# 使用groupby函数分组,并计算组中的值、频数、频率和累计频率
result = df.groupby(['A', 'B']).agg({'C': ['mean', 'count']})
result['频率'] = result['C']['count'] / result['C']['count'].sum()
result['累计频率'] = result['频率'].cumsum()
print(result)
```
输出结果如下:
```
C 频率 累计频率
mean count
A B
bar one 2.0 1 0.125000 0.125000
three 4.0 1 0.125000 0.250000
two 4.0 2 0.250000 0.500000
foo one 4.0 2 0.250000 0.750000
three 8.0 1 0.125000 0.875000
two 4.0 1 0.125000 1.000000
```
阅读全文