Pandas入门之十四:分组

已信任
Jupyter 服务器: 本地
Python 3: Not Started
[1]



import pandas as pd
import numpy as np



[7]




df = pd.DataFrame({
    user:[小明,小黑,小黄,小李],
    gender:[,,,],
    score:[99,95,70,88]
})
df
user    gender    score
0    小明    男    99
1    小黑    女    95
2    小黄    女    70
3    小李    男    88
[8]



df.groupby(gender)
<pandas.core.groupby.generic.DataFrameGroupBy object at 0x0000029813AB8A90>
[9]



# .groups获取分组情况
df.groupby(gender).groups
{: [1, 2], : [0, 3]}
[11]



# 迭代
grouped = df.groupby(gender)
for name,group in grouped:
    print(name)
    print(group)
女
  user gender  score
1   小黑      女     95
2   小黄      女     70
男
  user gender  score
0   小明      男     99
3   小李      男     88
[12]



# 选择组
grouped.get_group()
user    gender    score
0    小明    男    99
3    小李    男    88
[22]



# 选择组,聚合计算
grouped.get_group()[score].agg(np.mean)
93.5
[15]



# 选择组,聚合计算
grouped.get_group()[score].agg(np.max)
95
[16]



# 选择组,计算长度
grouped.get_group().agg(np.size)
user      2
gender    2
score     2
dtype: int64
[17]



df[star] = pd.Series([5,7,4,3])
df
user    gender    score    star
0    小明    男    99    5
1    小黑    女    95    7
2    小黄    女    70    4
3    小李    男    88    3
[18]



grouped = df.groupby(gender)
[19]



grouped[[score,star]].agg({score:np.mean,star:np.sum})
score    star
gender        
女    82.5    1193.5    8
[23]



df.groupby(gender).filter(lambda x:x[score].mean()>90)
user    gender    score    star
0    小明    男    99    5
3    小李    男    88    3
[-]

 

Pandas入门之十四:分组

上一篇:CF645A Amity Assessment 题解


下一篇:Centos8 安装LNMP环境