つまりなにしたの?
PandasのDataFrameで
例えば
「曜日の入った列があった時に、月曜日フラグ列、火曜日フラグ列、…に展開する」
みたいなことをやった。
ユニークなパラメータごとにフラグ列を作るといえばいいのかな。
ベストプラクティスかはわからないけど僕はよくやるやり方をPandasの小ネタとして紹介する。
これを最初やろうとした時、検索クエリがわからなくて苦労した。
Pandas不慣れなのでもっといい方法あったらコメントとかコメント付きツイートとかリプライください!
Pandas
Pythonでデータ分析をやるならこれ!っていうレベルのパッケージ。
DataFrameはできることが多いけど多すぎて知らないと使いこなせなくてとっつきにくい。
使ってると指数関数的に便利になっていく感覚に陥る(諸説ある)
pandas: powerful Python data analysis toolkit — pandas 0.21.1 documentation
この辺を試しつつ、最初不便に感じても負けずに使っていると、いつの間にか抜け出せなくなってた。
qiita.com
入力と出力
いまいち今日紹介しようと思って内容が伝わりにくいと思うので、変換前と変換後を提示する。
*1
処理の方針
- カテゴリが入った系列を用意する
- ユニークなカテゴリを抽出する
- もとの系列にユニークなカテゴリ名を入れた列を作る
- ユニークなカテゴリ名をいれた列にTrue/Falseの値を入れる
やってみた
import pandas as pd # カテゴリが入った系列を用意する(ここでは曜日にした) dotw = ['月', '火', '水', '木', '金', '土', '日', '月', '火', '水', '木', '金', '土', '日'] dotw_df = pd.DataFrame({'dotw' :dotw}) # ユニークなカテゴリ名を抽出してFor文にした for day in dotw_df.dotw.unique(): # もとの系列にユニークなカテゴリ名を入れた列を作る # ユニークなカテゴリ名を入れた列にTrue/Falseの値を入れる dotw_df['dotw_'+day] = (dotw_df.dotw == day) dotw_df
実行結果付きのNotebookはこちら
github.com
おわりに
Pandas楽しい。
データマイニングやっている大学の後輩がPandasよく使うらしいので、次、行き詰った相談してみる。
*1:再掲