English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Pandasのリブートインデックス操作の例
あなた自身や他のライブラリの関数をPandasオブジェクトに適用するには、3つの重要なメソッドを理解する必要があります。以下に説明します。使用する適切なメソッドは、関数がデータフレーム全体に対して操作を行いたいか、行操作を行いたいか、列操作を行いたいか、要素操作を行いたいかによって異なります。
表関数の適用:pipe() 行または列関数の適用:apply() 要素レベル関数の適用:applymap()
関数と適切な数のパラメータをパイプラインパラメータとして渡すことで、DataFrameに対するカスタム操作を実行できます。
例えば、2値をDataFrameに追加します。加法器機能は、2つの数字値を足し算し、合計を返します。
def adder(ele1,ele2) return ele1+ele2
カスタム関数を使用してDataFrameを操作します。
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))
実行結果:
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
DataFrameやPanelの軸に任意の関数を適用するapply()メソッドを使用できます。このメソッドは描述的統計方法と同様に、オプションのaxisパラメータを使用します。デフォルトでは、この操作は列に対して実行され、各列を配列の形式とみなします。
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))
実行結果:
col1 -0.288022 col2 1.044839 col3 -0.187009 dtype: float64
axisパラメータを渡すことで、各行で操作を実行できます。
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))
実行結果:
col1 0.034093 col2 -0.152672 col3 -0.229728 dtype: float64
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))
実行結果:
col1 -0.167413 col2 -0.370495 col3 -0.707631 dtype: float64
并非所有函数都可以向量化(NumPy配列は新しい配列を返さず、何も返さない)、DataFrame上のapplymap()メソッドとSeries上のmap()メソッドは、引数を受け取り、引数を返すPython関数を任意に受け入れる。
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3']) # カスタム関数 df['col1'].map(lambda x:x*100) print(df.apply(np.mean))
実行結果:
col1 0.480742 col2 0.454185 col3 0.266563 dtype: float64
import pandas as pd import numpy as np # カスタム関数 df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3']) df.applymap(lambda x:x*100) print(df.apply(np.mean))
実行結果:
col1 0.395263 col2 0.204418 col3 -0.795188 dtype: float64