【Python Coding】pandas “drop” でデータフレームから値を削除する方法を解説
こんにちは、たなです。
今回はpythonのpandasを用いて、データフレームから不要な行列の値を削除する方法を紹介していきます。
必要に応じてデータフレームから行列の値を削除出来るようになると「分析対象のデータをシンプルにできる」「精度の高いモデルを構築できる」といったメリットもあります。ぜひ使えるようにしてみてください。
本記事の内容
- データフレームの行列から値を削除する方法
- pandas “drop”の使い方とaxisの指定について
- 1つカラムデータ削除と複数カラムデータ削除の違い
僕のブログでは【完全ガイド】pythonの学習サイトをレベル別に紹介!【基礎から機械学習・人工知能までのロードマップ】という記事も公開しています。より高みを目指したい人は参考にしてみてください。
pythonの学習ロードマップへpandas “drop”を使ってデータフレーム値を削除する
必要ライブラリのインポート
今回使うライブラリを最初にインポートしておきます。
不要な行列値の削除はpandasで操作出来ますが、今回はアヤメデータセットを用いるので合わせてsklearnライブラリもインポートしています。
利用データの作成
アヤメデータを使えるように準備していきます。
今回はデータセットから行列を削除することが目的なので、作り方の詳細説明は省きます。
少し補足しておくと、説明変数のカラム名(デフォルト)には「(cm)」があってデータ取得時に扱いづらいので変更しています。また、目的変数のカラム名は「name」としています。
このデータセットを用いて不要な行列の値を削除出来るようにしていきます。
データフレームから行列の値を削除する場合、ともに`df.drop()`の方法を使う点がポイントです。
データフレームから「行」の値を削除する方法
まず最初に、不要な「行」の値を削除する方法を紹介します。
先ほど作ったデータフレームからindexが3(つまり4行目)のデータを削除したコードが以下となります。
その結果、インデックスを示す一番左側の数字「3」が削除されていることがわかりますね。コード内では「axis=0」と意図的に設定していますが、「行」の値を削除する場合にはデフォルト設定で「axis=0」となっているので、コードから削除してもOKです。
続いて、rangeを用いて1行目から99行目のデータを3行ごとに削除するようなことも出来ます。
これも一番左側の数値を見てもらうとわかりますが、「1」を起点として「3行」ずつ削除されていますね。以上が、データフレームから不要な「行」の値を削除する方法でした。
個人的には、データフレームから「行」の値を削除するケースは少なく、どちらかと言うと「列」の値を削除するケースが非常に多いです。理由としては、テーブルデータを前提とした場合、列は何かしらの「特徴量」を意味しており、データ分析時に不要な特徴量を削除するニーズが高いためです。
データフレームから「列」の値を削除する方法①(1つのカラム )
それでは続いて、データフレームから不要な「列」の値を削除する方法を紹介していきます。まず、カラム名「name」を削除するようなシンプルな例を見ていきましょう。
先ほどの「行」の値を削除した場合と比べて、「axis=1」が指定されている点が異なりますね。「列」の値を削除したいのに、「axis=0」の状態になっているとエラーとなるので注意です。
ここで重要なポイントをまとめておきます。
- データフレームから行の値を削除:“axis=0”を設定(デフォルト)
- データフレームから列の値を削除:“axis=1”を設定(自分で指定する)
【小ネタ】「列」の値を削除した後のデータフレーム
ここで一つ小ネタというか、一応知っておいた方がいいかなといった内容を紹介しておきます。それは何かと言うと、元のデータフレームは変わっていないという点です。
先ほどの列(name)を削除した後のデータフレームを確認した結果が以下です。
もともとあったデータフレームは変更されていない点を確認してみてください。
ではもし、変更内容を反映させたい場合はどうすれば良いでしょうか?
一つ目の方法は、新しい変数に格納してあげる方法です。
二つ目の方法は、drop引数の「inplace」をTrueに設定する方法です。こうすることで、元々あったデータフレーム自体に変更を直接変更を加えることが可能です。
必要に応じて使えるようにしてみてください。
データフレームから「列」の値を削除する方法②(複数カラム )
最後に、複数の列を削除する方法も紹介しておきたいと思います。
複数の列を削除したい場合には、対象となる列を変数で格納しておき、それを指定するだけでOKです。
「列」の削除となるので、「axis=1」の指定を忘れないようにしてくださいね。
まとめ:pandas “drop”を使えばデータフレームの行列から不要な値を簡単に削除できる
今回は、pythonのpandasを用いてデータフレームから不要な行列の値を削除する方法を紹介してきました。
今回紹介した方法以外にも「del」を用いた方法もありますが、「drop」が使えるようになれば十分かなと思います。
冒頭でも紹介しましたが、pythonの学習方法を【完全ガイド】pythonの学習サイトをレベル別に紹介!【基礎から機械学習・人工知能までのロードマップ】でまとめています。良ければあわせて読んでみてください。
【完全ガイド】pythonの学習サイトをレベル別に紹介!【基礎から機械学習・人工知能までのロードマップ】
pythonを極めたいすべての人に贈る学習ロードマップ。おすすめの学習サイトをレベル別に紹介しているので、pythonのレベルをあげていきたいと考えるすべての人に読んで欲しい記事です。これさえ読めば、自分に合っている学習方法やこれから目指すべき方向性がわかります。pythonライフ、楽しんでいきましょう。
良いpythonライフを。