【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)
ABCD
0foooneNaN-1.004843
1barone-1.374259-0.178051
2footwo1.4190010.278659
3barthree-0.3671651.577527
4footwo-1.2431611.205420
5bartwo-0.574929-1.776985
6fooone1.138710-1.004556
7foothree-0.1754240.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
AD
0bar-0.125837
1foo-0.006970

2.2 groupby使用聚合函数

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值