16章欠損値の扱い
実世界のデータがチュートリアルと違うのは、実世界のデータが雑然としており均質でもないという点です。特に、興味深いデータセットの多くでは一定量のデータが欠落しています。データソースが異なれば、欠けるデータも異なることが、問題をさらに複雑にします。
この章では、欠損値に関する一般的な考慮事項について説明し、pandasが欠損値を表現する方法と、欠損値をPythonで処理するためにpandasが提供するツールを説明します。本書全体を通して、欠損値を一般的にnull値、NaN値、またはNA値と呼びます。
16.1 欠損値表現のトレードオフ
テーブルやDataFrame
が持つ欠損値を表現するために、数多くの手法が開発されました。それらは一般的に2つの戦略、つまり欠損値を示すための大域的に示すマスクを使用するか、または欠損値を示す特殊値†1を使用するかに大別されます。
[†1] 訳注:こうした特殊値を番兵(sentinel value)と呼ぶ。例えばC言語文字列の終端を表すヌル文字や、何も指さないポインタを表すNULLポインタ、ファイルの終端に達したことを示す戻り値EOF
などが番兵に相当する。
マスク方式では、ブール値配列を別に用意したり、欠損値を示すためにデータ表現の1ビットを割り当てる方法などが使用されます。
特殊値を使用する場合、整数の欠損値を表すために-9999や特殊なビットパターンを用いるなど、データ特有の規則を使用することもあれば、IEEE 754の浮動小数点数仕様で特殊値を示すNaN
(「非数(Not a Number」)を用いて、浮動小数点数の欠損値を表す一般的な規則を使用することもあります。
どちらのアプローチも、トレードオフが存在します。マスク配列を別に用意すると、その配列を追加するための記憶域と演算のオーバーヘッドが生じます。特殊値は、表現可能な値の範囲を減らし、 ...
Get Pythonデータサイエンスハンドブック 第2版 ―Jupyter、NumPy、pandas、Matplotlib、scikit-learnを使ったデータ分析、機械学習 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.