返回目錄
A
資料驅動的決策:企業資料科學實務 - 第 2 章
第二章:資料探索與清理—從原始資料到乾淨洞察
發布於 2026-03-03 00:47
# 第二章:資料探索與清理—從原始資料到乾淨洞察
> **為什麼要先「探索」?**
>
> 在資料科學的流程中,資料探索往往是「看見」問題的第一步。就像工程師在拆解機械前先觀察表面狀態,資料探索能幫助我們快速定位數據缺陷、潛在異常,甚至在最初的可視化中發現隱藏的商業機會。
## 2.1 資料探索的核心觀念
1. **定量與定性雙管齊下**
- *定量*:統計量(平均值、標準差、分位數)以及分佈圖表(直方圖、箱形圖)。
- *定性*:文字說明、業務語境、專家知識。
2. **假設檢驗與探索式分析的平衡**
- 不要急於推斷結果,而是先描繪「數據的形狀」。
- 以「為什麼會有這樣的分佈?」為導向,逐步縮小疑問。
3. **可重現性**
- 建立 Notebook 或腳本,確保每一步都可追溯、可重複。
## 2.2 常用工具與技術
| 工具 | 主要功能 | 典型應用場景 |
|------|----------|--------------|
| Pandas | 資料框架、快速計算 | 機器學習前的資料前處理 |
| Matplotlib / Seaborn | 數據可視化 | 直方圖、散點圖、熱力圖 |
| NumPy | 數值運算 | 大型矩陣計算 |
| Jupyter Notebook | 交互式分析 | 數據探索、報告製作 |
| DataDog / Grafana | 監控數據流 | 監測數據管道健康 |
> **小技巧**:在 Jupyter Notebook 中使用 `%matplotlib inline` 可直接在筆記本內顯示圖表,省去輸出文件的麻煩。
## 2.3 案例實踐:銀行客戶行為資料探索
### 2.3.1 資料來源
- **交易紀錄**:包含時間、金額、類別、地點。
- **客戶基本資料**:年齡、性別、職業、戶籍。
- **行為指標**:登入頻率、交易成功率、遲延支付比例。
### 2.3.2 資料探索步驟
1. **載入資料**
python
import pandas as pd
df = pd.read_csv('bank_transactions.csv')
2. **基本統計檢查**
python
df.describe(include='all')
- 觀察 **欠缺值**: `df.isnull().sum()`。
3. **異常值檢測**
- 使用箱形圖(Boxplot)查看交易金額的異常值。
python
import seaborn as sns
sns.boxplot(x=df['amount'])
4. **類別變量分佈**
- `df['merchant_category'].value_counts().head()`。
5. **時間序列視覺化**
- 交易量隨時間變化: `df.groupby('date')['amount'].sum().plot()`。
### 2.3.3 主要發現
- **交易金額分佈極度偏態**: 95% 的交易金額低於 200 元,少數高額交易對平均值造成擾動。
- **遲延支付比例**: 35% 的客戶存在逾期交易,且多集中於「學生」與「退休」群體。
- **交易頻率與地點相關性**: 大量高頻交易發生於大型商場區域,顯示潛在的「購物節」效應。
## 2.4 實務建議與常見陷阱
| 風險 | 針對措施 |
|------|-----------|
| **數據缺失過多** | 與資料所有者討論補齊或刪除,必要時使用插值或模型預測補值 |
| **樣本偏差** | 檢查資料收集範圍,若偏差嚴重,需收集更多樣本或做加權調整 |
| **時間同步問題** | 確保所有時間戳統一時區,避免夏令時間誤差 |
| **隱私與合規** | 刪除或匿名化個人敏感資訊,遵守 GDPR / CCPA 相關規範 |
> **開放式思考**:在探索階段,保持好奇心。若發現非直覺的關聯,先把它標記為「待驗證」,不要急於推論。
## 2.5 小結
- 資料探索是「知情決策」的起點;透過統計、可視化和專家知識,能快速定位資料品質問題與商業洞察。
- 清晰的探索流程不僅提升工作效率,更能降低後續模型訓練的風險。
- 以銀行客戶資料為例,我們從數值分佈到時間序列,再到類別關聯,全方位描繪出資料面貌,為預測模型奠定堅實基礎。
> **延伸閱讀**:
> - *《Feature Engineering for Machine Learning》* (Alice Zheng)
> - *《Python Data Science Handbook》* (Jake VanderPlas)