Pandas マップ

Suraj Joshi 2021年3月5日
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 には functiondictionarySeries オブジェクトのいずれかを指定し、それによって Series オブジェクトの新しい値を決定します。

パラメータ na_actionNone または 'ignore' を値として指定できます。値 na_action'ignore'SeriesNaN 値を無視して何もしないことを示します。

例: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
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

関連記事 - Pandas Series