データフレーム内に欠損値がある場合、削除するか別の値で穴埋めするかどちらかを行うことが多いです。
今回は欠損値がある場合の扱いについてまとめました。
欠損値の確認
1 |
df.isnan(x) |
変数xの値が欠損値(NaN)であるかを確認する。
True/Falseの真偽値で返す。
Seriesの各要素が欠損値か確認
1 |
np.isnan(df['...']) |
列内の各要素が欠損値であるか、True、Falseの真偽値で返す。
Series内の欠損値を含むレコードを取得
1 |
df[np.isnan(df['カラム名'])] |
指定したカラム名の中に欠損値があれば、その行がすべて表示される。
欠損値(NaN)を含む行を全て取得:.dropna()
1 |
df.dropna() |
変数dfの中にNaN(欠損値)を含む場合に、すべての欠損値を取り出すことができる。
指定列に欠損値があればその行を取得:df[np.isnan(df[‘…’])]
1 |
df[np.isnan(df['カラム'])] |
数値データの列でのみ使用可能。
np.isnan()でTrue(欠損値)として返されたレコードにのみをdf[]でフィルタしている
欠損値を含むレコードのみを削除する:df.dropna(subset=[‘…’]
1 |
df.dropna(subset=['...']) |
subsetを使うことで、欠損値を含むレコードのみを削除することができる。
列の要素の数を調べる
1 |
len(df) |
dfに含まれるレコードの数を表示させることができる。
欠損値へ値を代入:.fillna()
1 2 |
df['...'].fillna(df['...'].mean()) #df['...'] = df['...'].fillna(df['...'].mean()) |
指定したカラム内の欠損値をそのカラム内の平均値で穴埋めする。
コメント部分は穴埋めしたカラムを再度代入することで内容を更新している。
欠損値の確認:.isna()
1 2 3 |
df.isna() #df['...'].isna() #pd.isna(df['...']) |
欠損値を含むレコードを全て返す。
レコード内の各要素が欠損値かTrueかFalseで返す。
コメント1行目ではSeriesに対して実行しており、指定した列に対しても実行できる。
コメント2行目のように書くこともできる。
np.isnan()と動きは同じ
コメント