Python Pandas 函数应用

Python Pandas 函数应用

要将自己或其他库的函数应用到Pandas对象上,您需要了解三个重要的方法。下面讨论了这些方法。使用适当的方法取决于您的函数是希望对整个DataFrame还是逐行/逐列或逐个元素进行操作。

  • 表格全局函数应用:pipe()
  • 逐行或逐列函数应用:apply()
  • 逐个元素函数应用:applymap()

表格全局函数应用

通过将函数和适当数量的参数作为pipe的参数传递,可以执行自定义操作。因此,操作将在整个DataFrame上执行。

例如,将值2添加到DataFrame的所有元素中。然后,

加法函数

加法函数将两个数字值作为参数相加,并返回它们的和。

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的轴应用任意函数。该方法和描述性统计方法一样,可以接受一个可选的axis参数。默认情况下,该操作按列进行,将每一列视为类似数组的对象。

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

通过传递 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.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上的 analogously 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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程