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
01.7488880.8787892.7575481.3876251.453920
1-0.269653-0.4758810.7043231.9633751.429341
2-0.340488-0.1262081.1123481.2803700.925476
30.735611-0.5943170.5262510.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
参考⽹址:
2. groupby和agg函数的⽤法
groupby
分组函数
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]})
upby('Country'))
upby('Country').agg(set))
upby('Country').agg(['min','mean','max']))
upby('Country').agg(['min','mean','max']).reset_index())
输出:
&upby.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 4000040000.00000040000250250.000000250
China 80009333.3333331000043214607.0000005000
India 50005000.666667500212343188.3333334321
Japan 5000050000.00000050000250250.000000250
Country Income Age
min mean max min mean max
0 America 4000040000.00000040000250250.000000250
1 China 80009333.3333331000043214607.0000005000
2 India 50005000.666667500212343188.3333334321
3 Japan 5000050000.00000050000250250.000000250
参考⽹址:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论