聊天視窗

資料科學實務:從數據洞察到決策行動 - 第 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 小結 探索式資料分析是資料科學與商業洞察之間的橋樑。透過系統化的統計描述、靈活的視覺化工具以及機器學習輔助的異常偵測,我們能夠快速定位商業痛點與機會。這一過程不僅僅是技術操作,更是一種「以資料說話」的商業語言。在接下來的章節,我們將學習如何將這些洞察轉化為可執行的機器學習模型,並在實務中落地。