【完全版】Pythonを使った散布図の描画とデータ解析の手法を紹介

はじめに

Pythonで散布図を作成する方法について解説します。散布図は、2つの数値データの関係性を視覚的に理解するために用いられるグラフであり、データの可視化において重要な役割を担っています。

散布図の基本

散布図とは

散布図は、2つの数値データの相関関係を表現するために用いられるグラフです。横軸に一方の数値データ、縦軸にもう一方の数値データを取り、それらのデータのペアを点で表現します。

散布図の用途

散布図は、以下のような用途で利用されます。

  • 2つのデータの関係性を視覚的に理解するため
  • 相関関係を把握するため
  • 外れ値の検出や異常値の可視化

Pythonによる散布図の描画方法

Pythonでは、Matplotlib、Seaborn、Pandasなどのライブラリを使って散布図を描画することができます。

Matplotlibによる散布図の描画方法

以下は、Matplotlibを使って散布図を描画するための基本的なコードです。

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

plt.scatter(x, y)
plt.show()

このコードでは、x軸に1から5までの整数、y軸にはxの2倍の値をとったデータを描画しています。

Seabornによる散布図の描画方法

以下は、Seabornを使って散布図を描画するための基本的なコードです。

import seaborn as sns

x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

sns.scatterplot(x=x, y=y)

Pandasによる散布図の描画方法

Pandasを使って散布図を描画する場合は、DataFrameのplotメソッドを使います。以下は、Pandasを使って散布図を描画するための基本的なコードです。

import pandas as pd

data = pd.DataFrame({
    'x': [1, 2, 3, 4, 5],
    'y': [2, 4, 6, 8, 10]
})

data.plot(kind='scatter', x='x', y='y')

散布図を使ったデータ解析

相関係数の算出方法

相関係数は、2つのデータの相関関係を測るための指標であり、散布図を使って視覚的に確認することができます。以下は、Pythonを使って相関係数を算出する方法の例です。

import numpy as np

x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 6, 8, 10])

r = np.corrcoef(x, y)[0, 1]
print('相関係数: ', r)

回帰直線の引き方

回帰直線は、散布図において、2つの変数の間の関係性を表す直線です。以下は、Pythonを使って回帰直線を引く方法の例です。

import numpy as np
import matplotlib.pyplot as plt

x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 6, 8, 10])

z = np.polyfit(x, y, 1)
p = np.poly1d(z)

plt.scatter(x, y)
plt.plot(x, p(x), "r--")
plt.show()

クラスタリングの手法

クラスタリングは、散布図において、似た傾向を持つデータをグループ化する手法です。以下は、Pythonを使ってクラスタリングを行う方法の例です。

import numpy as np
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

x = np.array([1, 2, 3, 4, 5, 10, 11, 12, 13, 14])
y = np.array([2, 4, 6, 8, 10, 1, 3, 5, 7, 9])

plt.scatter(x, y)

data = np.array(list(zip(x, y)))
kmeans = KMeans(n_clusters=2).fit(data)

centroids = kmeans.cluster_centers_
plt.scatter(centroids[:, 0], centroids[:, 1], marker='x', s=150, linewidths=3, color='r', zorder=10)
plt.show()

散布図のカスタマイズ

軸ラベル、凡例、タイトルのカスタマイズ方法

以下は、Matplotlibを使って軸ラベル、凡例、タイトルをカスタマイズする方法の例です。

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

plt.scatter(x, y)
plt.xlabel('X axis label')
plt.ylabel('Y axis label')
plt.title('Title')
plt.legend(['Legend'])
plt.show()

色のカスタマイズ方法

以下は、Matplotlibを使って色をカスタマイズする方法の例です。

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
colors = ['red', 'green', 'blue', 'yellow', 'orange']

plt.scatter(x, y, c=colors)
plt.show()

アニメーションの作成方法

以下は、Matplotlibを使ってアニメーションを作成する方法の例です。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

fig, ax = plt.subplots()

x = np.arange(0, 2*np.pi, 0.01)
line, = ax.plot(x, np.sin(x))

def animate(i):
    line.set_ydata(np.sin(x + i/10))
    return line,

ani = animation.FuncAnimation(fig, animate, frames=100, interval=20, blit=True)
plt.show()

散布図を使ったデータ解析の実践例

実践例1: ワインの品質分析

サンプルのデータをダウンロードします。

  1. 以下のURLにアクセスして、UCI Machine Learning Repositoryのワインの品質に関するデータセットのページに移動します。https://archive.ics.uci.edu/ml/datasets/Wine+Quality
  2. ページ下部にあるData Folderという箇所をクリックします。
  3. winequality-red.csvというファイル名のリンクをクリックして、ファイルをダウンロードします。

以上の手順により、winequality-red.csvをダウンロードすることができます。ダウンロードしたファイルは、Pythonで読み込んで解析することができます。

以下は、Pythonを使ってワインの品質に関するデータを分析する方法の例です。

import pandas as pd
import seaborn as sns

# データの読み込み
wine = pd.read_csv('winequality-red.csv', sep=';')

# 散布図による分析
sns.pairplot(wine, vars=['alcohol', 'pH', 'residual sugar', 'quality'])
plt.show()

実践例2: ウェブサイトのアクセス解析

以下は、Pythonを使ってウェブサイトのアクセスに関するデータを分析する方法の例です。

import pandas as pd
import matplotlib.pyplot as plt

# データの読み込み
data = pd.read_csv('access_log.csv', sep=' ', header=None)

# データの整形
data.columns = ['IP', 'dash1', 'dash2', 'time', 'zone', 'method', 'url', 'protocol', 'status', 'size']
data['time'] = data['time'].str.replace('[', '')
data['time'] = pd.to_datetime(data['time'], format='%d/%b/%Y:%H:%M:%S')

# 散布図による分析
plt.scatter(data['time'], data['size'])
plt.xlabel('Time')
plt.ylabel('Access Size')
plt.show()

まとめ

Pythonを使って散布図を描画する方法や、散布図を使ったデータ解析の手法について解説しました。また、Matplotlib、Seaborn、Pandasなどのライブラリを使って散布図を描画する方法を紹介しました。

散布図は、2つの数値データの関係性を視覚的に理解するために用いられるグラフであり、データの可視化において重要な役割を担っています。また、散布図を使ったデータ解析の手法として、相関係数の算出、回帰直線の引き方、クラスタリングの手法なども紹介しました。

最後に、実践例として、ワインの品質分析やウェブサイトのアクセス解析などに散布図を活用する方法を紹介しました。データの可視化や解析において、散布図は非常に有用なツールであるため、ぜひ積極的に利用していきましょう。

コメント

タイトルとURLをコピーしました