ものづくりのブログ

うちのネコを題材にしたものづくりができたらいいなと思っていろいろ奮闘してます。

【pandas】欠損値を除外する処理

pandas のデータフレームの欠損値を除外する方法をここにメモします。

dropna() メソッド

欠損値を除外するには dropna() メソッドを使います。

パラメータ

how='all' すべての値が欠損値 NaN である行・列を削除
how='any' 欠損値 NaN が一つでも含まれる行・列を削除 (デフォルト)
thresh={int} 欠損値NaNではない要素の数に応じて行・列を削除
subset=['name'] 特定の行・列に欠損値NaNがある列・行を削除
inplace=True/False 元のオブジェクトを変更

サンプル

csv

$ cat sample.csv 
1,1-1,"1-2"
2,"",'',
3,,
4, , ,hoge
5,,5-1,

コード

import pandas as pd

df = pd.read_csv('./sample.csv', header=None, names=['A', 'B', 'C', 'D'])

print(f"{df}\n")

print(f"how='any': \n{df.dropna(how='any')}\n")

print(f"how='all': \n{df.dropna(how='all')}\n")

msg = "how='all',subset=['B', 'C', 'D']"
print(f"{msg}\n{df.dropna(how='all', subset=['B', 'C', 'D'])}\n")

実行結果

$ python sample.py
   A    B    C     D
0  1  1-1  1-2   NaN
1  2  NaN   ''   NaN
2  3  NaN  NaN   NaN
3  4            hoge
4  5  NaN  5-1   NaN

how='any': 
   A  B  C     D
3  4        hoge

how='all': 
   A    B    C     D
0  1  1-1  1-2   NaN
1  2  NaN   ''   NaN
2  3  NaN  NaN   NaN
3  4            hoge
4  5  NaN  5-1   NaN

how='all',subset=['B', 'C', 'D']
   A    B    C     D
0  1  1-1  1-2   NaN
1  2  NaN   ''   NaN
3  4            hoge
4  5  NaN  5-1   NaN