ライブラリのインポート
以下のコードを使って、必要なライブラリをインポートします。
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())
ここでは、numpy
の random
モジュールを使ってランダムなデータを生成し、それを pandas
の DataFrame
に変換しています。A
列は正規分布に従うランダムな数値、B
列は0から3までの整数をランダムに生成しています。np.random.seed(0)
は乱数のシードを設定して、結果が再現可能になるようにしています。
print(df.head())
でデータフレームの最初の5行を表示して、データが正しく生成されたことを確認します。次のステップでは、このデータを使って外れ値の把握と除去を行います。このステップは、データ分析の前処理として非常に重要です。外れ値は、データの分布を歪める可能性があり、それによって分析結果が不正確になる可能性があります。そのため、外れ値の把握と適切な処理が必要となります。この記事では、pandas
の drop
メソッドと 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を計算し、それらを用いて外れ値の範囲を定義します。その後、この範囲を超える値を持つ行(つまり、外れ値)を抽出し、その数を表示します。これにより、データに含まれる外れ値の数を把握することができます。
次のステップでは、これらの外れ値を除去します。外れ値を除去することで、データの分布が正常化され、分析結果がより正確になります。外れ値の除去には、pandas
のdrop
メソッドを使用します。このメソッドの詳細については、次のセクションで説明します。
外れ値の除去
以下のコードを使って、データの外れ値を除去します。
# 外れ値の除去
df = df[(df['A'] >= lower_bound) & (df['A'] <= upper_bound)]
# データの確認
print(df.head())
ここでは、pandas
のdrop
メソッドを使用して外れ値を除去しています。具体的には、外れ値の範囲を超える値を持つ行をデータフレームから除去しています。この操作により、データの分布が正常化され、分析結果がより正確になります。
print(df.head())
でデータフレームの最初の5行を表示して、データが正しく処理されたことを確認します。これで、データの前処理が完了しました。次のステップでは、この前処理済みのデータを使用して、具体的なデータ分析を行います。
以上で、pandas
を使用したデータの前処理についての説明を終わります。この記事が、pandas
を使用したデータ分析の一助となれば幸いです。