接上篇Pandas常用函数总结(1),本篇继续介绍Pandas常用的函数。首先介绍下Pandas里面常用的两种数据类型,一种是Series,类似一维数组;还一种是DataFrame,类似二维数组。
三、apply()函数
apply函数是pandas里面所有函数中自由度最高的函数。该函数如下:
DataFrame.apply(func, axis=0, broadcast=False, raw=False, reduce=None, args=(), **kwds)
该函数最有用的是第一个参数,这个参数是函数,相当于C/C++的函数指针。这个函数需要自己实现,函数的传入参数根据axis来定,比如axis = 1,就会把一行数据作为Series的数据 结构传入给自己实现的函数中,我们在函数中实现对Series不同属性之间的计算,返回一个结果,则apply函数会自动遍历每一行DataFrame的数据,最后将所有结果组合成一个Series数据结构并返回。
func可以自定义一个函数,也可以使用lambda函数(匿名函数)进行构建,或者各种Pandas内置的函数
import pandas as pd
def add(serise):
sum=serise['x']+serise['y']
return sum
table=[[0,1,1,3],[1,1,0,0],[0,0,0,1]]
a=pd.DataFrame(table,index=['x','y','z'],columns=['a','b','c','d'])
print(a)
<<
a b c d
x 0 1 1 3
y 1 1 0 0
z 0 0 0 1
#**************************************************************************
#自定义add()函数,按列传入数据,返回每一列‘x’行和‘y’行相加的结果
fun1=a.apply(add,axis=0)
print(fun1)
<<
a 1
b 2
c 1
d 3
dtype: int64
#***************************************************************************
#使用匿名函数,按列传入数据,返回每一列‘x’行和‘Z’行相加的结果
fun2=a.apply(lambda serise: serise['x']+serise['z'],axis=0)
print(fun2)
<<
a 0
b 1
c 1
d 4
dtype: int64
#使用Pandas自带的函数包,按列传入数据,统计每一列各个数据出现的频率 NaN代表没有
fun3=a.apply(pd.Series.value_counts,axis=0)
print(fun3)
<<
a b c d
0 2.0 1.0 2.0 1
1 1.0 2.0 1.0 1
3 NaN NaN NaN 1