【pandas】groupby()

1 写在前面的总结:

放在前面的要求——对于groupy的掌握:
 1 对于分组的实质
    对于分组的实质有点像sql中groupby的分组——就是拿出满足条件的行,汇集和进行分组排序。
    可以看成DataFrame(但是是groupby类型)
 2 分组后的运算(或者统计函数)
    .mean()函数,对应有数字的列的均值  df.groupby('A').mean()
    .sum()函数,对应分类后数字的列的总数  df.groupby('A').std()
    .等

#DataFrame.groupby(by=None, axis=0, level=None, as_index=True,
sort=True, group_keys=True, squeeze=, observed=False, dropna=True)

#常用参数说明:
1) as_index = True(默认),表示使用分组标签作为索引,False则表示自增序列变为索引!

2 groupby()的实质

import pandas as pd 
import numpy as np
df = pd.DataFrame({
    
    'A': ['foo', 'bar', 'foo', 'bar',
                        'foo', 'bar', 'foo', 'foo'],
                  'B': ['one', 'one', 'two', 'three',
                       'two', 'two', 'one', 'three'],
                  'C': np.random.randn(8),
                  'D': np.random.randn(8)})
df.iloc[0,2] = np.nan
display(df)
A B C D
0 foo one NaN -1.004843
1 bar one -1.374259 -0.178051
2 foo two 1.419001 0.278659
3 bar three -0.367165 1.577527
4 foo two -1.243161 1.205420
5 bar two -0.574929 -1.776985
6 foo one 1.138710 -1.004556
7 foo three -0.175424 0.490470

2.1 首先看看groupby的实质:

##groupby后依旧是可以看成DataFrame形式
##得但是强调的是groupby类型,使用聚合函数进行访问!
df1 = df.groupby(['A']).apply(lambda x:print(x))
display(df1)
     A      B         C         D
1  bar    one -1.374259 -0.178051
3  bar  three -0.367165  1.577527
5  bar    two -0.574929 -1.776985
     A      B         C         D
0  foo    one       NaN -1.004843
2  foo    two  1.419001  0.278659
4  foo    two -1.243161  1.205420
6  foo    one  1.138710 -1.004556
7  foo  three -0.175424  0.490470
#例如访问各组下‘D’这一列的的均值——以标签作为索引
display(df.groupby(['A'],as_index=True)['D'].mean())
#例如访问各组下‘D’这一列的的均值——自增索引
display(df.groupby(['A'],as_index=False)['D'].mean())
A
bar   -0.125837
foo   -0.006970
Name: D, dtype: float64
A D
0 bar -0.125837
1 foo -0.006970

2.2 groupby使用聚合函数

#对A进行分为2组,对2组形成各种的列表,求取对应列表的均值
df.groupby(['A']).mean()
C D
A
bar -0.772118 -0.125837
foo 0.284782 -0.006970

除了mean以外,还包括以下(于计算/描述统计)
多数用于纯数据的dataFrame,若含string–》取最大,dataFrame的类型为string
1)max
2)min
3)count 为每一列或每一行计算非NA单元
等等

猜你喜欢

转载自blog.csdn.net/The_dream1/article/details/113745731