漢の機械学習ブログ(勉強中)

データサイエンティストを目指して日々奮闘しています。

drop()でDataFrameで指定した"以外"の行列を抽出する方法

pandasで指定した以外の行が欲しい

pandasの機能drop()を使えば、指定した以外の行列を抽出できる。

(勉強中のため至らぬ点がありましたら申し訳ございません。。。)

使用例

簡単な例を以下に示す。

使用させていただいたデータはscikit-learnでロードできるirisデータ。

実行すると以下のような結果になる。

 

*実行結果
元々のデータ sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) 0 5.1 3.5 1.4 0.2 1 4.9 3.0 1.4 0.2 2 4.7 3.2 1.3 0.2 3 4.6 3.1 1.5 0.2 4 5.0 3.6 1.4 0.2 指定した行以外の行を抽出したデータ sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) 1 4.9 3.0 1.4 0.2 2 4.7 3.2 1.3 0.2 4 5.0 3.6 1.4 0.2 5 5.4 3.9 1.7 0.4 6 4.6 3.4 1.4 0.3 指定した列以外を抽出したデータ sepal width (cm) petal width (cm) 0 3.5 0.2 1 3.0 0.2 2 3.2 0.2 3 3.1 0.2 4 3.6 0.2 元々のデータ sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) 0 5.1 3.5 1.4 0.2 1 4.9 3.0 1.4 0.2 2 4.7 3.2 1.3 0.2 3 4.6 3.1 1.5 0.2 4 5.0 3.6 1.4 0.2

指定した以外の行を抽出したデータでは、もともとのデータからあらかじめdrop_listに入れておいた0,3行目以外のデータが格納されている。

同じく列のデータでは、指定した列名以外のデータが格納されている。

 

また、inplaceをFalseにしている限り、もともとのDataFrameに影響は及ばない。

逆に、もともとのDataFrameから指定した行を消去したい場合は、inplaceをTrueにすればよい。

 

引数のaxisは、axis=0なら行名を、axis=1なら列名を指定できる。

デフォルトはaxis=0に設定されているため、記述が無ければ行を指定することになる。

 

drop()のリファレンスは以下のリンクから。

pandas.pydata.org

経緯

機械学習のコードを書いているときに、特徴量のt検定を行った後、P値>0.05以外の特徴量で学習を行いたかった。

pandasの抽出機能を使って、条件に当てはまるもの以外の要素を抽出する方法がなかなかわからなかった。

そんな中drop()という便利な関数を見つけたので、自分用に残しておく。

drop()は、本来(というかそのまんま)指定した行や列を消去するために使われるメソッドなのかな?

指定した以外の抽出=指定した行列の消去であることに気づくのが遅かった。。。

他にも機能はあるだろうが、自分の扱う範囲ではこれだけ知ってれば大丈夫かなと思う。