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
本文深入探讨了Pandas库中apply、groupby和agg函数的高级使用技巧,通过实例展示了如何高效处理数据,包括列和行的操作、数据分组与聚合,是数据分析师和数据科学家的必备技能。
&spm=1001.2101.3001.5002&articleId=106141931&d=1&t=3&u=63c508734c10462d80a9405fdd877cd3)
3812

被折叠的 条评论
为什么被折叠?



