pandas常见函数的用法(apply、groupby、agg)

本文深入探讨了Pandas库中apply、groupby和agg函数的高级使用技巧,通过实例展示了如何高效处理数据,包括列和行的操作、数据分组与聚合,是数据分析师和数据科学家的必备技能。

1. apply方法

apply方法就是将函数应用到由列或行形成的一维数组上。可以快速地对列进行处理,尤其是在进行多行计算的时候,相比于传统的轮循计算要高效很多。
例如:

import pandas as pd

df=pd.DataFrame(np.random.randn(4,5),columns=list('abcde'))
# 求每列的最大值与最小值的差
x = df.apply(lambda x:x.max()-x.min())
# 求每行的最大值与最小值的差
y = df.apply(lambda x:x.max()-x.min(), axis=1)
print(df,a,b)

输出为:

df
          a         b         c         d         e
0  1.748888  0.878789  2.757548  1.387625  1.453920
1 -0.269653 -0.475881  0.704323  1.963375  1.429341
2 -0.340488 -0.126208  1.112348  1.280370  0.925476
3  0.735611 -0.594317  0.526251  0.633188 -0.521158
x
a    2.089376
b    1.473105
c    2.231297
d    1.330186
e    1.975078
dtype: float64 
y
0    1.878759
1    2.439256
2    1.620858
3    1.329928
dtype: float64

参考网址:
DataFrame的apply方法

2. groupby和agg函数的用法

groupby

分组函数
(1)不论分组健是数组、列表、字典、series、函数,只要与其待分组变量得轴长度一致,都可以传入groupby进行分组。
(2)默认axis=0,按行分组;可指定axis=1,按列分组。

对数据进行分组操作得过程可以概括为:split-apply-combine三步:
(1)按照键值(key)或者分组变量将数据分组;
(2)对于每组应用我们的函数,这一步非常灵活,可以是python自带得函数,也可以是我们自己编写得函数。
(3)将函数计算后得结果聚合。

groupby返回一个GroupBy对象,后面函数的任何操作都基于这个对象。GroupBy对象支持迭代操作,会产生一个由分组变量名和数据块组成的二元元组。

agg

agg一般都与groupby函数作为比较。
聚合函数,对分组后数据进行聚合,默认情况对分组后其他列进行聚合。

举例
import pandas as pd

df = pd.DataFrame({'Country': ['China', 'China', 'India', 'India', 'America', 'Japan', 'China', 'India'],

                   'Income': [10000, 10000, 5000, 5002, 40000, 50000, 8000, 5000],

                   'Age': [5000, 4321, 1234, 4010, 250, 250, 4500, 4321]})

print(df.groupby('Country'))
print(df.groupby('Country').agg(set))
print(df.groupby('Country').agg(['min', 'mean', 'max']))
print(df.groupby('Country').agg(['min', 'mean', 'max']).reset_index())

输出:

<pandas.core.groupby.groupby.DataFrameGroupBy object at 0x0000017110F2E978>

                Income                 Age
Country                                   
America        {40000}               {250}
China    {10000, 8000}  {5000, 4321, 4500}
India     {5000, 5002}  {4010, 4321, 1234}
Japan          {50000}               {250}

        Income                        Age                   
           min          mean    max   min         mean   max
Country                                                     
America  40000  40000.000000  40000   250   250.000000   250
China     8000   9333.333333  10000  4321  4607.000000  5000
India     5000   5000.666667   5002  1234  3188.333333  4321
Japan    50000  50000.000000  50000   250   250.000000   250

   Country Income                        Age                   
              min          mean    max   min         mean   max
0  America  40000  40000.000000  40000   250   250.000000   250
1    China   8000   9333.333333  10000  4321  4607.000000  5000
2    India   5000   5000.666667   5002  1234  3188.333333  4321
3    Japan  50000  50000.000000  50000   250   250.000000   250

参考网址:
python3 语法小记(八)groupby函数,agg函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值