pandasのdropnaメソッドを使って簡単に欠損値NaNを除外しよう

Pythonのpandasライブラリで欠損値NaNを削除する方法を解説します。

pandasで欠損値を除外する方法ってありますか?

pandasのdropnaメソッドを使うと簡単に除外できますよ。

目次

dropnaメソッドの概要

pandasのdropnaメソッドは、データフレームオブジェクトにおいて欠損値を除外するために使用されます。欠損値とは、データセット内の一部の値が存在しないまたは不正確な状態を指します。これらの欠損値は、データの完全性や処理の正確性に影響を及ぼす可能性があります。

dropnaメソッドを適用すると、指定した軸(行または列)において欠損値が存在する場合、それらの行または列が除外されます。デフォルトでは、少なくとも1つの欠損値を含む行が削除されますが、パラメータを調整することでより詳細な除外条件を指定することも可能です。

dropnaメソッドの基本的な構文は以下の通りです:

DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)

主なパラメータの説明:

  • axis: 欠損値の除外を行う軸を指定します。デフォルトは0で、行方向(行が削除される)を意味します。1を指定すると列方向(列が削除される)になります。
  • how: 欠損値の除外条件を指定します。デフォルトでは’any’であり、行または列に少なくとも1つの欠損値がある場合に除外されます。’all’を指定すると、行または列の全ての値が欠損値である場合にのみ除外されます。
  • thresh: 行または列における非欠損値の最小数を指定します。この値を超えない場合、行または列は除外されます。
  • subset: 欠損値の除外を行う対象となる列を指定します。指定しない場合は全ての列が対象になります。
  • inplace: デフォルトではFalseであり、元のデータフレームを変更せずに新しいデータフレームを返します。Trueを指定すると、元のデータフレームが直接変更されます。

dropnaメソッドを使用することで、欠損値の除外に関する柔軟な操作が可能になります。適切にパラメータを設定することで、データの品質向上や分析の正確性を高めることができます。

サンプルプログラムを使った実践解説

実際のサンプルプログラムを通じて、dropnaメソッドの具体的な使い方を解説します。欠損値の確認方法から始め、除外の方法やパラメータの利用例を示します。

欠損値の確認

まずは、dropnaメソッドを使って欠損値を除外する前に、データフレーム内の欠損値を確認する方法を見てみましょう。以下のサンプルプログラムを実行して、データフレーム内の欠損値を確認します。

import pandas as pd

# サンプルデータフレームの作成
data = {'A': [1, 2, None, 4, 5],
        'B': [6, None, 8, 9, 10],
        'C': [11, 12, 13, None, 15]}
df = pd.DataFrame(data)

# 欠損値の確認
print(df.isnull())

このサンプルプログラムでは、pd.DataFrame関数を使ってサンプルのデータフレームを作成し、isnullメソッドを使って欠損値の有無を確認しています。

       A      B      C   
0  False  False  False   
1  False   True  False   
2   True  False  False   
3  False  False   True   
4  False  False  False   

isnullメソッドは、各要素が欠損値かどうかをTrueまたはFalseで示すブール値のデータフレームを返します。

dropnaメソッドの使い方

次に、dropnaメソッドを使ってデータフレーム内の欠損値を除外する方法を見てみましょう。以下のサンプルプログラムを実行して、欠損値を除外した後のデータフレームを表示します。

import pandas as pd

# サンプルデータフレームの作成
data = {'A': [1, 2, None, 4, 5],
        'B': [6, None, 8, 9, 10],
        'C': [11, 12, 13, None, 15]}
df = pd.DataFrame(data)

# 欠損値を除外
df_cleaned = df.dropna()

# 結果の表示
print(df_cleaned)

このサンプルプログラムでは、dropnaメソッドを使ってデータフレーム内の欠損値を除外しています。除外後のデータフレームを新しい変数df_cleanedに代入し、print関数を使って結果を表示しています。

     A     B     C       
0  1.0   6.0  11.0       
4  5.0  10.0  15.0  

パラメータの利用方法

dropnaメソッドにはいくつかのパラメータを指定することができます。

以下のサンプルプログラムでは、パラメータを使ってより柔軟な欠損値の除外を行います。

import pandas as pd

# サンプルデータフレームの作成
data = {'A': [1, 2, None, 4, 5],
        'B': [6, None, 8, 9, 10],
        'C': [11, 12, 13, None, 15]}
df = pd.DataFrame(data)

# 欠損値の除外(パラメータを指定)

print(df.dropna(axis=1))
print(df.dropna(how='all'))
print(df.dropna(thresh=3))

このサンプルプログラムでは、dropnaメソッドのパラメータを指定して欠損値の除外を行っています。axis=1を指定することで列方向の除外を行い、how='all'を指定することで全ての値が欠損値の列を除外します。

また、thresh=3を指定することで、非欠損値の最小数を3とし、それ未満の非欠損値を持つ列も除外します。

Index: [0, 1, 2, 3, 4]   
     A     B     C       
0  1.0   6.0  11.0       
1  2.0   NaN  12.0       
2  NaN   8.0  13.0       
3  4.0   9.0   NaN       
4  5.0  10.0  15.0       
     A     B     C       
0  1.0   6.0  11.0       
4  5.0  10.0  15.0       

このサンプルプログラムでは、dropnaメソッドのパラメータを指定して欠損値の除外を行っています。

axis=1を指定することで列方向の除外を行い、how='all'を指定することで全ての値が欠損値の列を除外します。

また、thresh=3を指定することで、非欠損値の最小数を3とし、それ未満の非欠損値を持つ列も除外します。

dropnaメソッドの応用例

dropnaメソッドは、欠損値を除外するだけでなく、より高度な処理も行うことができます。以下に、いくつかの応用例を示します。

特定の列に欠損値が含まれる場合にのみ行を削除する場合

import pandas as pd

# サンプルデータフレームの作成
data = {'A': [1, 2, None, 4, 5],
        'B': [6, None, 8, 9, 10],
        'C': [None, 12, 13, None, 15]}
df = pd.DataFrame(data)

# 特定の列に欠損値が含まれる場合にのみ行を削除
df_cleaned = df.dropna(subset=['B', 'C'])

# 結果の表示
print(df_cleaned)

この例では、dropnaメソッドのsubsetパラメータに特定の列名を指定しています。結果として、’B’列または’C’列のいずれかに欠損値が含まれる行のみが削除され、欠損値のない行だけが残ります。

     A     B     C       
2  NaN   8.0  13.0       
4  5.0  10.0  15.0    

欠損値の補完や代替値の設定

import pandas as pd

# サンプルデータフレームの作成
data = {'A': [1, 2, None, 4, 5],
        'B': [6, None, 8, 9, 10],
        'C': [11, 12, None, 14, 15]}
df = pd.DataFrame(data)

# 欠損値の補完(平均値で補完)
df_filled = df.fillna(df.mean())

# 結果の表示
print(df_filled)

この例では、fillnaメソッドを使用して欠損値を補完しています。

meanメソッドを使って各列の平均値を計算し、欠損値の位置に平均値を代入しています。結果として、欠損値が補完されたデータフレームが得られます。

     A      B     C      
0  1.0   6.00  11.0      
1  2.0   8.25  12.0      
2  3.0   8.00  13.0      
3  4.0   9.00  14.0      
4  5.0  10.00  15.0  

欠損値の存在を示すマスクの作成

import pandas as pd
import numpy as np

# サンプルデータフレームの作成
data = {'A': [1, 2, None, 4, 5],
        'B': [6, None, 8, 9, 10],
        'C': [11, 12, 13, None, 15]}
df = pd.DataFrame(data)

# 欠損値の存在を示すマスクの作成
mask = df.isnull()

# 結果の表示
print(mask)

この例では、isnullメソッドを使用して欠損値の存在を示すマスク(True/Falseのデータフレーム)を作成しています。結果として、各要素が欠損値かどうかを示すマスクが得られます。

       A      B      C
0  False  False  False
1  False   True  False
2   True  False  False
3  False  False   True
4  False  False  False

これらの応用例は、dropnaメソッドをより効果的に活用するための一部です。欠損値の除外や補完、欠損値の存在を示すマスクの作成など、データ処理の柔軟性を高めるために、さまざまな手法を組み合わせて利用することができます。

リスキリングでキャリアアップしてみませんか?

リスキリング(学び直し)は、経済産業省が推奨しており、

今だけ、最大70%のキャッシュバックを受けることができます。

リスキリング 給付金が出るスクール紹介

最大70%の給付金が出るおすすめのプログラミングスクール!

国策で予算が決められているため申し込みが多い場合は早期に終了する可能性があります!

興味のある方はすぐに確認しましょう。

まとめ

Pythonのpandasライブラリで欠損値NaNを削除する方法を解説しました。

  • dropnaメソッドはpandasのデータフレーム内の欠損値を除外するために使用される。
  • 欠損値の確認にはisnullメソッドを使用し、各要素が欠損値かどうかを示すブール値のデータフレームを得ることができる。
  • dropnaメソッドを使うことで、デフォルトでは少なくとも1つの欠損値を含む行が削除されるが、パラメータを調整することでより詳細な除外条件を指定することができる。
  • dropnaメソッドの応用例としては、特定の列に欠損値が含まれる場合にのみ行を削除したり、欠損値の補完や代替値の設定、欠損値の存在を示すマスクの作成などがある。

dropnaメソッドの使い方や応用例を具体的に解説していただき、とてもわかりやすかったです。特に特定の列に欠損値が含まれる場合にのみ行を削除する方法や、欠損値の補完の例が参考になりました。

欠損値の除外や補完はデータ処理の重要な一部ですが、注意が必要です。欠損値の除外や補完によってデータの特性や傾向が変わる可能性があるため、適切な判断と検証が必要です。データセットの特性を理解し、欠損値の扱い方を慎重に選択しましょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次