对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函数时,需要注意函数的定义和各个参数的含义,以便实现各种应用场景中的需求。