用語比較
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.map | Series.apply |
|---|---|---|
| 渡せるもの | 関数・dict・Series | 関数・NumPy の ufunc |
| dict にない値 | NaN になる(__missing__ を持つ dict なら、その既定値) | dict は渡さない |
| 欠損値の扱い | na_action='ignore' で、欠損値を関数に渡さない | na_action の引数はない |
| 追加の引数 | 公式のシグネチャに args はない | args で位置引数を渡せる |
| 戻り値 | 元と同じ index の Series | Series。関数が Series を返すと DataFrame |
Python3エンジニア認定データ分析試験の学習に使う書籍(Amazon)
PRどこで迷っているかを切り分ける
コードやラベルを、別の名前に置き換えたい人
map に dict を渡します。キーに対応する値へ、各値が置き換わります。
値ごとに計算をして、引数も渡したい人
apply を使います。args に位置引数を渡せるので、引く値などを関数の外から指定できます。
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
置き換えか、計算かを決める
対応表で置き換えるなら map、計算なら apply か map の関数です。
- 2
対応表を使うなら、漏れを確かめる
dict のキーにない値は
NaNになります。 - 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 の役割を答えられる
関連ページで確認する
同じ資格で次に知りたいこと
- groupbyのaggとtransformの違い|グループごとに1行へまとめるか、元と同じ行数で返すか(Python3データ分析)
pandasのgroupbyで使うaggregate(agg。グループごとの要約値)とtransform(元と同じindexの結果)の違いを、行数、index、使いどころで整理します。pandas公式ユーザーガイドの例で、animalsのgroupby("kind").sum()がcatとdogの2行になり、cumsum()が元の5行のままになる点つきです。
- np.sortとnp.argsortの違い|並べ替えた値か、並べ替える順番の添字か(Python3データ分析)
NumPyのnp.sort(並べ替えた配列のコピー)とnp.argsort(並べ替える順番を表す添字の配列)の違いを、返り値、元の配列との関係、使いどころで整理します。NumPy公式リファレンスの例のx = np.array([3, 1, 2])でnp.argsort(x)がarray([1, 2, 0])になる点つきです。
- sort_valuesとsort_indexの違い|列の値で並べるか、行のラベルで並べるか(Python3データ分析)
pandasのsort_values(列などの値で並べ替え)とsort_index(行や列のラベルで並べ替え)の違いを、並べる基準、by引数、欠損値の扱いで整理します。pandas公式リファレンスの例で、col1の値で並べると
NaNが末尾になり、indexで並べると1・29・100・150・234の順になる点つきです。
よくある質問
Qmapとapplyの違いは?
map は dict・Series・関数で値を置き換え、apply は関数や NumPy の関数を各値に使います。apply は args で追加の引数を渡せます。
Qmapで値がNaNになるのはなぜですか?
渡した dict に、その値がキーとして載っていないためです。もとから欠損値の行も NaN のままです。
QmapでNaNを関数に渡さないには?
na_action='ignore' を指定します。
Qデータ分析試験の範囲?
本サイトの第4章 pandas で扱います。出題の形式や範囲は、受験前に公式の案内で確認してください。
次に見る比較
- G検定・DS検定・統計検定2級で重なる用語10語の比較
同じ名前の用語の定義と収録章を、資格ごとに並べます。
- ベイズの定理と条件付き確率の違い(統計検定2級の式と計算例)
求める確率の向きの違いと、陽性になる確率の計算例を確かめます。
- 紛らわしい用語ペア早見表
混同しやすい用語の違いと判定の手掛かりを、資格別の一覧で確かめます。
執筆: AI資格ドリル編集部(運営者情報を見る)
