Python Pandas 函数应用
为了将你自己的或其他库的函数应用到Pandas对象上,你应该了解三个重要的方法。下面已经讨论了这些方法。适当的方法取决于你的函数是否期望对整个DataFrame进行操作,是按行或按列操作,还是按元素操作。
- 从表来看的函数应用:pipe()
- 行或列明智的函数应用:apply()
- 从元素上看的函数应用:applymap()
按表计算的函数应用
自定义操作可以通过传递函数和适当数量的参数作为管道参数来执行。因此,操作是在整个DataFrame上进行的。
例如,给DataFrame中的所有元素添加一个值2。然后。
加法器函数
加法器函数将两个数字值作为参数相加,并返回总和。
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.apply(np.mean)
其 输出结果 如下 –
col1 col2 col3
0 2.176704 2.219691 1.509360
1 2.222378 2.422167 3.953921
2 2.241096 1.135424 2.696432
3 2.355763 0.376672 1.182570
4 2.308743 2.714767 2.130288
基于行或列的功能应用
任意函数可以通过 apply() 方法沿DataFrame或Panel的坐标轴应用,该方法与描述性统计方法一样,需要一个可选的坐标轴参数。默认情况下,该操作是按列执行的,将每一列作为一个数组。
例子1
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.apply(np.mean)
其 输出结果 如下 –
col1 -0.288022
col2 1.044839
col3 -0.187009
dtype: float64
通过传递 轴 参数,可以按行进行操作。
例子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.apply(np.mean)
其 输出结果 如下 –
col1 0.034093
col2 -0.152672
col3 -0.229728
dtype: float64
示例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.apply(np.mean)
其 输出结果 如下 –
col1 -0.167413
col2 -0.370495
col3 -0.707631
dtype: float64
元素的功能应用
并非所有的函数都可以被矢量化(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.apply(np.mean)
其 输出结果 如下 –
col1 0.480742
col2 0.454185
col3 0.266563
dtype: float64
例子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.apply(np.mean)
其 输出结果 如下 –
col1 0.395263
col2 0.204418
col3 -0.795188
dtype: float64