実際のデータで分析を行うとデータが不完全で欠損値が含まれていることがあります。欠損値の扱い方が変わるだけで分析の結果が変化する場合もあります。欠損値を穴埋めする方法の3つについて解説していきます。簡単な欠損値の確かめ方とりあえず各列に欠損値があるかどうかを知りたい、というときはisnull関数とany関数の組み合わせとnotnull関数とall関数の組み合わせがあります。前者の組み合わせのときは欠損値のある列にTrueが返され、後者の組み合わせのときは欠損値のある列にFalseが返されます。以下のように確かめることができます。bool欠損値を削除する方法では、欠損値の削除の仕方を確認してみましょう。欠損値を削除するにはdropna関数を使います。読んで字のごとく、NaN値(欠損値)をドロップ(除外)します。1つ注意ですが、inplace=Trueにしないと、元のデータに変更は反映されないので注意しましょう。以下のデータを使います。float64基本的な使い方では先ほど作成したSeriesにdropna関数を適用させます。すると、NaN値を含むところが切り落とされる結果になります。float64DataFrameだとデフォルトの設定でdropnaを適用すると欠損値を1つでも含む行は削除されます。4.0全てが欠損値の行を削除するhow='all'にすると全ての値が欠損値になっている行のみを削除します。6.0削除したい列を指定するsubset=[カラム名のリスト]とすることで欠損値を削除したい列を指定することができます。5.0変更を元のデータに反映させるinplace=Trueにすれば変更を元のデータに反映させることが可能です。このとき、返り値はありません。5.0行あたりに残したいデータ数を指定threshで行あたりにいくつ以上のデータが非欠損値であれば削除しないかを指定できます。2個以上非欠損値があればその行を残したいときはthresh=2のように設定します。NaN削除する方向を指定axisで欠損値を含む行を削除するか、列を削除するかを指定できます。axis=1もしくはaxis='columns'で列を削除できます。欠損値を穴埋めするにはfillna関数を使います。dropna関数と同様、元のデータに変更を反映させたいときはinplace=Trueを使います。最初の引数で穴埋めする値を指定して使います。0で埋めたかったらdropna(0)と指定します。0.0変則的ですが、文字列で埋めることも可能です。missing列ごとに埋める値を変える列ごとに穴埋めする値を変更するときは、辞書形式で指定します。999.0前後の値を使って穴埋めをする欠損値の前後を使って穴埋めをすることができます。method='ffill'で直前の値が穴埋めの値に使われます。fillの略称なので前方方向に向けて穴埋めするというイメージを持つとわかりやすいと思います。fillの略称となり後方方向に向けて穴埋めするということになります。NaNlimit引数で値を指定することで連続した欠損値で何個まで穴埋めするかを指定できます。limit引数はmethodが指定されているときのみ有効となります。method='ffill'でlimitを変更して見ます。5.0平均値や最頻値などで穴埋め平均値や最頻値などで穴埋めすることもできます。列ごとの値を算出して穴埋めしてくれます。3.0個別に穴埋めする値を指定するDataFrameを指定することで個別に穴埋めする値を指定することができます。17.0まとめ今回は欠損値を削除する方法と穴埋めする方法について解説しました。欠損値を削除する場合はdropna、穴埋めする場合はfillna関数を使えば大抵の欠損値処理を行うことができます。欠損値処理を確実にこなしておくと、次のデータ処理の段階でエラーが起きにくくなるのでしっかり把握しておくと良いでしょう。documentationTweetDeepAgeではAIに関する厳選した内容を記事にしてお届けします。