Pandas 函数应用

Pandas 重建索引操作实例

要将您自己或其他库的函数应用于Pandas对象,您应该了解三个重要的方法。方法如下所述。要使用的适当方法取决于您的函数是希望对整个数据帧进行操作,还是行操作还是按列操作,还是按元素操作。

表函数应用程序:pipe()行或列函数应用程序:apply()元素级函数应用程序:applymap()

表函数应用程序

可以通过传递函数和适当数量的参数作为管道参数来执行对DataFrame自定义操作

加法器函数

例如,将2个值添加到DataFrame中。加法器功能将两个数字值相加并返回总和。

defadder(ele1,ele2):returnele1+ele2

我们使用自定义函数对DataFrame进行操作.

df=pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])df.pipe(adder,2)

我们看下完整的程序:

importpandasaspdimportnumpyasnpdefadder(ele1,ele2):returnele1+ele2df=pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])df.pipe(adder,2)print(df.apply(np.mean))

运行结果:

col1col2col302.1767042.2196911.50936012.2223782.4221673.95392122.2410961.1354242.69643232.3557630.3766721.18257042.3087432.7147672.130288

行或列函数应用程序

可以使用apply()方法沿DataFrame或Panel的轴应用任意函数,该方法与描述性统计方法一样,采用可选的axis参数。默认情况下,该操作按列执行,将每一列视为类似数组的形式。

实例 1

importpandasaspdimportnumpyasnpdf=pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])df.apply(np.mean)print(df.apply(np.mean))

运行结果:

col1-0.288022col21.044839col3-0.187009dtype:float64

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

实例 2

importpandasaspdimportnumpyasnpdf=pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])df.apply(np.mean,axis=1)print(df.apply(np.mean))

运行结果:

col10.034093col2-0.152672col3-0.229728dtype:float64

实例 3

importpandasaspdimportnumpyasnpdf=pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])df.apply(lambdax:x.max()-x.min())print(df.apply(np.mean))

运行结果:

col1-0.167413col2-0.370495col3-0.707631dtype:float64

元素级函数应用程序

并非所有函数都可以向量化(NumPy数组既不返回另一个数组,也不返回任何值),DataFrame上的applymap() 方法和Series上的map() 类似地接受任何采用单个值并返回单个值的Python函数。

实例 1

importpandasaspdimportnumpyasnpdf=pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])#自定义函数df['col1'].map(lambdax:x*100)print(df.apply(np.mean))

运行结果:

col10.480742col20.454185col30.266563dtype:float64

实例 2

importpandasaspdimportnumpyasnp#自定义函数df=pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])df.applymap(lambdax:x*100)print(df.apply(np.mean))

运行结果:

col10.395263col20.204418col3-0.795188dtype:float64
编辑于2024-05-20 15:58