目次
概要
pandas の dropna で欠損値を削除する方法について解説します。
pandas.DataFrame.dropna
pandas.DataFrame.dropna() は、DataFrame から欠損値を削除します。
DataFrame.dropna(self, axis=0, how='any', thresh=None, subset=None, inplace=False)
引数
名前 | 型 | デフォルト値 |
---|---|---|
axis | {0 or ‘index’, 1 or ‘columns’} | 0 |
欠損値をチェックする方向 | ||
how | {‘any’, ‘all’} | ‘any’ |
欠損値を削除する基準 | ||
thresh | int, optional | |
欠損値を削除する基準 | ||
subset | array-like, optional | |
欠損値をチェックする対象 | ||
inplace | bool | False |
inplace で処理するかどうか |
返り値
名前 | 説明 |
---|---|
DataFrame | 欠損値を除いた DataFrame |
各引数は axis
の値によって、以下の意味になります。
axis=0 | axis=1 | |
---|---|---|
how=”any” | その行の1つでも欠損値が含まれる場合は削除する | その列の1つでも欠損値が含まれる場合は削除する |
how=”all” | その行がすべて欠損値の場合は削除する | その列がすべて欠損値の場合は削除する |
thresh=n | その行の欠損値でない値が n 個未満の場合は削除する | その列の欠損値でない値が n 個未満の場合は削除する |
subset | チェックする対象の列のインデックスを指定する | チェックする対象の行のインデックスを指定する |
axis – NaN をチェックする方向
In [1]:
import pandas as pd
from IPython.display import display
df = pd.DataFrame(
[
[None, 2, 3, 4, 5],
[None, None, 8, 9, 10],
[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20],
[None, 22, 23, 24, None],
],
index=["a", "b", "c", "d", "e"],
columns=["A", "B", "C", "D", "E"],
)
display(df)
# 行ごと
display(df.dropna(axis=0, how="any"))
# 列ごと
display(df.dropna(axis=1, how="any"))
A | B | C | D | E | |
---|---|---|---|---|---|
a | NaN | 2.0 | 3 | 4 | 5.0 |
b | NaN | NaN | 8 | 9 | 10.0 |
c | 11.0 | 12.0 | 13 | 14 | 15.0 |
d | 16.0 | 17.0 | 18 | 19 | 20.0 |
e | NaN | 22.0 | 23 | 24 | NaN |
A | B | C | D | E | |
---|---|---|---|---|---|
c | 11.0 | 12.0 | 13 | 14 | 15.0 |
d | 16.0 | 17.0 | 18 | 19 | 20.0 |
C | D | |
---|---|---|
a | 3 | 4 |
b | 8 | 9 |
c | 13 | 14 |
d | 18 | 19 |
e | 23 | 24 |
how – 削除する基準を設定する
how
で削除する基準を指定します。
any
: 1つでも NaN があれば、削除します。all
: すべて NaN であれば、削除します。
In [2]:
df = pd.DataFrame(
[
[None, 2, 3, 4, 5],
[None, None, 8, 9, 10],
[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20],
[None, None, None, None, None],
],
index=["a", "b", "c", "d", "e"],
columns=["A", "B", "C", "D", "E"],
)
display(df)
display(df.dropna(how="any"))
display(df.dropna(how="all"))
A | B | C | D | E | |
---|---|---|---|---|---|
a | NaN | 2.0 | 3.0 | 4.0 | 5.0 |
b | NaN | NaN | 8.0 | 9.0 | 10.0 |
c | 11.0 | 12.0 | 13.0 | 14.0 | 15.0 |
d | 16.0 | 17.0 | 18.0 | 19.0 | 20.0 |
e | NaN | NaN | NaN | NaN | NaN |
A | B | C | D | E | |
---|---|---|---|---|---|
c | 11.0 | 12.0 | 13.0 | 14.0 | 15.0 |
d | 16.0 | 17.0 | 18.0 | 19.0 | 20.0 |
A | B | C | D | E | |
---|---|---|---|---|---|
a | NaN | 2.0 | 3.0 | 4.0 | 5.0 |
b | NaN | NaN | 8.0 | 9.0 | 10.0 |
c | 11.0 | 12.0 | 13.0 | 14.0 | 15.0 |
d | 16.0 | 17.0 | 18.0 | 19.0 | 20.0 |
thresh – 削除する基準
欠損値でない値が thresh
個未満の場合は削除します。
In [3]:
df.dropna(thresh=4)
A | B | C | D | E | |
---|---|---|---|---|---|
a | NaN | 2.0 | 3.0 | 4.0 | 5.0 |
c | 11.0 | 12.0 | 13.0 | 14.0 | 15.0 |
d | 16.0 | 17.0 | 18.0 | 19.0 | 20.0 |
subset – 欠損値をチェックする対象
subset
で欠損値をチェックする対象を指定します。
In [4]:
display(df.dropna(subset=["C", "D", "E"]))
A | B | C | D | E | |
---|---|---|---|---|---|
a | NaN | 2.0 | 3.0 | 4.0 | 5.0 |
b | NaN | NaN | 8.0 | 9.0 | 10.0 |
c | 11.0 | 12.0 | 13.0 | 14.0 | 15.0 |
d | 16.0 | 17.0 | 18.0 | 19.0 | 20.0 |
pandas.Series.dropna
pandas.Series.dropna() は、Series から欠損値を削除します。
Series.dropna(self, axis=0, inplace=False, how=None)
引数
名前 | 型 | デフォルト値 |
---|---|---|
inplace | bool | False |
inplace で処理するかどうか |
返り値
名前 | 説明 |
---|---|
Series | 欠損値を削除した Series |
In [5]:
s = pd.Series([None, None, 8, 9, 10])
print(s)
print(s.dropna())
0 NaN 1 NaN 2 8.0 3 9.0 4 10.0 dtype: float64 2 8.0 3 9.0 4 10.0 dtype: float64
コメント