Python-pandas-function-application

提供:Dev Guides
移動先:案内検索

Python Pandas-関数アプリケーション

独自のライブラリまたは別のライブラリの機能をPandasオブジェクトに適用するには、3つの重要な方法に注意する必要があります。 これらの方法については以下で説明しました。 使用する適切な方法は、関数がDataFrame全体、行単位または列単位、または要素単位で動作することを期待するかどうかによって異なります。

  • 表ごとの関数アプリケーション: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

行または列のワイズ関数アプリケーション

任意の関数は、* apply()*メソッドを使用して、DataFrameまたはPanelの軸に沿って適用できます。これは、記述統計メソッドと同様に、オプションの軸引数を取ります。 デフォルトでは、操作は列ごとに実行され、各列を配列のように取ります。

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

その*出力*は次のとおりです-

col1   -0.288022
col2    1.044839
col3   -0.187009
dtype: float64
*axis* パラメータを渡すことにより、行単位で操作を実行できます。

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

その*出力*は次のとおりです-

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)

その*出力*は次のとおりです-

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

要素ワイズ関数アプリケーション

すべての関数をベクトル化できるわけではなく(別の配列も値も返さないNumPy配列も)、DataFrameの* applymap()およびSeriesの analyously map()*メソッドは、単一の値を取り、単一の値を返すPython関数を受け入れます値。

例1

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])

# My custom function
df['col1'].map(lambda x:x*100)
print df.apply(np.mean)

その*出力*は次のとおりです-

col1    0.480742
col2    0.454185
col3    0.266563
dtype: float64

例2

import pandas as pd
import numpy as np

# My custom function
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