Python解説 第7回: データ分析の基礎と高度な可視化

前回の「第6回 Python解説 アプリ&AI編」では、Pythonを用いたアプリケーション開発やAIの基本について学びました。今回は、その続編として、データ分析の基礎から高度な可視化、さらに実践的な統計分析や予測モデルの構築までを扱い、実務に活かせるスキルを深めていきましょう。


1. データ分析と可視化の概念

データ分析とは、大量のデータから有益な情報を抽出し、意思決定に役立てるプロセスです。一般的なデータ分析の目的として、以下のようなものがあります。

  • 記述的分析: データの現状を把握する(例: 売上の推移、顧客の属性)。
  • 診断的分析: 過去のデータから原因を分析する(例: 売上低下の要因分析)。
  • 予測的分析: 将来の動向を予測する(例: 需要予測、株価予測)。
  • 処方的分析: 最適な判断を導き出す(例: 価格最適化、在庫管理)。

また、データの可視化は、数値データをグラフや図として表現することで、データの傾向や異常値を直感的に理解できるようにする手法です。

データ可視化の代表的な手法には以下のものがあります。

  • 棒グラフ: カテゴリデータの比較。
  • 折れ線グラフ: 時系列データの推移を表現。
  • 散布図: 2つの変数の関係性を示す。
  • ヒートマップ: 相関関係や分布を視覚化。

2. データ分析の基礎

データ分析の基本的な流れは以下の通りです。

  1. データ収集: CSVやAPIなどからデータを取得。
  2. データ前処理: 欠損値の処理、データの整形。
  3. 探索的データ解析(EDA): データの可視化や統計的分析。
  4. データモデリング: 機械学習や統計モデルの適用。
  5. 評価・改善: モデルの精度を評価し、改善。

まずは基本的なライブラリをインポートし、データを読み込んでみましょう。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

# CSVファイルの読み込み
df = pd.read_csv("data.csv")
print(df.head())

3. データの前処理

データの前処理は、正確な分析のために不可欠です。

# 欠損値の確認
print(df.isnull().sum())

# 欠損値を平均値で補完
df.fillna(df.mean(), inplace=True)

# カテゴリ変数の処理
from sklearn.preprocessing import LabelEncoder
encoder = LabelEncoder()
df['category'] = encoder.fit_transform(df['category'])

データの異常値を検出し、外れ値を処理することも重要です。

# 四分位範囲(IQR)を用いた外れ値の検出
Q1 = df.quantile(0.25)
Q3 = df.quantile(0.75)
IQR = Q3 - Q1

df_cleaned = df[~((df < (Q1 - 1.5 * IQR)) | (df > (Q3 + 1.5 * IQR))).any(axis=1)]
print("外れ値を除去した後のデータ:", df_cleaned.shape)

4. 基本的なデータ分析

データの特徴を理解するために、基本統計量を確認します。

print(df.describe())

データの分布を可視化してみましょう。

sns.histplot(df['feature1'], bins=30, kde=True)
plt.show()

カテゴリ変数ごとの平均値を比較することで、傾向を掴みます。

sns.boxplot(x='category', y='feature1', data=df)
plt.show()

5. 高度なデータ可視化

データの相関関係をヒートマップで確認します。

plt.figure(figsize=(10, 8))
sns.heatmap(df.corr(), annot=True, cmap='coolwarm', fmt='.2f')
plt.title('相関ヒートマップ')
plt.show()

ペアプロットを使って、特徴量同士の関係を視覚化できます。

sns.pairplot(df, hue='category', palette='coolwarm')
plt.show()

6. 主成分分析(PCA)

PCAを使って次元を削減し、データの主要なパターンを抽出します。

from sklearn.decomposition import PCA

pca = PCA(n_components=2)
principal_components = pca.fit_transform(df.drop(columns=['category']))
print("各成分の寄与率:", pca.explained_variance_ratio_)

PCAの結果を可視化してみましょう。

plt.scatter(principal_components[:, 0], principal_components[:, 1], c=df['category'], cmap='viridis')
plt.xlabel('主成分1')
plt.ylabel('主成分2')
plt.title('PCAによる次元削減結果')
plt.show()

7. クラスター分析(K-means)

データをグループに分類して特徴を把握します。

from sklearn.cluster import KMeans

kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(df.drop(columns=['category']))
df['Cluster'] = kmeans.labels_

sns.scatterplot(x=df['feature1'], y=df['feature2'], hue=df['Cluster'], palette='viridis')
plt.show()

まとめ

今回は、データ分析の基礎から高度な可視化、クラスタリング、次元削減、時系列分析まで幅広く学びました。

  • データの取得と前処理(欠損値・外れ値処理)
  • 統計的なデータ分析と可視化(ヒストグラム、ヒートマップ、ペアプロット)
  • PCAによる次元削減と視覚化
  • K-meansクラスタリングとエルボー法による適切なクラスタ数の選択
  • Prophetを使った時系列予測と季節性分析

次回は、discord botの作り方について詳しく解説していきますので、お楽しみに!

コメントを残す

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