Pandas 函數(shù)應(yīng)用

Pandas 重建索引操作實例

要將您自己或其他庫的函數(shù)應(yīng)用于Pandas對象,您應(yīng)該了解三個重要的方法。方法如下所述。要使用的適當(dāng)方法取決于您的函數(shù)是希望對整個數(shù)據(jù)幀進(jìn)行操作,還是行操作還是按列操作,還是按元素操作。

表函數(shù)應(yīng)用程序:pipe() 行或列函數(shù)應(yīng)用程序:apply() 元素級函數(shù)應(yīng)用程序:applymap()

表函數(shù)應(yīng)用程序

可以通過傳遞函數(shù)和適當(dāng)數(shù)量的參數(shù)作為管道參數(shù)來執(zhí)行對DataFrame自定義操作

加法器函數(shù)

例如,將2個值添加到DataFrame中。加法器功能將兩個數(shù)字值相加并返回總和。

  def adder(ele1,ele2):
    return ele1+ele2

我們使用自定義函數(shù)對DataFrame進(jìn)行操作.

 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))

運(yùn)行結(jié)果:

       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

行或列函數(shù)應(yīng)用程序

可以使用apply()方法沿DataFrame或Panel的軸應(yīng)用任意函數(shù),該方法與描述性統(tǒng)計方法一樣,采用可選的axis參數(shù)。默認(rèn)情況下,該操作按列執(zhí)行,將每一列視為類似數(shù)組的形式。

實例 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))

運(yùn)行結(jié)果:

 col1 -0.288022
 col2 1.044839
 col3 -0.187009
 dtype: float64

通過傳遞 axis 參數(shù),可以逐行執(zhí)行操作。

實例 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))

運(yùn)行結(jié)果:

 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))

運(yùn)行結(jié)果:

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

元素級函數(shù)應(yīng)用程序

并非所有函數(shù)都可以向量化(NumPy數(shù)組既不返回另一個數(shù)組,也不返回任何值),DataFrame上的applymap() 方法和Series上的map() 類似地接受任何采用單個值并返回單個值的Python函數(shù)。

實例 1

 import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
 # 自定義函數(shù)
 df['col1'].map(lambda x:x*100)
 print(df.apply(np.mean))

運(yùn)行結(jié)果:

 col1 0.480742
 col2 0.454185
 col3 0.266563
 dtype: float64

實例 2

 import pandas as pd
 import numpy as np
 # 自定義函數(shù)
 df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
 df.applymap(lambda x:x*100)
 print(df.apply(np.mean))

運(yùn)行結(jié)果:

 col1 0.395263
 col2 0.204418
 col3 -0.795188
 dtype: float64
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清