@kyanny's blog

My thoughts, my life. Views/opinions are my own.

Kaggle: Pandas のコースに着手: Lesson 3

もはや 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