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