7.Pythonではじめるデータ分析:宿泊価格予測入門-欠損値補足編-

PR表記

※アフィリエイト広告を利用しています

どうもニコイチです。前回欠損値について説明しましたが、今回は欠損値の処理に着目して説明しています。データ分析を始めると、最初につまづきやすいポイントがいくつかあります。その中でも「欠損値の扱い」は重要でありながら、難しく感じる部分です。この記事では、初心者の方がスムーズに理解し、実践できるよう、欠損値の確認と処理方法について分かりやすく解説します。

全編はこちらから


目次

1. 欠損値とは?

前回の記事の復習となりますが、欠損値とは、本来得られるべきデータが欠落している状態のことを指します。

具体例

  • アンケートの未回答項目(例: 性別が未記入)
  • センサーや計測器の不具合で得られなかったデータ

表形式のデータでの欠損値の例

出身年齢性別
神奈川31
東京NaN
大阪46
北海道18NaN

上記の例では、空欄やNaN(Not a Number)が欠損値です。


2. 欠損値を確認する方法

Pythonでは、pandasライブラリを使うことで簡単に欠損値を確認できます。 以下に、具体的な手順を示します。

手順 1: CSVデータの読み込み

まずはデータを読み込んでみましょう。

import pandas as pd

# CSVファイルの読み込み
data = pd.read_csv("宿泊価格について_demo.csv")

# データの先頭5行を表示
print(data.head())

手順 2: 欠損値の有無を確認

isnull関数を使用すると、各値が欠損値かどうかを確認できます。

# 各値が欠損値かどうかを確認
print(data.isnull())

出力例:

カラム名値1値2値3
priceFalseTrueFalse
bedroomsTrueFalseFalse

このように、欠損値にはTrueが表示されます。

手順 3: カラムごとの欠損値の数を確認

# カラムごとの欠損値の数を確認
print(data.isnull().sum())

出力例:

price        5
bedrooms     2
bathrooms    3

これで、どのカラムに欠損値があるか分かります。


3. 欠損値の処理方法

欠損値の処理方法には主に次の2つがあります。それぞれの利点と注意点を理解して選択しましょう。

3.1 欠損値の削除

データ量が十分に多く、欠損値が少数の場合、欠損値を含む行や列を削除することができます。

# 特定のカラムに欠損値があるデータを削除
data = data.dropna(subset=["beds", "bedrooms", "bathrooms"])

メリット

  • シンプルで簡単
  • データの一貫性を保ちやすい

デメリット

  • 欠損が多い場合、データ量が減りすぎる可能性がある

3.2 欠損値の補完

データが少ない場合や、重要な特徴量が欠損している場合は、欠損値を他の値で補完する方法が一般的です。

平均値で補完する例

# 平均値で補完
mean_val = data["review_scores_rating"].mean()
data["review_scores_rating"] = data["review_scores_rating"].fillna(mean_val)

その他の補完方法

  • 中央値: 極端な値の影響を受けにくい median_val = data["price"].median() data["price"] = data["price"].fillna(median_val)
  • 最頻値: カテゴリデータに適している mode_val = data["bed_type"].mode()[0] data["bed_type"] = data["bed_type"].fillna(mode_val)
  • 予測モデル: 機械学習モデルを使用して補完 from sklearn.impute import SimpleImputer imputer = SimpleImputer(strategy='mean') data[["price"]] = imputer.fit_transform(data[["price"]])

4. 実践例: 宿泊データの欠損値を処理

「宿泊価格について_demo.csv」を使用して、実際に欠損値を処理してみましょう。

データ確認

# データの欠損状況確認
print(data.isnull().sum())

出力例:

beds        10
bedrooms     5
bathrooms    2

欠損値の削除

# 欠損値を削除
data = data.dropna(subset=["beds", "bedrooms", "bathrooms"])

欠損値の補完

# 平均値で補完
mean_review = data["review_scores_rating"].mean()
data["review_scores_rating"] = data["review_scores_rating"].fillna(mean_review)

5. まとめ

この記事では、Pythonを使った欠損値の確認と処理方法について詳しく解説しました。欠損値はデータ分析において避けて通れない課題ですが、適切な方法で対処すれば、分析の質を大きく向上させることができます。

ポイントの振り返り

  • isnull()で欠損値を確認
  • dropna()で欠損値を削除
  • fillna()で欠損値を補完

次のステップとして、欠損値を処理したデータを使って、データの可視化や機械学習モデルの構築に挑戦してみましょう!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次