もはや 30 Days of ML とは関係なくやっている。
Summary Functions and Maps | Kaggle
Summary functions
DataFrame や Series の統計情報を取得する関数が色々ある。
df.describe() df.col.mean() df.col.unique()
df.col.value_counts() で uniq -c
みたいにユニークな要素とその数を得る。
Maps
この map は写像(Ruby でいう Enumerable#map)の意味。データを変換する。二種類の方法がある。
一つ目は Pandas の map() 関数を使う。
doubled = df.col.map(lambda x: x ** 2)
二つ目は Pandas の apply() 関数を使う(これ去年も勉強した気がする)。map() は Series 単位で作用するのに対し、apply() は DataFrame 全体に作用する。
def double(x): return x ** 2 df.apply(double, axis='columns')
axis オプションは重要。axis='columns' だと、列内の行を全て処理する。axis='index' だと、行内の列を全て処理する(縦横の方向が逆)。後者の場合は与える関数も、列に作用する処理が書かれている必要がある。
axis オプションの使い分けは、まだあやふや。
map() apply() は新しい DataFrame / Series を返す。元の DataFrame / Series は不変。
Pandas はデータ操作手段を色々用意してるので、map() apply() を使わずに済むことも多い(らしい)。
df.price - df.price.mean()
df.first_name + " " + df.last_name