Pandas DataFrame DataFrame.dropna()関数

Minahil Noor 2023年1月30日
  1. pandas.DataFrame.dropna() の構文
  2. コード例:行をドロップする DataFrame.dropna()
  3. コード例:列を削除するための DataFrame.dropna()
  4. コード例:DataFrame.dropna() with how = all
  5. コード例:指定されたサブセットまたは thresh を使用する DataFrame.dropna()
  6. コード例:inplace = True を指定する DataFrame.dropna()
Pandas DataFrame DataFrame.dropna()関数

pandas.DataFrame.dropna() 関数は、null 値を含む行または列をドロップすることにより、DataFrame から null 値(欠損値)を削除します。

NaNNot a Number)と NaTNot a Time)は null 値を表します。DataFrame.dropna() はこれらの値を検出し、それに応じて DataFrame をフィルタリングします。

pandas.DataFrame.dropna() の構文

DataFrame.dropna(axis, how, thresh, subset, inplace)

パラメーター

axis 軸を行または列のいずれかに決定します。
0 または 'index'の場合、欠損値を含む行を削除します。
1 または 'columns'の場合、欠損値を含む列を削除します。デフォルトでは、その値は 0 です。
how このパラメーターは、関数が行または列をドロップする方法を決定します。any または all の 2つの文字列のみを受け入れます。デフォルトでは、any に設定されています。
any は、null 値が含まれている場合に行または列を削除します。
all は、すべての値が欠落している場合に行または列を削除します。
thresh これは、行または列のドロップを防止する非欠損値の最小数を指定する整数です。
subset ドロッププロシージャを指定する行または列の名前を持つ配列です。
inplace これは、True に設定されている場合、呼び出し元の DataFrame を変更する Boolean 値です。デフォルトでは、その値は False です。

戻り値

渡されたパラメータに応じて、行または列がドロップされたフィルタリング済みの DataFrame を返します。

コード例:行をドロップする DataFrame.dropna()

デフォルトでは、軸は 0、つまり行なので、すべての出力で行が削除されます。

import pandas as pd

dataframe=pd.DataFrame({'Attendance': {0: 60, 1: None, 2: 80,3: None, 4: 95},
                    'Name': {0: 'Olivia', 1: 'John', 2: 'Laura',3: 'Ben',4: 'Kevin'},
                    'Obtained Marks': {0: None, 1: 75, 2: 82, 3: 64, 4: None}})
print(dataframe)

DataFrame の例は次のとおりです。

   Attendance    Name  Obtained Marks
0        60.0  Olivia             NaN
1         NaN    John            75.0
2        80.0   Laura            82.0
3         NaN     Ben            64.0
4        95.0   Kevin             NaN

この関数のすべてのパラメーターはオプションです。パラメータを渡さない場合、関数は単一の null 値を含むすべての行を削除します。

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": {0: 60, 1: None, 2: 80, 3: None, 4: 95},
        "Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
        "Obtained Marks": {0: None, 1: 75, 2: 82, 3: 64, 4: None},
    }
)
dataframe1 = dataframe.dropna()
print(dataframe1)

出力:

   Attendance   Name  Obtained Marks
2        80.0  Laura            82.0

単一の欠損値を含むすべての行を削除しました。

コード例:列を削除するための DataFrame.dropna()

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": {0: 60, 1: None, 2: 80, 3: None, 4: 95},
        "Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
        "Obtained Marks": {0: None, 1: 75, 2: 82, 3: 64, 4: None},
    }
)
dataframe1 = dataframe.dropna(axis=1)

print(dataframe1)

出力:

     Name
0  Olivia
1    John
2   Laura
3     Ben
4   Kevin

DataFrame.dropna() メソッドで axis = 1 を設定したため、1つの欠損値を含むすべての列が削除されました。

コード例:DataFrame.dropna() with how = all

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": {0: 60, 1: None, 2: 80, 3: None, 4: 95},
        "Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
        "Obtained Marks": {0: None, 1: 75, 2: 82, 3: 64, 4: None},
    }
)

dataframe1 = dataframe.dropna(axis=1, how="all")
print(dataframe1)

出力:

   Attendance    Name  Obtained Marks
0        60.0  Olivia             NaN
1         NaN    John            75.0
2        80.0   Laura            82.0
3         NaN     Ben            64.0
4        95.0   Kevin             NaN

how パラメータの値が all に設定されているため、行のすべての値が null になるはずなので、欠損値を含む行は削除されません。

指定された軸にすべての値がない場合、howall に設定されていても、DataFrame.dropna() メソッドはその軸をドロップします。

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": {0: 60, 1: None, 2: 80, 3: None, 4: 95},
        "Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
        "Obtained Marks": {0: None, 1: None, 2: None, 3: None, 4: None},
    }
)

print(dataframe)
print("--------")
dataframe1 = dataframe.dropna(axis=1, how="all")
print(dataframe1)

出力:

   Attendance    Name Obtained Marks
0        60.0  Olivia           None
1         NaN    John           None
2        80.0   Laura           None
3         NaN     Ben           None
4        95.0   Kevin           None   Attendance    Name
0        60.0  Olivia
1         NaN    John
2        80.0   Laura
3         NaN     Ben
4        95.0   Kevin

コード例:指定されたサブセットまたは thresh を使用する DataFrame.dropna()

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": {0: 60, 1: None, 2: 80, 3: None, 4: 95},
        "Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
        "Obtained Marks": {0: None, 1: 75, 2: 82, 3: 64, 4: None},
    }
)

dataframe1 = dataframe.dropna(thresh=3)
print(dataframe1)

出力:

   Attendance   Name  Obtained Marks
2        80.0  Laura            82.0

thresh の値は 3 です。これは、ドロップを防ぐために、少なくとも 3つの空でない値が必要であることを意味します。

subset を指定することもできます。

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": {0: 60, 1: None, 2: 80, 3: None, 4: 95},
        "Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
        "Obtained Marks": {0: None, 1: 75, 2: 82, 3: 64, 4: None},
    }
)

dataframe1 = dataframe.dropna(subset=["Attendance", "Name"])
print(dataframe1)

出力:

   Attendance    Name  Obtained Marks
0        60.0  Olivia             NaN
2        80.0   Laura            82.0
4        95.0   Kevin             NaN

Attendance および Name 列に基づいて、欠損値のある行を削除します。他の列(ここでは Obtained Marks)の値のみに欠損値がある場合、行はドロップされません。

コード例:inplace = True を指定する DataFrame.dropna()

DataFrame.dropna() は、inplaceTrue に設定されている場合、呼び出し元の DataFrame をインプレースで変更します。

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": {0: 60, 1: None, 2: 80, 3: None, 4: 95},
        "Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
        "Obtained Marks": {0: None, 1: 75, 2: 82, 3: 64, 4: None},
    }
)
dataframe1 = dataframe.dropna(inplace=True)
print(dataframe1)

出力:

None

パラメータは呼び出し元の DataFrame をインプレースで変更し、None を返します。

関連記事 - Pandas DataFrame