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