对pandas中apply函数的用法详解

  • Post category:Python

对pandas中apply函数的用法详解

什么是apply函数

apply是pandas中的一个函数,主要用于对DataFrame和Series数据类型中的元素执行某种指定的操作(可以是函数,也可以是lambda表达式)。apply函数的主要作用在于能够方便的对数据的某一列(Series)或整体(DataFrame)进行变换、操作和计算。

apply函数的基本语法

在pandas中使用DataFrame或Series的apply函数时,基本语法如下所示:

      def func(x):
          # 某种指定操作
          return result

      df.apply(func, axis = 0)

其中,传入apply函数的参数func为一个函数,该函数需要自己定义。

apply函数的常见参数

axis参数

在使用apply函数时,需要传入axis参数,表示在哪个维度上执行函数操作。

当axis = 0,表示操作在列上执行,返回结果为一个Series;当axis = 1,表示操作在行上执行,返回结果为一个DataFrame。

各种数据类型的使用方法

对于DataFrame和Series类型,apply函数对于数据类型的使用方法略有不同。

DataFrame

对于DataFrame类型,apply函数可以用于每列或者每行都做处理,得到一个Series或DataFrame,代码如下:

def my_func(x):
   return x.sum()   #对每列求和

res = df.apply(my_func,axis = 0)   #对每列数据执行my_func

print(res)

Series

对于Series类型,apply函数也可以用于针对每个元素都执行相应的函数处理,最终返回一个Series或DataFrame,具体如下:

def my_func(x):
   return x+1   #对每个元素加1

res = sr.apply(my_func)   #对每个元素执行my_func

print(res)

apply函数的示例说明

示例1:计算DataFrame中各列的平均值

对于DataFrame中的各列,我们可以通过apply函数进行聚合计算,如计算每一列的平均值。

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.rand(5,3),columns=['a','b','c'])

def my_mean(x):
    return sum(x)/len(x)

res = df.apply(my_mean,axis=0)    #对每列数据执行my_mean

print(res)

运行结果:

a    0.458757
b    0.504739
c    0.390884
dtype: float64

示例2:计算Series中对每个元素进行幂运算的结果

对于Series类型,我们可以使用apply函数对每个元素进行幂运算,如对于一个Series类型sr,我们可以计算其每个元素乘以自身的平方。

import pandas as pd

sr = pd.Series([1,2,3,4,5])

def power(x,n):
    return x**n

res = sr.apply(power,args=(2,))   #对每个元素执行x的平方

print(res)

运行结果:

0     1
1     4
2     9
3    16
4    25
dtype: int64

总结

apply函数是pandas库中常用的操作函数之一,可以对数据进行灵活的变换、操作和计算。在使用apply函数时,需要注意函数的定义和各个参数的含义,以便实现各种应用场景中的需求。