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函数

更多推荐