Python
 Computer >> コンピューター >  >> プログラミング >> Python

【Pandas入門】すべての値がnull(NaN)の列を削除する方法

はじめに

Pandasでデータを扱っていると、すべての値が欠損値(NaN)になっている不要な列が出てくることがあります。このような列を削除するには、dropna()メソッドを使い、「how」パラメータを「all」に設定します。

how='all'

「how='all'」を指定すると、「すべての値がNaNである行・列」だけが削除対象になります。さらに「axis=1」を指定することで、行ではなく列方向に対して処理が適用されます。

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

まず、必要なライブラリをエイリアス(別名)付きでインポートしましょう。

import pandas as pd
import numpy as np

サンプルDataFrameの作成

次に、DataFrameを作成します。ここでは「Result」列のすべての値を、NumPyのnp.NaNを使って欠損値に設定しています。

dataFrame = pd.DataFrame(
    {
        "Student": ['Jack', 'Robin', 'Ted', 'Robin', 'Scarlett', 'Kat', 'Ted'],
        "Result": [np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN]
    }
)

このDataFrameには2つの列があります。「Student」列には名前のデータが入っていますが、「Result」列はすべてNaNのため、削除候補となります。

null値のみの列を削除する

すべての値がnullの列を削除するには、dropna()メソッドに必要なパラメータを指定して呼び出します。

dataFrame.dropna(how='all', axis=1, inplace=True)

各パラメータの意味は以下の通りです。

  • how='all':すべての値がNaNの場合にのみ削除する
  • axis=1:列を対象に処理を行う(0または省略すると行が対象)
  • inplace=True:元のDataFrameを直接変更する

完全なコード例

以下に実行可能なコード全体を示します。

import numpy as np
import pandas as pd

# DataFrameを作成
dataFrame = pd.DataFrame(
    {
        "Student": ['Jack', 'Robin', 'Ted', 'Robin', 'Scarlett', 'Kat', 'Ted'],
        "Result": [np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN]
    }
)

print("元のDataFrame ...\n", dataFrame)

dataFrame.dropna(how='all', axis=1, inplace=True)
print("\n削除後のDataFrame ...\n", dataFrame)

実行結果

上記のコードを実行すると、次のような出力が得られます。

元のDataFrame ...
     Result   Student
0      NaN      Jack
1      NaN     Robin
2      NaN       Ted
3      NaN     Robin
4      NaN  Scarlett
5      NaN       Kat
6      NaN       Ted

削除後のDataFrame ...
   Student
0     Jack
1    Robin
2      Ted
3    Robin
4 Scarlett
5      Kat
6      Ted

まとめ

このように、dropna(how='all', axis=1)を使えば、すべての値が欠損値(NaN)である列を簡単に削除できます。逆に、一部でも値が入っている列は残るため、データクリーニングの際に非常に便利な手法です。なお、行を削除したい場合は「axis=0」(デフォルト)を指定してください。

  1. 【Python・Pandas】IndexオブジェクトのNaN値をfillna()で指定した値に置き換える方法

    PandasのIndexオブジェクトのNaN値を指定した値で埋める方法PandasのIndexオブジェクトに含まれるNaN(欠損値)を任意の値で置き換えるには、index.fillna()メソッドを使用します。SeriesやDataFrameと同様に、Indexオブジェクトでも欠損値の補完が可能です。まず、必要なライブラリをインポートします。import pandas as pd import numpy as npNaN値を含むインデックスの作成続いて、NaN値をいくつか含むPandasインデックスを作成します。index = pd.Index([50, 10, 70, np.nan, 90

  2. Python Pandas入門:DataFrame内のNaN(欠損値)を0に置き換える方法

    PandasのDataFrameに含まれるNaN(欠損値)を0に置き換えるには、fillna()メソッドを使用します。このメソッドは、データクレンジングや前処理の際に非常によく使われる基本的なテクニックです。例として、以下のようなCSVファイル(Microsoft Excelで開いた状態)があるとします。このデータには一部NaN値が含まれています。手順1:必要なライブラリをインポートするまず、Pandasライブラリをインポートします。import pandas as pd手順2:CSVファイルからDataFrameを読み込む次に、read_csv()メソッドを使ってCSVファイルのデータをDa