べくとりうむ.py Written by TicTak(※現在ブログ工事中のため、見づらい点があり申し訳ないです)

【Python Coding】pandasでデータフレームから値を削除

code python

こんにちは、TAKです。
今回はpythonのpandasを用いて、データフレームから不要な行列の値を削除する方法を紹介していきます。

必要に応じてデータフレームから行列の値を削除出来るようになると、

・ データ分析の対象としているデータ自体をシンプルにすることが可能
・ より良いモデルの構築にも繋がる

といったメリットがあるので、是非使えるようにしてみてください。

【こんな人に読んで欲しい記事です】

● pandasを使ってデータフレームから行列の値を削除出来るようにしたい方

● データ分析時に不要な特徴量を削除出来るようにして、モデル精度をあげたい方

必要ライブラリのインポート

今回使う必要ライブラリのインポート

今回使うライブラリを最初にインポートしておきます。
不要な行列値の削除はpandasで操作出来ますが、今回はアヤメデータセットを用いるので合わせてsklearnライブラリもインポートしています。

利用データの作成

アヤメデータを使えるように準備していきます。
今回はデータセットから行列を削除することが目的なので、作り方の詳細説明は省きます。

今回使うアヤメデータをDataFrame化した結果

少し補足しておくと、説明変数のカラム名(デフォルト)には「(cm)」があってデータ取得時に扱いづらいので変更しています。また、目的変数のカラム名は「name」としています。

このデータセットを用いて不要な行列の値を削除出来るようにしていきます。
データフレームから行列の値を削除する場合、ともに`df.drop()`の方法を使う点がポイントです。

データフレームから「行」の値を削除する方法

まず最初に、不要な「行」の値を削除する方法を紹介します。
先ほど作ったデータフレームからindexが3(つまり4行目)のデータを削除したコードが以下となります。

index=3の行を削除したコード

その結果、インデックスを示す一番左側の数字「3」が削除されていることがわかりますね。
コード内では「axis=0」と意図的に設定していますが、「行」の値を削除する場合にはデフォルト設定で「axis=0」となっているので、コードから削除してもOKです。

続いて、rangeを用いて1行目から99行目のデータを3行ごとに削除するようなことも出来ます。

rangeを用いて、1行目から99行目まで3行ごとに削除した結果

これも一番左側の数値を見てもらうとわかりますが、「1」を起点として「3行」ずつ削除されていますね。
以上が、データフレームから不要な「行」の値を削除する方法でした。

個人的には、データフレームから「行」の値を削除するケースは少なく、どちらかと言うと「列」の値を削除するケースが非常に多いです。理由としては、テーブルデータを前提とした場合、列は何かしらの「特徴量」を意味しており、データ分析時に不要な特徴量を削除するニーズが高いためです。

データフレームから「列」の値を削除する方法①|1つのカラム

それでは続いて、データフレームから不要な「列」の値を削除する方法を紹介していきます。
まず、カラム名「name」を削除するようなシンプルな例を見ていきましょう。

不要な列「name」を削除した場合

先ほどの「行」の値を削除した場合と比べて、「axis=1」が指定されている点が異なりますね。
「列」の値を削除したいのに、「axis=0」の状態になっているとエラーとなるので注意です。

ここで重要なポイントをまとめておきます。

● データフレームから「行」の値を削除する場合 : 「axis=0」を設定(デフォルト)

● データフレームから「列」の値を削除する場合 : 「axis=1」を設定

【小ネタ】「列」の値を削除した後のデータフレーム

ここで一つ小ネタというか、一応知っておいた方がいいかなといった内容を紹介しておきます。
それは何かと言うと、元のデータフレームは変わっていないという点です。

先ほどの列(name)を削除した後のデータフレームを確認した結果が以下です。
もともとあったデータフレームは変更されていない点を確認してみてください。

元のデータフレームを確認した結果

ではもし、変更内容を反映させたい場合はどうすれば良いでしょうか?
一つ目の方法は、新しい変数に格納してあげる方法です。

変更内容を反映させる方法①|新しい変数に格納

二つ目の方法は、drop引数の「inplace」をTrueに設定する方法です。
こうすることで、元々あったデータフレーム自体に変更を直接変更を加えることが可能です。

変更内容を反映させる方法②|drop引数「inplace」をTrueにする

必要に応じて使えるようにしてみてください。

データフレームから「列」の値を削除する方法②|複数カラム

最後に、複数の列を削除する方法も紹介しておきたいと思います。
複数の列を削除したい場合には、対象となる列を変数で格納しておき、それを指定するだけでOKです。

複数の列を削除する場合のコード

「列」の削除となるので、「axis=1」の指定を忘れないようにしてくださいね。

さいごに

今回は、pythonのpandasを用いてデータフレームから不要な行列の値を削除する方法を紹介してきました。

今回紹介した方法以外にも「del」を用いた方法もありますが、「drop」が使えるようになれば十分かなと思います。

では今回はこのへんで。またね。