はじめに
この実験では、Pandas ライブラリの fillna() メソッドの使い方を学びます。fillna() メソッドを使うと、DataFrame 内の欠損値または NaN(Not a Number)を指定された値で、または指定された方法で埋めることができます。
VM のヒント
VM の起動が完了したら、左上隅をクリックして ノートブック タブに切り替え、Jupyter Notebook を使って練習しましょう。
時々、Jupyter Notebook が読み込み終わるまで数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。
学習中に問題があった場合は、Labby にお問い合わせください。セッション終了後にフィードバックを提供してください。すぐに問題を解決いたします。
必要なライブラリのインポート
まずは Pandas ライブラリをインポートしましょう。
import pandas as pd
欠損値を持つ DataFrame を作成する
次に、いくつかの欠損値を含む DataFrame を作成しましょう。
df = pd.DataFrame([[2, pd.nan, 0], [pd.nan, pd.nan, 5], [pd.nan, 3, pd.nan]], columns=list('ABC'))
print("The DataFrame is:")
print(df)
指定された値で欠損値を埋める
fillna() メソッドを使って、すべての欠損値を指定された値に置き換えることができます。たとえば、DataFrame 内のすべての欠損値を値 2 に置き換えてみましょう。
print("Filling NaN values:")
print(df.fillna(2))
前方充填法を使って欠損値を埋める
欠損値を埋めるために単一の値を使う代わりに、前方充填法 (ffill) を使って非 null 値を前方に伝播させることができます。この方法は、同じ列の最後に観測された非 null 値で欠損値を埋めます。
print("Filling NaN values using forward fill method:")
print(df.fillna(method='ffill'))
列方向に前方充填法を使って欠損値を埋める
axis パラメータを 1 に設定することで、列方向に前方充填法を使うこともできます。
print("Filling NaN values using forward fill method along the columns:")
print(df.fillna(method='ffill', axis=1))
後方充填法を使って欠損値を埋める
同様に、非 null 値を後方に伝播させるために後方充填法 (bfill) を使うことができます。この方法は、同じ列の次に観測された非 null 値で欠損値を埋めます。
print("Filling NaN values using backward fill method:")
print(df.fillna(method='bfill'))
特定の列の欠損値を指定された値に置き換える
特定の列の欠損値を異なる指定された値に置き換えることができます。たとえば、列 'A'、'B'、'C'、および 'D' の欠損値をそれぞれ値 0、1、2、および 3 に置き換えましょう。
print("Filling NaN values in specific columns:")
new_values = {'A': 0, 'B': 1, 'C': 2, 'D': 3}
print(df.fillna(value=new_values))
埋める連続する NaN 値の数を制限する
limit パラメータを使用して、埋める連続する NaN 値の数を制限することもできます。たとえば、前方充填を 1 つの連続する NaN 値までに制限しましょう。
print("Filling NaN values with a limit:")
print(df.fillna(method='ffill', limit=1))
まとめ
この実験では、Pandas ライブラリの fillna() メソッドを使って、DataFrame 内の欠損値または NaN 値を埋める方法を学びました。指定された値を使う方法、前方充填、後方充填、および埋める連続する NaN 値の数を制限する方法など、欠損値を埋めるさまざまな方法を検討しました。欠損データの処理と DataFrame の整合性を確保するために、fillna は便利なメソッドです。