pandasの基本操作を理解していない同士たちへ


pandasの基本操作を理解していない同士たちへ

pandasのdf[]をそれっぽく書いてエラー連発していたやつちょっと出てこい!

pandasでデータの前処理1をするときに、pandasではnumpyと同じようなスライスが使えるんだな。しかも、数字だけでなく、条件を指定することでいい感じにデータを抽出してくれるんだな。
よーしdf[hoge]と書いて、
エラーを出してhogeをめっちゃ工夫してみるけどいっこうにエラーが鳴り止まないという経験をしたデータ分析初心者はいないだろうか?いや、いる。少なくともここに一人。

多分そいつは、
df['hoge']df.loc['hoge'](df.iloc[fuga])の違いを理解していないはずだ。

いいか、データフレームのスライスは列の指定だ。データフレームのスライスでは行の指定はできない。

いい感じに[]を重ねれば、いずれはいい感じに行と列をして、臨んでいる新しいデータフレームを抽出できるはずだと思っているんじゃないか?
それは無理だ。いやできるかもしれないが、複雑な条件を指定することになると頭の中が訳わからなくなってしまうこと不可避で、作業効率が非常に悪くなってしまう。

今振り返れば、誤解の原因は、Seriesだとスライスで、行の指定になることだった。
そして、しっかりとpandasの挙動を理解せずに、雰囲気だけでpandasを利用していたことだ。

私のようなpandas素人独学者のために、
改めて、pandasの基本操作をまとめておきたい。

pandasの基本操作

を指定しての抽出

df['column名'] # 1列のみ指定
df[['column名1', 'column名2', ...]] # 複数列指定

行と列を指定しての抽出

df.loc[:] # indexのみの指定
df.loc[:, ['column名', ...]] # 列を指定の抽出
df.loc[1:5, ['column名']] # indexの範囲を指定の抽出

行の抽出

df.loc[df['bar'] == condition] # 指定列の中から条件を満たす行を抽出

ほとんどこの記事から抜粋しただけなので、こちらを見てもらったほうがよい。

参考

pandasの基本操作 - Qiita
Python pandas データ選択処理をちょっと詳しく <前編> - StatsFragments


  1. 基礎集計や可視化をしてデータの特徴を把握したり、欠損値や異常値を探しだして削除したり補完したりすること