はじめに
前回は、Pythonを使ったデータ分析の基本概念と必要なツールについて学びました。今回は、実際にデータを読み込み、クレンジング(データのクリーニング)する方法について詳しく解説します。データ分析の第一歩は、正確でクリーンなデータを用意することです。Pandasライブラリを使って、さまざまなデータソースからデータを読み込み、データの質を高めるための基本的な操作を紹介します。
データの読み込み
Pandasを使用すると、CSV、Excel、SQLなどのさまざまな形式のデータを簡単に読み込むことができます。以下に、いくつかの代表的なデータ読み込み方法を示します。
CSVファイルの読み込み
CSVファイルは、データ分析で最も一般的に使用される形式の一つです。Pandasのread_csv
関数を使用して、CSVファイルを読み込むことができます。
import pandas as pd
# CSVファイルの読み込み
df = pd.read_csv('sample.csv')
# データの先頭5行を表示
print(df.head())
このコードを実行すると、CSVファイルの先頭5行が表示されます。
id name age salary
0 1 John 28 50000
1 2 Anna 24 60000
2 3 Mike 35 70000
3 4 Sara 29 80000
4 5 Dave 30 90000
Excelファイルの読み込み
Excelファイルも広く使用されており、Pandasのread_excel
関数を使って読み込むことができます。
import pandas as pd
# Excelファイルの読み込み
df = pd.read_excel('sample.xlsx', sheet_name='Sheet1')
# データの先頭5行を表示
print(df.head())
Excelファイルを読み込む際には、sheet_name
引数で特定のシートを指定することができます。
SQLデータベースからの読み込み
SQLデータベースからデータを読み込むには、SQLAlchemyライブラリを使用します。まず、データベースに接続し、Pandasのread_sql
関数を使用してデータを取得します。
import pandas as pd
from sqlalchemy import create_engine
# データベース接続の設定
engine = create_engine('sqlite:///sample.db')
# SQLクエリを実行してデータを読み込む
df = pd.read_sql('SELECT * FROM sample_table', engine)
# データの先頭5行を表示
print(df.head())
この方法を使用すると、SQLデータベースから直接データを取得し、Pandasデータフレームとして扱うことができます。
データクレンジング
データクレンジングは、データの質を高めるために欠損値や異常値を処理する重要なステップです。Pandasを使って、以下のようなデータクレンジング操作を行います。
欠損値の処理
データセットには、しばしば欠損値(NaN)が含まれています。これらの欠損値を処理する方法をいくつか紹介します。
欠損値の確認
まず、データセットに欠損値が含まれているかどうかを確認します。
# 欠損値の確認
print(df.isnull().sum())
このコードを実行すると、各列に含まれる欠損値の数が表示されます。
id 0
name 0
age 1
salary 2
dtype: int64
欠損値の除去
欠損値を含む行を削除する方法です。
# 欠損値を含む行を削除
df_cleaned = df.dropna()
# 欠損値を含む列を削除
df_cleaned = df.dropna(axis=1)
この操作により、欠損値を含む行や列が削除され、クリーンなデータフレームが得られます。
欠損値の補完
欠損値を特定の値で補完する方法です。例えば、平均値や中央値で補完することが一般的です。
# 平均値で欠損値を補完
df['age'].fillna(df['age'].mean(), inplace=True)
# 中央値で欠損値を補完
df['salary'].fillna(df['salary'].median(), inplace=True)
この方法により、欠損値が適切な値で補完され、データセットが完全になります。
異常値の検出と処理
データには、極端な値(異常値)が含まれている場合があります。これらの異常値を検出し、適切に処理することも重要です。
異常値の検出
異常値を検出するためには、箱ひげ図(ボックスプロット)を使用する方法が一般的です。
import matplotlib.pyplot as plt
# 箱ひげ図を描画
plt.boxplot(df['salary'])
plt.show()
箱ひげ図を使用すると、データの分布と異常値を視覚的に確認することができます。以下は、異常値を検出するための例です。
# 四分位範囲(IQR)の計算
Q1 = df['salary'].quantile(0.25)
Q3 = df['salary'].quantile(0.75)
IQR = Q3 - Q1
# 異常値の除去
df_cleaned = df[~((df['salary'] < (Q1 - 1.5 * IQR)) | (df['salary'] > (Q3 + 1.5 * IQR)))]
このコードは、四分位範囲(IQR)を使用して異常値を検出し、データフレームから除去します。
実践例:Titanicデータセットのクレンジング
ここでは、実際にTitanicデータセットを使って、データの読み込みとクレンジングを行います。このデータセットは、Pandasのread_csv
関数で直接取得できます。
データの読み込み
import pandas as pd
# Titanicデータセットの読み込み
url = 'https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv'
df = pd.read_csv(url)
# データの先頭5行を表示
print(df.head())
欠損値の確認
# 欠損値の確認
print(df.isnull().sum())
欠損値の補完と除去
# 'Age'列の欠損値を平均値で補完
df['Age'].fillna(df['Age'].mean(), inplace=True)
# 'Embarked'列の欠損値を最頻値で補完
df['Embarked'].fillna(df['Embarked'].mode()[0], inplace=True)
# 'Cabin'列を削除
df.drop(columns=['Cabin'], inplace=True)
異常値の検出と処理
# 箱ひげ図を描画
import matplotlib.pyplot as plt
plt.boxplot(df['Fare'])
plt.show()
# 異常値の除去
Q1 = df['Fare'].quantile(0.25)
Q3 = df['Fare'].quantile(0.75)
IQR = Q3 - Q1
df_cleaned = df[~((df['Fare'] < (Q1 - 1.5 * IQR)) | (df['Fare'] > (Q3 + 1.5 * IQR)))]
クレンジング後のデータ確認
# クレンジング後のデータの先頭5行を表示
print(df_cleaned.head())
# クレンジング後の欠損値の確認
print(df_cleaned.isnull().sum())
まとめ
今回は、Pythonを使ったデータの読み込みとクレンジングについて学びました。データ分析の初期段階であるデータの読み込みとクレンジングは、正確な分析を行うために非常に重要です。次回は、データの基本統計量と集計について詳しく解説します。
コメント