1. ホーム
  2. python

[解決済み] Pandasのmap、applymap、applyメソッドの違い

2022-03-16 06:10:57

質問

これらのベクトル化手法は、どのような場合に使用するのか、基本的な例を挙げて教えてください。

なるほど mapSeries メソッドであるのに対し、残りのメソッドは DataFrame メソッドを使用します。私は混乱しました applyapplymap というメソッドがありますが。なぜDataFrameに関数を適用するメソッドが2つあるのでしょうか?また、使い方を説明する簡単な例もあれば最高です。

どのように解決するのですか?

比較 map , applymap そして apply : コンテキストの重要性

最初の大きな違い 定義

  • map はシリーズのみで定義されます
  • applymap は DataFrames のみで定義されています。
  • apply は両方に定義されています。

2つ目の大きな違い。 入力論証

  • map アクセプト dict s, Series またはcallable
  • applymapapply callable のみ受け付けます。

3つ目の大きな違い ビヘイビア

  • map は直列の要素です。
  • applymap はDataFramesの要素です。
  • apply も要素ごとに動作しますが、より複雑な操作や集計に適しています。動作や戻り値は関数に依存する。

4つ目の大きな違い(最も重要な違い)。 使用例

  • map は、あるドメインから別のドメインに値をマッピングするためのものなので、パフォーマンスに最適化されています (例, df['A'].map({1:'a', 2:'b', 3:'c'}) )
  • applymap は、複数の行/列にわたる要素単位の変換に適しています(例. df[['A', 'B', 'C']].applymap(str.strip) )
  • apply は、ベクトル化できない任意の関数を適用するためのものです(例. df['sentences'].apply(nltk.sent_tokenize) ).

こちらもご覧ください pandas apply()をコードで使いたい(使いたくない)のはどんなとき? を使用する最も適切なシナリオについて、しばらく前に作成した記事を参照してください。 apply (あまり多くはないですが、いくつかあります。) applyは一般的に 遅い ).


まとめ

脚注

  1. map 辞書/シリーズを渡すと、その辞書/シリーズのキーを元に要素をマッピングします。欠落した値は NaNを出力する。

  2. applymap は、最近のバージョンでは、いくつかの操作に対して最適化されています。そのため applymap よりもわずかに速い。 apply で というケースもあります。私の提案は、両方をテストして、うまくいく方を使うことです。 の方が良い。

  3. map は、要素ごとのマッピングと変換に最適化されています。辞書や系列を含む操作では、パンダは以下のことを可能にします。 は、より高速なコードパスを使用することでパフォーマンスを向上させます。

  4. Series.apply は,集約操作の場合はスカラーを,そうでない場合はシリーズを返す。同様に DataFrame.apply . ただし apply もまた のような特定のNumPy関数で呼び出された場合、ファストパスを使用します。 mean , sum など。