# Pandas - groupby-agg 分组统计

### Pandas - groupby-agg 分组统计

DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True,group_keys=True, squeeze=False, **kwargs)

### 以某一列为参照物对另一列进行分组统计

""" 数据聚合与分组技术, 利用Python进行数据分析
1. groupby;
"""
import pandas as pd
import numpy as np

np.random.seed(1)

""" 1. groupby, 按键拆分, 重组, 求和 """
df = pd.DataFrame({
"key1":     ["a", "a", "b", "b", "a"],
"key2":     ["one", "two", "one", "two", "one"],
"data1":    np.random.randn(5),
"data2":    np.random.randn(5)
})
print(df)
# 按key1分组, 计算data1列的平均值
df.groupby('key1')['data1'].mean()

  key1 key2     data1     data2
0    a  one  1.624345 -2.301539
1    a  two -0.611756  1.744812
2    b  one -0.528172 -0.761207
3    b  two -1.072969  0.319039
4    a  one  0.865408 -0.249370

key1
a    0.625999
b   -0.800570
Name: data1, dtype: float64


### 以某几列为参照物对另一列进行分组统计

# 按照key1, key2分组, 对data1列计数
print(df)
df.groupby(['key1','key2'])['data1'].count()

  key1 key2     data1     data2
0    a  one  1.624345 -2.301539
1    a  two -0.611756  1.744812
2    b  one -0.528172 -0.761207
3    b  two -1.072969  0.319039
4    a  one  0.865408 -0.249370

key1  key2
a     one     2
two     1
b     one     1
two     1
Name: data1, dtype: int64


### 以任意数组为分组键对另一列进行分组统计

# 以任意数组为分组键
print(df)
arr = np.array([1993, 1994, 1993, 1996, 1996])

keyArr = df["data1"].groupby(arr).count()
keyArr

  key1 key2     data1     data2
0    a  one  1.624345 -2.301539
1    a  two -0.611756  1.744812
2    b  one -0.528172 -0.761207
3    b  two -1.072969  0.319039
4    a  one  0.865408 -0.249370

1993    2
1994    1
1996    2
Name: data1, dtype: int64


### agg的应用


""" agg数据聚合 """
key1 = df.groupby(['key1'],as_index=False)['data1'].agg({'data':'count'})
key1

key1data
0a3
1b2

• 点赞
• 评论
• 分享
x

海报分享

扫一扫，分享海报

• 收藏
• 手机看

分享到微信朋友圈

x

扫一扫，手机阅读

• 打赏

打赏

Kevin在努力

你的鼓励将是我创作的最大动力

C币 余额
2C币 4C币 6C币 10C币 20C币 50C币
• 一键三连

点赞Mark关注该博主, 随时了解TA的最新博文
06-30 9940

04-11 398
08-06 5244
04-06 4万+
09-21 1244
09-19 3130
06-19 1万+