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       col2        col3                                                      
0   0.343569  -1.013287    1.131245

1   0.508922  -0.949778   -1.600569

2  -1.182331  -0.420703   -1.725400

3   0.860265   2.069038   -0.537648

4   0.876758  -0.238051    0.473992

通过传递 参数,可以逐行执行操作。

例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         col2         col3

0  0.543255    -1.613418    -0.500731   

1  0.976543    -1.135835    -0.719153   

2  0.184282    -0.721153    -2.876206    

3  0.447738     0.268062    -1.937888

4 -0.677673     0.177455     1.397360

例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        col2      col3

0   -0.585206   -0.104938   1.424115

1   -0.326036   -1.444798   0.196849

2   -2.033478    1.682253   1.223152  

3   -0.107015    0.499846   0.084127

4   -1.046964   -1.935617  -0.009919

元素智能函数应用程序

并非所有的功能可以被矢量(均未返回另一个阵列或任何值NumPy的阵列),该方法 applymap() 上数据帧和 类似映射() 上序列接受任何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      col2       col3    

0    0.629348  0.088467  -1.790702

1   -0.592595  0.184113  -1.524998

2   -0.419298  0.262369  -0.178849

3   -1.036930  1.103169   0.941882

4   -0.573333 -0.031056   0.315590

例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)

输出 如下 -

output is as follows:
         col1         col2         col3
0   17.670426    21.969052    -49.064031
1   22.237846    42.216693     195.392124
2   24.109576   -86.457646     69.643171
3   35.576312   -162.332803   -81.743023
4   30.874333    71.476717     13.028751