こんにちは,shun(@datasciencemore)です!!
今回はmapについて学習していきます.
mapは,シリーズの各行に対して関数を適用するメソッドです.
イメージとしてはこのようになります.
シリーズと関数をmapに適用すると,シリーズの各行に関数を適用した結果が出力されます.
これだけだとよくわからないと思うので,具体例で確認してみましょう.
0.準備
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# パッケージ読み込み import pandas as pd import numpy as np import seaborn as sns # データフレームの表示行数を指定 pd.set_option('display.max_rows',8) # データ読み込みと列選択(メソッドチェーン) df = \ sns\ .load_dataset('diamonds')\ .filter(["depth", "table", "color"]) |
1.mapの基本
例えば,以下のようなシリーズと関数を考えます.
シリーズ:df(ダイヤモンドデータ)のcolor列
関数:EとIであればそのままで,EとI以外であればnot_E_Iと出力する.
このシリーズと関数をmapに適用すると,以下に示すシリーズを出力します.
1 2 3 4 5 6 7 8 9 10 11 |
# 関数 def func(x): if x == "E": return("E") elif x == "I": return("I") else: return("not_E_I") # map適用 df["color"].map(func) |
2.mapとassign
mapはassignと相性がよく,併用することが多いです.
例えば,このように条件が複数あるような処理についてもmapとassignを併用すれば,比較的簡単にコーディングすることができます.
今回は,assignを使用して先程の処理(EとIであればそのままで,EとI以外であればnot_E_Iと出力する.)によって得たシリーズを,dfの新しい列としてあげましょう.
1 2 3 4 5 |
# assignを使用 df_rev = df.assign(color_rev = lambda x:x["color"].map(func)) # データフレーム確認 df_rev |
3.mapと辞書
mapには,少し特別な処理があります.
基本的にmapは関数を適用するのですが,関数ではなく,辞書を適用することもできます.
その場合,辞書のキーに変換前の文字列を,辞書のデータに変換後の文字列を設定し,mapを適用します.
例えばこの例だと
key1がのdata1に
kye2がdata2に
kye3がdata3に
変換されます.
このやり方も時々使用するので覚えておくと便利です.
1 2 3 4 5 6 7 |
# 辞書使用 # E ⇒ e # I ⇒ i # not_E_I ⇒ not_e_i df_rev["color_rev"].map( {"E":"e", "I":"i", "not_E_I":"not_e_i"} ) |
まとめ
今回はmapについて学習してきました.
- mapの基本
- mapとassign
- mapと辞書
mapは最初は概念を理解するのが難しいですが,慣れるとfor文よりも楽にコーディングできて非常に便利です.
使いこなせるように練習しましょう!
それでは,お疲れさまでした!!
次回
-
【pandas】apply:データフレームの行処理【繰り返し処理】
こんにちは,shun(@datasciencemore)です!! 今回はapplyについて学習していきます. applyは,データフレームの各行に対して関数を適用するメソッドです. イメージとしてはこ ...
続きを見る