Pandas.Seriesの各要素に対して関数を適用させるmap関数!

こんにちは!インストラクターのフクロウです!この記事では、pd.Seriesの各要素に関数を適用するメゾット、mapについて紹介します。pd.Series.mapはSeries型版の(ほかの関数でもよく見る)map関数です。

この説明で概要がわからない人、この記事を読みすすめてmapメソッドの使い方を覚えちゃいましょう!

開発環境

この記事を書くために使った開発環境は以下のとおりです。

ライブラリのバージョンなど

  • OS="Ubuntu 18.04.1 LTS"
  • Python 3.7.0
  • Pandas 0.23.4

OSが異なっても基本的には同じ操作で記事中のプログラムは再現できるので、試してみてください!


【何から学べばいいかわからない…そんな悩みを解決します!】

完全無料ですぐわかる「プログラミング学習プラン診断」

・適性にあわせて学習プランを診断
・完全無料で気軽に診断できる
・学習の悩みもまるっと解決

さっそく診断してみる

mapのAPI

Series.map(arg, # 適用したい関数
           na_action=None)

mapメソッドで覚えておきたいのは第一引数です。第一引数に、Seriesの各要素に適用したい関数を渡しましょう。詳しい使い方は次のセクションで!また、mapのAPIについての詳細な解説は、以下の公式ドキュメントに書かれています。

mapの使い方

ライブラリのimportとデータ作成

まずは必要なライブラリのimportとサンプルのSeriesを作ります。

In [1]: import numpy as np

In [2]: import pandas as pd

In [3]: X = np.arange(0,10)

In [4]: X = pd.Series(X)

In [5]: X
Out[5]:
0    0
1    1
2    2
3    3
4    4
5    5
6    6
7    7
8    8
9    9
dtype: int64

シンプルな使い方

mapメソッドは、Seriesの先頭要素から終わりの要素まで、関数を適用していく機能を持ちます。イメージとしては、for文でリストのすべての要素に対して処理を行う感じです。

例として、test関数(😁の吹き出しに、関数が受け取った要素を表示している形の文字列を返す機能)をmapメソッドに使ってみます。

In [6]: def test(x):
   ...:         # mapの中で使う関数の例です。
   ...:         return f"😁<{x}"

In [7]: X.map(test)
Out[7]:
0    😁<0
1    😁<1
2    😁<2
3    😁<3
4    😁<4
5    😁<5
6    😁<6
7    😁<7
8    😁<8
9    😁<9
dtype: object

Xの中には0~9の数字でした。これをmapを介して全てtest関数に通した結果がOut[9]の表示です。しっかり最初から最後まで適用できているようですね。

また、mapでリストを返す関数を扱う場合の例も見ておきましょう。

In [8]: def test2(x):
   ...:         return [x, x**x]

In [9]: X.map(test2)
Out[9]:
0            [0, 1]
1            [1, 1]
2            [2, 4]
3           [3, 27]
4          [4, 256]
5         [5, 3125]
6        [6, 46656]
7       [7, 823543]
8     [8, 16777216]
9    [9, 387420489]
dtype: object

例えば2要素のリストを返す関数があったとき、もしかしたらDataFrameが出力されないかな?って思うかもしれません。

ですが残念ながら、このようなコンテナ型(複数要素をもったデータ型)はすべてobject型というdtype扱いになり、Series型が返ってきています。

これはtest2関数がSeries型を返すとしても、この関数をmapで適用した出力は「Series型を内包したSeries型」になります。


【なかなかエラーが解決できない…そんな悩みを解決します!】

登録無料で始められるプログラミングスクール「侍テラコヤ」

・回答率100%のQ&A掲示板でエラーを解決!
現役エンジニアとのオンライン相談で悩みを解決!
・50種類以上の教材で複数言語を習得!

侍テラコヤについて詳しく見る

まとめ

この記事では、pandas.Series.mapメソッドについて紹介しました。

mapメソッドの要点

  • mapメソッドはSeries型の各要素に引数に渡された関数を適用する機能
DataFrameのapply、applymapと並んで覚えておきたいPandasの基本操作なので、ぜひ使ってみてください!

プログラミング学習中、
誰かへ相談したいことはありませんか?

SAMURAI TERAKOYA

プログラミングはエラーの連続。作業を進めるなかで誰かに教えてほしい場面は多いですよね。

そんな悩みを解決できるのが、侍テラコヤです。登録無料で始められて、現役エンジニアとオンラインで相談できるほか、回答率100%のQA掲示版でプログラミングに関する悩みを解決します!

気になる方はぜひ詳細をご覧ください。

→侍テラコヤの詳細をみる

第一言語はPythonです。
皆さんRustやりましょう。

あなたの目的に合わせた
SAMURAI ENGINEERの運営サービス

SAMURAI ENGINEER Pro

未経験でも挫折しないプログラミングスクール

詳細はこちら

SAMURAI TERAKOYA

日本最大級のサブスク型オンラインITスクール

詳細はこちら

SAMURAI ENGINEER Freelance

「一人で稼げる」スキルを身につける

詳細はこちら
Close