Pandasを使ったデータの前処理:外れ値の確認と除去

ライブラリのインポート

以下のコードを使って、必要なライブラリをインポートします。

import pandas as pd
import numpy as np

ここでは、データ分析に必要な pandas ライブラリと数値計算に使う numpy ライブラリをインポートしています。これらのライブラリは、Pythonでデータ分析を行う際に頻繁に使用されます。pandas はデータフレームの操作を容易にし、numpy は数値計算を高速に行うためのライブラリです。これらのライブラリをインポートすることで、データの前処理や分析が容易になります。次のステップでは、これらのライブラリを使用してデータの準備を行います。

データの準備

以下のコードを使って、データの準備を行います。

# データの生成
np.random.seed(0)
df = pd.DataFrame({
    'A': np.random.randn(1000),
    'B': np.random.randint(0, 4, 1000)
})

# データの確認
print(df.head())

ここでは、numpyrandom モジュールを使ってランダムなデータを生成し、それを pandasDataFrame に変換しています。A 列は正規分布に従うランダムな数値、B 列は0から3までの整数をランダムに生成しています。np.random.seed(0) は乱数のシードを設定して、結果が再現可能になるようにしています。

print(df.head()) でデータフレームの最初の5行を表示して、データが正しく生成されたことを確認します。次のステップでは、このデータを使って外れ値の把握と除去を行います。このステップは、データ分析の前処理として非常に重要です。外れ値は、データの分布を歪める可能性があり、それによって分析結果が不正確になる可能性があります。そのため、外れ値の把握と適切な処理が必要となります。この記事では、pandasdrop メソッドと quantile メソッドを使って、外れ値の除去を行います。これらのメソッドの詳細については、次のセクションで説明します。

外れ値の把握

以下のコードを使って、データの外れ値を把握します。

# 外れ値の把握
Q1 = df['A'].quantile(0.25)
Q3 = df['A'].quantile(0.75)
IQR = Q3 - Q1

print("First Quartile (Q1): ", Q1)
print("Third Quartile (Q3): ", Q3)
print("Interquartile Range (IQR): ", IQR)

# 外れ値の範囲を定義
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR

print("Lower Bound: ", lower_bound)
print("Upper Bound: ", upper_bound)

# 外れ値の数を確認
outliers = df[(df['A'] < lower_bound) | (df['A'] > upper_bound)]
print("Number of Outliers: ", outliers.shape[0])

ここでは、四分位範囲(IQR)を用いて外れ値を把握しています。IQRは、第3四分位数(Q3)と第1四分位数(Q1)の差で、データの散らばりを表します。外れ値は、通常、Q1 – 1.5 * IQR未満またはQ3 + 1.5 * IQRを超える値と定義されます。

このコードでは、まずA列のQ1、Q3、IQRを計算し、それらを用いて外れ値の範囲を定義します。その後、この範囲を超える値を持つ行(つまり、外れ値)を抽出し、その数を表示します。これにより、データに含まれる外れ値の数を把握することができます。

次のステップでは、これらの外れ値を除去します。外れ値を除去することで、データの分布が正常化され、分析結果がより正確になります。外れ値の除去には、pandasdropメソッドを使用します。このメソッドの詳細については、次のセクションで説明します。

外れ値の除去

以下のコードを使って、データの外れ値を除去します。

# 外れ値の除去
df = df[(df['A'] >= lower_bound) & (df['A'] <= upper_bound)]

# データの確認
print(df.head())

ここでは、pandasdropメソッドを使用して外れ値を除去しています。具体的には、外れ値の範囲を超える値を持つ行をデータフレームから除去しています。この操作により、データの分布が正常化され、分析結果がより正確になります。

print(df.head())でデータフレームの最初の5行を表示して、データが正しく処理されたことを確認します。これで、データの前処理が完了しました。次のステップでは、この前処理済みのデータを使用して、具体的なデータ分析を行います。

以上で、pandasを使用したデータの前処理についての説明を終わります。この記事が、pandasを使用したデータ分析の一助となれば幸いです。

投稿者 karaza

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です