返回目錄
A
資料科學實務:從數據洞察到決策行動 - 第 4 章
第四章:探索式資料分析 – 從資料到洞察
發布於 2026-03-05 13:13
# 第四章:探索式資料分析 – 從資料到洞察
## 4.1 引言
在前一章我們把原始資料打磨乾淨,確保每一筆資料都能被模型正確理解。這一階段,我們把「乾淨」的資料交給分析師,讓他們揮舞統計與視覺化的工具,從中尋找模式、關聯、異常,最終提煉出可直接轉化為商業策略的洞察。探索式資料分析(EDA)不僅是技術操作,更是商業直覺的磨練。
> **實務提醒**:在進行 EDA 前,先定義三個核心問題:
> 1. 我們的業務目標是什麼?
> 2. 哪些變數可能對目標產生影響?
> 3. 是否存在明顯的資料問題或偏差?
## 4.2 數據概覽
### 4.2.1 基本描述統計
python
import pandas as pd
import numpy as np
# 讀取前處理後的資料集
sales = pd.read_csv('data/cleaned_sales.csv')
# 只選取數值型欄位
num_cols = sales.select_dtypes(include=[np.number]).columns
print('--- 基本統計 ---')
print(sales[num_cols].describe().T)
> **技巧**:`describe()` 的 `.T` 轉置方便快速對比每個變數的平均值、標準差、四分位數。若資料量巨大,可使用 `sample()` 抽樣查看。
### 4.2.2 分類變數分佈
python
cat_cols = sales.select_dtypes(exclude=[np.number]).columns
print('--- 分類變數分佈 ---')
for col in cat_cols:
print(f'{col} : {sales[col].value_counts(normalize=True).to_dict()}')
> **商業案例**:如果「付款方式」中「現金」佔比異常低,可能表示線上交易平台需要更友善的結帳介面。
## 4.3 可視化技巧
### 4.3.1 單變量視覺化
python
import matplotlib.pyplot as plt
import seaborn as sns
plt.figure(figsize=(12, 6))
sns.histplot(sales['total_amount'], bins=50, kde=True, color='steelblue')
plt.title('交易金額分布')
plt.xlabel('金額 ($)')
plt.ylabel('頻率')
plt.show()
> **洞察**:若分布右偏,說明少數高價值客戶對營收貢獻重大,決策者可考慮針對高價值客戶的精準行銷。
### 4.3.2 雙變量關係
python
plt.figure(figsize=(10, 6))
sns.scatterplot(data=sales, x='recency', y='total_amount', hue='region', alpha=0.6)
plt.title('近期購買頻率 vs 總交易金額')
plt.xlabel('距離上次購買天數')
plt.ylabel('總交易金額')
plt.legend(title='地區')
plt.show()
> **關聯檢驗**:若某個區域的 `recency` 與 `total_amount` 正相關,可能因為該區域的市場成熟度較高。
### 4.3.3 分組箱形圖
python
plt.figure(figsize=(8, 6))
sns.boxplot(data=sales, x='membership_level', y='total_amount', palette='Pastel1')
plt.title('會員等級與交易金額箱形圖')
plt.xlabel('會員等級')
plt.ylabel('交易金額')
plt.show()
> **異常檢測**:箱形圖中離群值顯示哪些會員在同一等級中交易額異常高,可進一步追蹤是否為促銷活動導致。
## 4.4 趨勢與異常
### 4.4.1 時間序列趨勢
python
sales['order_date'] = pd.to_datetime(sales['order_date'])
monthly = sales.set_index('order_date').resample('M')['total_amount'].sum()
plt.figure(figsize=(10, 5))
monthly.plot(marker='o', linestyle='-', color='darkgreen')
plt.title('每月總交易金額趨勢')
plt.xlabel('月份')
plt.ylabel('金額 ($)')
plt.grid(True)
plt.show()
> **商業洞察**:若在特定月份顯著下降,可能與節慶、競爭對手促銷或物流延誤相關,需進一步分析。
### 4.4.2 機器學習輔助異常檢測
python
from sklearn.ensemble import IsolationForest
# 取數值特徵作為模型輸入
X = sales[num_cols]
iso = IsolationForest(contamination=0.02, random_state=42)
sales['anomaly'] = iso.fit_predict(X)
print('異常樣本數:', (sales['anomaly'] == -1).sum())
> **結合商業**:標記異常的訂單可直接輸出給客戶服務團隊,減少退貨成本。
## 4.5 商業洞察生成
1. **客戶分群**:使用 K‑Means 將客戶按 `purchase_freq`、`recency`、`monetary` 分為四群。每群的行為特徵可作為差異化行銷策略的基礎。
2. **產品組合優化**:透過協同過濾,找出頻繁一起購買的產品,調整推薦引擎或捆綁銷售。
3. **定價策略**:根據交易金額分布與市場需求,制定高價值客戶專屬折扣,降低價格敏感度。
> **執行步驟**:
> - 將洞察記錄於 Power BI 儀表板,與財務團隊共用。
> - 設置 KPI,例如「平均客單價」提升 5% 目標,並在月度回顧會議中追蹤。
## 4.6 小結
探索式資料分析是資料科學與商業洞察之間的橋樑。透過系統化的統計描述、靈活的視覺化工具以及機器學習輔助的異常偵測,我們能夠快速定位商業痛點與機會。這一過程不僅僅是技術操作,更是一種「以資料說話」的商業語言。在接下來的章節,我們將學習如何將這些洞察轉化為可執行的機器學習模型,並在實務中落地。