目录

上一个主题

5.6. Pandas描述性统计

下一个主题

5.8. Pandas重建索引


>>> from env_helper import info; info()
待更新

5.7. Pandas函数应用

要将自定义或其他库的函数应用于Pandas对象,有三个重要的方法,下面来讨论如何使用这些方法。使用适当的方法取决于函数是否期望在整个DataFrame,行或列或元素上进行操作。

表合理函数应用:pipe()
行或列函数应用:apply()
元素函数应用:applymap()

表格函数应用

可以通过将函数和适当数量的参数作为管道参数来执行自定义操作。 因此,对整个DataFrame执行操作。

例如,为DataFrame中的所有元素相加一个值2。

adder 函数

adder函数将两个数值作为参数相加并返回总和。

def adder(ele1,ele2):
    return ele1+ele2

现在将使用自定义函数对DataFrame进行操作。

df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
df.pipe(adder,2)

下面来看看完整的程序 -

>>> import pandas as pd
>>> import numpy as np
>>>
>>> def adder(ele1,ele2):
>>>    return ele1+ele2
>>>
>>> df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
>>> df.pipe(adder,2)
>>> print(df)
       col1      col2      col3
0 -0.208437  0.298524 -0.902519
1  1.304937  1.433761 -0.789089
2 -1.146424  0.495104 -0.482684
3 -1.307434 -1.632128 -0.042929
4 -0.630547 -1.124569  0.014740

行或列合理函数应用

可以使用apply()方法沿DataFrame或Panel的轴应用任意函数,它与描述性统计方法一样,采用可选的axis参数。 默认情况下,操作按列执行,将每列列为数组。

示例

>>> import pandas as pd
>>> import numpy as np
>>>
>>> df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
>>> df.apply(np.mean)
>>> print(df)
       col1      col2      col3
0 -0.001566 -0.323715  0.281728
1  0.629556  0.574423 -1.997629
2 -0.233508  0.724304  2.063719
3 -0.776899  2.424228  0.929563
4  0.006696 -0.427313  1.448494

通过传递axis参数,可以在行上执行操作。

示例-2

>>> import pandas as pd
>>> import numpy as np
>>>
>>> df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
>>> df.apply(np.mean,axis=1)
>>> print(df)
       col1      col2      col3
0  1.885521 -0.581022  1.732570
1 -0.154360 -1.342056 -0.187386
2 -1.427500  0.092267  1.331077
3  0.674246 -0.473314  0.156390
4 -0.703407  0.248118  0.234135

示例-3

>>> import pandas as pd
>>> import numpy as np
>>>
>>> df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
>>> df.apply(lambda x: x.max() - x.min())
>>> print(df)
       col1      col2      col3
0 -0.365561 -0.207657  0.596434
1 -0.156572  0.777278  0.055926
2 -0.372297  1.248989  0.088700
3  0.507658 -0.640586 -0.917948
4  0.051933 -1.280586 -0.645598

元素合理函数应用

并不是所有的函数都可以向量化(也不是返回另一个数组的NumPy数组,也不是任何值),在DataFrame上的方法applymap()和类似于在Series上的map()接受任何Python函数,并且返回单个值。

示例-1

>>> import pandas as pd
>>> import numpy as np
>>> df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
>>>
>>> # My custom function
>>> df['col1'].map(lambda x:x*100)
>>> print(df)
       col1      col2      col3
0 -1.173950 -0.044773 -0.495571
1  1.584731 -0.031140  0.701249
2 -0.610611  0.226078  1.148624
3 -0.315578  0.261744 -0.617087
4 -0.813268  0.145595 -0.229687

示例-2

>>> import pandas as pd
>>> import numpy as np
>>>
>>> # My custom function
>>> df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
>>> df.applymap(lambda x:x*100)
>>> print(df)
       col1      col2      col3
0 -0.564091  0.204989  1.008012
1 -0.855999 -0.720598 -0.426536
2 -1.404017 -1.136245  1.432589
3  0.658555 -0.988077 -2.085771
4  1.655409  0.044457 -1.107277