@kyanny's blog

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

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

Indexing, Selecting & Assigning | Kaggle

Conditional selection

DataFrame に対してデータ取得を条件でフィルタリングできる。これは強力。

df.col == "Something" これは Series を取得する。DataFrame 内の各行について条件を適用した結果、ということ。

loc[] の中にも条件を書ける。

df.loc[df.col1 == "Something"] これは DataFrame を取得する。こちらがフィルタリング。SQL でいうところの WHERE 句。

df.loc[(df.col == "Something") & (df.col2 > 0.5)] 条件は複数書ける。AND 条件には & を使う。&& とか and ではない。なぜだ。逆に OR 条件には | (パイプ)を使う。

df.loc[(df.col == "Something") | (df.col2 > 0.5)]

Pandas には他にもビルトインの条件取得記法がある。

isin は SQL でいう IN 句のように使える。関数なので isin(args) と書く。

df.loc[df.col1.isin(["Something", "Else")]

isnull / notnull は値が None かどうか判定する。これはコンペのデータ前処理コードで見たことがある。これも関数なので isnull() と書く。

df.loc[df.col1.notnull()]

この節の内容は実際のデータで何度もコードを書いてみないと身につかなそう。

Assigning data

DataFrame に値を assign するには、普通に = で代入すればよい。

df['col2'] = 'Hello' とすると全ての行の col2 列に 'Hello' というデータが入る。

range() を使うと連続した値を入れることができる。通し番号を振りたいときに便利。

df['col3'] = range(0, len(df)) みたいな感じ。range() が返すリストの数が df の行数より多いとエラーになる。

df.col4 = ... という風にはかけない。Pandas は値をアサインする時は属性によるアクセスを許可しない、という警告が出る。


今回はレッスンに対するエクササイズも結構なボリュームだった。

Exercise: Indexing, Selecting & Assigning | Kaggle

こちらは前回の続きの個人練習用 notebook

Fork of notebook74634c4af3 | Kaggle