AI資格ドリル
資格を選ぶ

用語比較

Series.mapとapplyの違い|dictで置き換えるか、関数や引数つきで処理するか(Python3データ分析)

Series.map は、各値を、dict・Series・関数に従って別の値へ置き換えます。Series.apply は、関数や NumPy の関数を各値に使います。

map に渡した dict にない値は NaN になり、apply は args で関数に追加の引数を渡せます。

この記事の根拠と出典

各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。

Series.mapとSeries.applyの要点

Series.map

dict・Series・関数を渡して、値を置き換える。dict にない値は NaN になる。na_action='ignore' で欠損値に関数を使わない。

Series.apply

関数や NumPy の ufunc を各値に使う。args で追加の引数を渡せる。関数が Series を返すと、結果は DataFrame になる。

違いを表で確認

比較軸Series.mapSeries.apply
渡せるもの関数・dict・Series関数・NumPy の ufunc
dict にない値NaN になる(__missing__ を持つ dict なら、その既定値)dict は渡さない
欠損値の扱いna_action='ignore' で、欠損値を関数に渡さないna_action の引数はない
追加の引数公式のシグネチャに args はないargs で位置引数を渡せる
戻り値元と同じ index の SeriesSeries。関数が Series を返すと DataFrame

Python3エンジニア認定データ分析試験の学習に使う書籍(Amazon)

PR

ほかの資格を含む参考書・問題集の一覧を見る

どこで迷っているかを切り分ける

01

コードやラベルを、別の名前に置き換えたい人

map に dict を渡します。キーに対応する値へ、各値が置き換わります。

02

値ごとに計算をして、引数も渡したい人

apply を使います。args に位置引数を渡せるので、引く値などを関数の外から指定できます。

03

map のあとに、見覚えのない NaN が出た人

dict に載っていない値は NaN になります。dict のキーに漏れがないかを確かめます。

具体例で使い分ける

例 1

map は dict で置き換え、ないキーは NaN になる

公式の例の s(cat・dog・NaN・rabbit)に、s.map({"cat": "kitten", "dog": "puppy"}) を使います。

  • cat は kitten、dog は puppy に置き換わります。
  • dict にない rabbit と、もとから欠損値の行は、NaN になります。
  • 公式は、defaultdict のように既定値を持つ dict なら、その既定値が使われると書いています。

結論: map の dict は、載っていない値を NaN にします。漏れなく置き換えたいときは、キーを揃えます。

例 2

na_action で欠損値に関数を使わない

同じ s に、s.map("I am a {} ".format) を使います。

  • 公式の結果は、欠損値の行も I am a nan という文字列になります。
  • na_action='ignore' を付けると、欠損値は関数に渡されず、NaN のままです。

結論: 欠損値を残したいときは、map に na_action='ignore' を付けます。

例 3

apply は関数と args で計算する

公式の例の s(London 20、New York 21、Helsinki 12)に、s.apply(subtract_custom_value, args=(5,)) を使います。

  • subtract_custom_value は、値から custom_value を引く関数です。
  • 結果は、London 15、New York 16、Helsinki 7 です。
  • s.apply(lambda x: x ** 2) なら、400・441・144 になります。

結論: 値ごとの計算に引数を足したいときは、apply の args を使います。

問題文から答えを選ぶ手順

  1. 1

    置き換えか、計算かを決める

    対応表で置き換えるなら map、計算なら apply か map の関数です。

  2. 2

    対応表を使うなら、漏れを確かめる

    dict のキーにない値は NaN になります。

  3. 3

    欠損値と引数の要否を決める

    欠損値を飛ばすなら map の na_action、追加の引数があるなら apply の args です。

試験での見分け方

  • 1dict や Series による置き換えは、map を使う。
  • 2追加の引数つきの関数は、apply を使う。
  • 3map の dict にない値は、NaN になる。
  • 4欠損値に関数を使いたくないときは、map の na_action='ignore' を使う。

誤答しやすい選択肢

map の dict にない値が、そのまま残ると考える

修正: dict にない値は NaN になります。既定値が要るなら、__missing__ を持つ dict(defaultdict など)を使います。

apply にも dict を渡して置き換えられると考える

修正: 公式の apply の func は、関数または NumPy の ufunc です。dict での置き換えは map を使います。

欠損値が、関数に渡されないと考える

修正: map の関数には、既定では欠損値も渡されます。na_action='ignore' を付けたときだけ、渡されません。

確認問題

Q1map に渡した dict にない値は、結果でどうなる?

答え: NaN になる

公式の Notes に、dict にないキーの値は NaN に変換されると書かれています。

Q2map で欠損値を関数に渡さない引数は?

答え: na_action='ignore'

公式は、'ignore' なら NaN をマッピングに渡さず、そのまま伝えると書いています。

Q3apply で、値のあとに追加の位置引数を渡す引数は?

答え: args

公式は、args を、func に値のあとで渡される位置引数のタプルとしています。

Q4dict での置き換えに使うのは、map と apply のどちらか?

答え: map

公式は、map が dict や Series を受け取ると書いています。

到達チェック

  • map が dict や Series を取れることを言える
  • dict にない値が NaN になることを言える
  • na_action='ignore' の役割を説明できる
  • apply の args の役割を答えられる

同じ資格で次に知りたいこと

よくある質問

Qmapとapplyの違いは?

A

map は dict・Series・関数で値を置き換え、apply は関数や NumPy の関数を各値に使います。apply は args で追加の引数を渡せます。

Qmapで値がNaNになるのはなぜですか?

A

渡した dict に、その値がキーとして載っていないためです。もとから欠損値の行も NaN のままです。

QmapでNaNを関数に渡さないには?

A

na_action='ignore' を指定します。

Qデータ分析試験の範囲?

A

本サイトの第4章 pandas で扱います。出題の形式や範囲は、受験前に公式の案内で確認してください。

次に見る比較

執筆: AI資格ドリル編集部(運営者情報を見る)