Pythonで学ぶ探索的データ分析(EDA)の基本と実践
データ分析において、探索的データ分析(Exploratory Data Analysis:EDA)は必ず最初に行うべきステップです。EDAを実施することで、以下のようなことが可能になります。
- データセットへの深い洞察を得る
- データの背後にある構造を理解する
- 重要なパラメータや、それらの間の関係性を抽出する
- 前提となる仮説を検証する
サンプルデータセットを使ったEDAの理解
PythonでEDAを理解するために、サンプルデータはWebサイトから直接取得するか、ローカルディスクから読み込むことができます。ここでは、公開されているUCI Machine Learning Repositoryから「赤ワインの品質データセット」を取得し、EDAを通じてデータセットからできるだけ多くの洞察を引き出してみましょう。
import pandas as pd
df = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv")
df.head()上記のスクリプトをJupyter Notebookで実行すると、次のような出力が得られます。

まず最初に確認すべきポイントは以下の通りです。
- 必要なライブラリ(ここではpandas)をインポートします。
- pandasのread_csv()関数を使ってCSVファイルを読み込みます。このデータセットでは各データが区切り文字「;」で区切られている点に注意してください。
- pandasが提供する「.head」関数で、データセットの先頭5件の観測値を表示できます。同様に「.tail()」関数を使えば、末尾5件の観測値も取得できます。
「.shape」を使えば、データセットの総行数と列数を簡単に確認できます。
df.shape

info()関数を使うと、データセットに含まれるすべての列名、それぞれのデータ型、そして欠損値の有無などを一度に把握できます。
df.info()

上記の出力結果から、次のことが分かります。
- データにはfloat型とinteger型のみが含まれている。
- すべての列変数が非null(空や欠損値なし)である。
pandasのもう一つの便利な関数がdescribe()です。この関数は、データの件数(count)、平均値(mean)、標準偏差(std)、最小値・最大値、そして四分位数を一覧で表示してくれます。
df.describe()

- 平均値が中央値(50%の値)より小さい列があることが分かります。
- 「residual sugar」「free sulfur dioxide」「total sulfur dioxide」の説明変数では、75%値と最大値の間に大きな差があります。
- 以上の2つの観察結果から、データセットに極端な値(外れ値)が存在している可能性が示唆されます。
従属変数「quality」から得られる重要な洞察は以下の通りです。
df.quality.unique()

- 「quality」スコアの尺度は、1が最低(不良)、10が最高(優良)となっています。
- 上記の結果から、スコア1(最低)、2、9、10(最高)の観測値は一件も存在せず、すべてのスコアは3〜8の範囲に収まっていることが分かります。
df.quality.value_counts()

- 上記の処理結果により、各品質スコアの件数が降順で確認できます。
- 大多数の品質スコアは5〜7の範囲に集中しています。
- 観測数が最も少ないのはスコア3と8のカテゴリです。
データの可視化
欠損値のチェック
seabornライブラリを使えば、データセット内の欠損値を視覚的に確認できます。以下がそのコードです。
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
sns.set()
df = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-white.csv", sep=";")
sns.heatmap(df.isnull(), cbar=False, yticklabels=False, cmap='viridis')出力結果

- 上記のヒートマップから、このデータセットには欠損値が存在しないことが分かります。もし欠損値があれば、紫の背景に対して異なる色合いで表現されるはずです。
- 欠損値を含む別のデータセットで同じコードを実行すれば、その違いを明確に確認できます。
相関関係の確認
データセット内の異なる変数間の相関を確認するには、既存のコードに以下を追加します。
plt.figure(figsize=(8,4)) sns.heatmap(df.corr(),cmap='Greens',annot=False)
出力結果

- 上記のヒートマップでは、正の相関が濃い色で、負の相関が薄い色で表現されています。
- annot=Trueに変更すると、グリッドセルごとに特徴量間の相関係数の具体的な数値が表示されます。
annot=Trueを指定した相関行列をもう一つ生成してみましょう。既存のコードに以下の行を追加してください。
k = 12 cols = df.corr().nlargest(k, 'quality')['quality'].index cm = df[cols].corr() plt.figure(figsize=(8,6)) sns.heatmap(cm, annot=True, cmap = 'viridis')
出力結果

- 上記の結果から、「density(密度)」と「residual sugar(残糖)」の間には強い正の相関がある一方、「density」と「alcohol(アルコール度数)」の間には強い負の相関があることが分かります。
- また、「free sulfur dioxide(遊離亜硫酸)」と「quality(品質)」の間にはほとんど相関が見られません。
-
Pandasで学ぶPythonデータ分析と可視化の基本
Pandas(パンダス)は、データサイエンスやデータ分析の分野で最も人気のあるPythonライブラリの一つです。データの操作・分析・クレンジング(前処理)を得意としており、C言語で実装された低レベルライブラリ「NumPy」の上位に位置する高レベルな抽象化として機能します。本記事では、アナリストやデータサイエンティストとして必ず押さえておきたい重要ポイントを順を追って解説します。ライブラリのインストール必要なライブラリはpipコマンドで簡単にインストールできます。ターミナル(コマンドプロンプト)で以下のコマンドを実行してください。pip install pandasDataFrame と Ser
-
Pythonによるデータ分析と可視化入門|pandasの基本を徹底解説
Pythonによるデータ分析と可視化の概要 Pythonには、データ分析と可視化のための強力なライブラリが数多く用意されています。代表的なものとしては、NumPy、pandas、matplotlib、seabornなどが挙げられます。本記事では、その中でも中心的な役割を果たすpandasについて詳しく解説します。pandasはNumPyをベースに構築されたオープンソースライブラリで、高速なデータ分析やデータのクリーニング・前処理を効率的に行えます。さらに、pandas自体にも便利な可視化機能が組み込まれています。 pandasのインストール方法 pandasをインストールするには、ターミナル