LoginSignup
1
0

More than 1 year has passed since last update.

Pandas: データフレームについて--02:欠損値の取り扱い

Last updated at Posted at 2022-06-19

欠損値の取り扱い

1. NaN を含むデータフレームの例

NaN は np.nan として入力する。

import numpy as np
import pandas as pd

df = pd.DataFrame({
        'a': [1, 2, 3, 4, 5],
        'b': [1.2, np.nan, 5.6, 7.8, 9.0],
        'c': ['a', 'b', 'c', 'd', 'e']
    })
df
a b c
0 1 1.2 a
1 2 NaN b
2 3 5.6 c
3 4 7.8 d
4 5 9.0 e

2. 欠損値を取り除く .dropna

1 つでも欠損値のある行は,1 行全部を削除する。

dropna(axis: 'Axis' = 0, how: 'str' = 'any', thresh=None,
       subset=None, inplace: 'bool' = False)
df.dropna()
a b c
0 1 1.2 a
2 3 5.6 c
3 4 7.8 d
4 5 9.0 e

3. 欠損値を特定の値に置き換える

3.1. fillna

欠損値を value で指定する値に置き換える。

fillna(value: 'object | ArrayLike | None' = None,
    method: 'FillnaOptions | None' = None,
    axis: 'Axis | None' = None, inplace: 'bool' = False,
    limit=None, downcast=None)`
df.fillna(99999)
a b c
0 1 1.2 a
1 2 99999.0 b
2 3 5.6 c
3 4 7.8 d
4 5 9.0 e

3.2. bfill

欠損値を直後の非欠損値で置き換える。

fillnamethod='bfill' を指定するのと同じ。

bfill(axis: 'None | Axis' = None, inplace: 'bool' = False,
      limit: 'None | int' = None, downcast=None)
df.bfill()
a b c
0 1 1.2 a
1 2 5.6 b
2 3 5.6 c
3 4 7.8 d
4 5 9.0 e
df.fillna(method='bfill') # df.bifill() と同じ
a b c
0 1 1.2 a
1 2 5.6 b
2 3 5.6 c
3 4 7.8 d
4 5 9.0 e

3.3. ffill

欠損値を直前の非欠損値で置き換える。

fillnamethod='ffill' を指定するのと同じ。

ffill(axis: 'None | Axis' = None, inplace: 'bool' = False,
      limit: 'None | int' = None, downcast=None)
df.ffill()
a b c
0 1 1.2 a
1 2 1.2 b
2 3 5.6 c
3 4 7.8 d
4 5 9.0 e
df.fillna(method='ffill') # df.ffill() と同じ
a b c
0 1 1.2 a
1 2 1.2 b
2 3 5.6 c
3 4 7.8 d
4 5 9.0 e

4. もっと知りたい人

help(df.dropna) # Help on method dropna in module pandas.core.frame
help(df.fillna) # Help on method fillna in module pandas.core.frame
help(df.bfill)  # Help on method bfill in module pandas.core.frame
help(df.ffill)  # Help on method ffill in module pandas.core.frame
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0