Pandas マップ
このチュートリアルでは、Series.map() メソッドを使って Pandas 系列の値を別の値に置き換える方法を説明します。
import pandas as pd
my_series = pd.Series([85, 87, 90, 89], index=["1", "2", "3", "4"])
print(my_series, "\n")
出力:
1 85
2 87
3 90
4 89
dtype: int64
上の例で表示した Series my_series を使って、Pandas の map() メソッドの動作を説明します。
pandas.Series.map()
構文
Series.map(arg, na_action=None)
これは arg パラメータに基づいて呼び出し元の Series オブジェクトの値を置換して Series オブジェクトを返します。引数 arg には function、dictionary、Series オブジェクトのいずれかを指定し、それによって Series オブジェクトの新しい値を決定します。
パラメータ na_action は None または 'ignore' を値として指定できます。値 na_action の 'ignore' は Series の NaN 値を無視して何もしないことを示します。
例:Pandas シリーズに map() メソッドを使用する
import pandas as pd
my_series = pd.Series([85, 87, 90, 89], index=["1", "2", "3", "4"])
altered_series = my_series.map({85: 80, 87: 80, 90: 90, 89: 80})
print("Initial Series:")
print(my_series, "\n")
print("Altered Series:")
print(altered_series, "\n")
出力:
Initial Series:
1 85
2 87
3 90
4 89
dtype: int64
Altered Series:
1 80
2 80
3 90
4 80
dtype: int64
map() メソッドの引数に渡された辞書の値に応じて my_series の要素を置換します。
また、map() メソッドを用いて Pandas 系列の値を変更する関数を利用することもできます。
import pandas as pd
my_series = pd.Series([85, 87, 90, 89], index=["1", "2", "3", "4"])
altered_series = my_series.map(lambda x: str(x) + ".00")
print("Initial Series:")
print(my_series, "\n")
print("Altered Series:")
print(altered_series, "\n")
出力:
Initial Series:
1 85
2 87
3 90
4 89
dtype: int64
Altered Series:
1 85.00
2 87.00
3 90.00
4 89.00
dtype: object
my_series の各要素を取得し、my_series の各要素の末尾に .00 を付加します。
例:map() メソッドを使用して DataFrame の特定の列を変更する
import pandas as pd
df_1 = pd.DataFrame(
{
"Column 1": [85, 87, 90, 89],
"Column 2": [55, 54, 56, 66],
"Column 3": [23, 95, 65, 45],
},
index=["1", "2", "3", "4"],
)
print("Initial DataFrame:")
print(df_1, "\n")
df_1["Column 1"] = df_1["Column 1"].map(lambda x: x * 10)
print("DataFrame after changing Column 1:")
print(df_1)
出力:
Initial DataFrame:
Column 1 Column 2 Column 3
1 85 55 23
2 87 54 95
3 90 56 65
4 89 66 45
DataFrame after changing Column 1:
Column 1 Column 2 Column 3
1 850 55 23
2 870 54 95
3 900 56 65
4 890 66 45
map() メソッドを用いて、DataFrame の Column 1 にのみ lambda 関数を適用します。単一のカラムは Series オブジェクトなので、DataFrame のカラムを指定して map() メソッドを利用することができます。そして、map() メソッドから返された Series オブジェクトを df_1 DataFrame の Column 1 に代入します。このようにして、DataFrame の特定のカラムの値だけを変更することができます。
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn