Pandasで欠損値を効率的に処理する完全ガイド

この記事では、Pythonのデータ分析ライブラリ「Pandas」を使って、データセット内の欠損値(NaN: Not a Number)を効率的に処理する方法について詳しく解説します。具体的なコード例とその解説、応用例を含めています。

目次

なぜ欠損値の処理が必要か?

欠損値はデータ分析や機械学習の障壁となる場合があります。欠損値が多いと、統計的な解析が困難になるだけでなく、機械学習のモデルが不正確な予測をしてしまう可能性があります。

Pandasでの欠損値の基本的な処理方法

Pandasでは、主に`dropna()`と`fillna()`の二つの関数を用いて欠損値を処理します。

dropna()メソッド

このメソッドを用いると、欠損値を含む行や列を削除することができます。

import pandas as pd
import numpy as np

# サンプルデータ作成
df = pd.DataFrame({'A': [1, np.nan, 3], 'B': [4, 5, np.nan], 'C': [7, 8, 9]})
print("元のデータフレーム:")
print(df)

# dropna()メソッドで欠損値を削除
df_dropped = df.dropna()
print("欠損値を削除後のデータフレーム:")
print(df_dropped)

このようにして`dropna()`メソッドを使うと、欠損値を含む行が削除されます。

fillna()メソッド

`fillna()`を用いると、欠損値を任意の値で埋めることができます。

# fillna()メソッドで欠損値を0で埋める
df_filled = df.fillna(0)
print("欠損値を0で埋めた後のデータフレーム:")
print(df_filled)

`fillna(0)`とすることで、すべての欠損値が0で埋められます。

応用例

列ごとに異なる値で欠損値を埋める

一つのデータフレーム内で、列によって欠損値を埋める値を変えたい場合もあります。

# 列ごとに欠損値を埋める値を指定
df_filled_diff = df.fillna({'A': 0, 'B': 99, 'C': -1})
print("列ごとに欠損値を埋めた後のデータフレーム:")
print(df_filled_diff)

前後の値で欠損値を埋める

時系列データなど、前後の値が重要な場合、`method`引数を使って前後の値で欠損値を埋めることができます。

# 前の値で欠損値を埋める
df_filled_forward = df.fillna(method='ffill')
print("前の値で欠損値を埋めた後のデータフレーム:")
print(df_filled_forward)

# 後の値で欠損値を埋める
df_filled_backward = df.fillna(method='bfill')
print("後の値で欠損値を埋めた後のデータフレーム:")
print(df_filled_backward)

まとめ

Pandasには欠損値を効率的に処理するための多くのメソッドが用意されています。`dropna()`や`fillna()`は最も基本的なものであり、これらを理解して使いこなすことでデータのクリーニングが劇的に楽になります。特に、実際の業務では欠損値の処理が頻繁に必要になるため、この記事で紹介した方法をしっかりとマスターしてください。

コメント

コメントする

目次