パンダのデータフレームのapply()の例
PandasのDataFrameのapply()関数は、DataFrameの軸に沿って関数を適用するために使用されます。関数の構文は次の通りです。
def apply(
self,
func,
axis=0,
broadcast=None,
raw=False,
reduce=None,
result_type=None,
args=(),
**kwds
)
重要なパラメータは次のとおりです。
- func: The function to apply to each row or column of the DataFrame.
- axis: axis along which the function is applied. The possible values are {0 or ‘index’, 1 or ‘columns’}, default 0.
- args: The positional arguments to pass to the function. This is helpful when we have to pass additional arguments to the function.
- kwargs: additional keyword arguments to pass to the function. This is helpful when we have to pass additional keyword arguments to the function.
パンダのデータフレームのapply()の例
DataFrameオブジェクトでapply()関数を使った例をいくつか見てみましょう。
データフレームの要素に関数を適用する。
import pandas as pd
df = pd.DataFrame({'A': [1, 2], 'B': [10, 20]})
def square(x):
return x * x
df1 = df.apply(square)
print(df)
print(df1)
出力:
A B
0 1 10
1 2 20
A B
0 1 100
1 4 400
apply()関数が呼び出されるDataFrameは変更されず、apply()関数は要素に関数を適用した後に新しいDataFrameオブジェクトを返します。
2. ラムダを使ったapply()の適用
上記の例を見ると、私たちのsquare()関数は非常にシンプルです。簡単にラムダ関数に変換できます。apply()関数を呼び出しながら、ラムダ関数を作成することができます。
df1 = df.apply(lambda x: x * x)
出力は前の例と同じままです。
3.軸方向で apply() を適用する。
軸に沿って関数を適用することができます。しかし、最後の例では軸の使用はありません。関数はDataFrameのすべての要素に適用されます。軸の使用方法は、DataFrameの行または列に集計関数を呼び出すと明確になります。列またはインデックスに沿った要素の和を取得したいとします。軸引数の値に基づいて、出力は異なります。
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': [1, 2], 'B': [10, 20]})
df1 = df.apply(np.sum, axis=0)
print(df1)
df1 = df.apply(np.sum, axis=1)
print(df1)
出力:
A 3
B 30
dtype: int64
0 11
1 22
dtype: int64
最初の例では、列ごとの要素の合計が計算されます。一方、2番目の例では、行ごとの要素の合計が計算されます。
4. 引数を使用したDataFrameのapply()
複数のパラメータを受け入れる関数を適用したいとしましょう。その場合、追加のパラメータを ‘args’ 引数を使って渡すことができます。
import pandas as pd
def sum(x, y, z):
return x + y + z
df = pd.DataFrame({'A': [1, 2], 'B': [10, 20]})
df1 = df.apply(sum, args=(1, 2))
print(df1)
出力:
A B
0 4 13
1 5 23
5. 位置引数とキーワード引数を使用したDataFrameのapply()
‘args’と’kwargs’パラメーターの両方を使用して、位置引数とキーワード引数を関数に渡す例を見てみましょう。
import pandas as pd
def sum(x, y, z, m):
return (x + y + z) * m
df = pd.DataFrame({'A': [1, 2], 'B': [10, 20]})
df1 = df.apply(sum, args=(1, 2), m=10)
print(df1)
出力:
A B
0 40 130
1 50 230
DataFrameのapplymap()関数
要素ごとに関数を適用したい場合は、applymap()関数を使用することができます。この関数には追加の引数はありません。関数は各要素に適用され、返された値が結果のDataFrameオブジェクトの作成に使用されます。
import pandas as pd
import math
df = pd.DataFrame({'A': [1, 4], 'B': [100, 400]})
df1 = df.applymap(math.sqrt)
print(df)
print(df1)
出力:
A B
0 1 100
1 4 400
A B
0 1.0 10.0
1 2.0 20.0
applymap()関数を使用して、すべての要素の値を大文字に変換する別の例を見てみましょう。
import pandas as pd
df = pd.DataFrame({'Name': ['Pankaj', 'Meghna'], 'Role': ['ceo', 'cto']})
df1 = df.applymap(str.upper)
print(df)
print(df1)
出力:
Name Role
0 Pankaj ceo
1 Meghna cto
Name Role
0 PANKAJ CEO
1 MEGHNA CTO
参考文献を日本語で言い換えると、お願いします。
- Python Pandas Module Tutorial
- Pandas apply() API Doc