データ解析に必須!PythonのDataFrameのdropnaで欠損値を一発除外!

スポンサーリンク

dropnaメソッドは、欠損値を含む行や列を除外することができるPandasのDataFrameのメソッドです。具体的には、NaNまたはNoneが含まれる行や列を取り除くことができます。

使い方

以下は、基本的な使い方です。

import pandas as pd

# データフレームの作成
df = pd.DataFrame({'col1': [1, 2, None, 4], 'col2': [None, 6, 7, 8], 'col3': [9, 10, 11, 12]})

print(df)
   col1  col2  col3
0   1.0   NaN     9
1   2.0   6.0    10
2   NaN   7.0    11
3   4.0   8.0    12


# 欠損値を含む行を削除
df.dropna()
   col1  col2  col3
1   2.0   6.0    10
3   4.0   8.0    12

# 欠損値を含む列を削除
df.dropna(axis=1)
   col3
0     9
1    10
2    11
3    12

上記の例では、DataFrame df から欠損値を含む行を削除しています。また、axis=1を指定することで、欠損値を含む列を削除することができます。

dropnaメソッドには、他にもいくつかの引数があります。

  • how: 削除の条件を指定することができます。allを指定すると、行または列のすべての要素がNaNまたはNoneである場合に、その行または列を削除します。anyを指定すると、行または列に1つでもNaNまたはNoneが含まれる場合に、その行または列を削除します。
  • thresh: 行または列に欠損値がいくつ以下含まれる場合に、その行または列を削除するかを指定できます。

以下は、howおよびthreshを使用した例です。

# データフレームの作成
df = pd.DataFrame({'col1': [1, 2, None, 4], 'col2': [None, 6, 7, 8], 'col3': [9, None, None, None]})

print(df)
   col1  col2  col3
0   1.0   NaN   9.0
1   2.0   6.0   NaN
2   NaN   7.0   NaN
3   4.0   8.0   NaN

# すべての要素がNaNまたはNoneの行を削除
df.dropna(how='all')
   col1  col2  col3
0   1.0   NaN   9.0
1   2.0   6.0   NaN
2   NaN   7.0   NaN
3   4.0   8.0   NaN

# 欠損値が2つ以下の行を削除
df.dropna(thresh=2)
   col1  col2  col3
0   1.0   NaN   9.0
1   2.0   6.0   NaN
3   4.0   8.0   NaN

上記の例では、すべての要素がNaNまたはNoneの行を削除する場合や、欠損値が2つ以下の行を削除する場合を示しています。

注意点

dropnaメソッドは、DataFrameオブジェクト自体を変更するのではなく、新しいDataFrameオブジェクトを返します。したがって、データの欠損値を削除したい場合は、削除した結果を再代入する必要があります。

タイトルとURLをコピーしました