返回目錄
A
數據科學與永續未來 - 第 3 章
第三章:資料清洗與標準化的永續之路
發布於 2026-02-24 07:51
# 第三章:資料清洗與標準化的永續之路
> **章節目標**:將原始的 100 TB 資料轉化為可供模型訓練、分析與決策的乾淨、結構化資料,並確保整個流程可持續、透明且合規。
## 1. 為什麼資料清洗不只是技術工作
- **資料品質是永續政策的基石**:不正確或缺失的數據會直接影響碳排放評估、循環經濟模型甚至社會影響測量。
- **治理的可追溯性**:清洗流程必須被記錄、審核,才能符合 GDPR、ISO 27001 等規範。
- **跨部門溝通**:不同部門對「正確」的定義不一,清洗規範化可降低衝突、提升協同效率。
## 2. 資料清洗流程框架
1. **資料檢查**:
- *完整性*:確認缺失值比例、重複記錄、邏輯錯誤。
- *一致性*:單位統一、時間格式、命名規則。
2. **資料轉換**:
- *格式化*:將文本編碼統一為 UTF‑8,數值格式轉為 IEEE 754。
- *標準化*:使用正規表達式清理地址、電話號碼等欄位。
3. **資料篩選**:
- *異常值處理*:箱型圖、Z‑score、IQR 交叉檢驗。
- *隱私保護*:同時套用差分隱私機制,確保資料可用性與隱私共存。
4. **資料驗證**:
- *驗證規則*:利用 JSON Schema 或 Apache Avro 進行結構驗證。
- *自動化測試*:CI/CD pipeline 中加入資料質量測試,確保每次更新不破壞既有標準。
## 3. 具體實作範例
### 3.1 缺失值處理
python
import pandas as pd
# 讀取部分樣本
df = pd.read_parquet('raw_data.parquet')
# 1. 計算缺失比例
missing_rate = df.isna().mean()
print('缺失比例:', missing_rate)
# 2. 針對「排放量」欄位使用中位數填補
median_val = df['CO2_emission'].median()
df['CO2_emission'].fillna(median_val, inplace=True)
> **批判性點**:雖然中位數填補簡單易行,但對於季節性或區域性偏差高的指標,可能引入誤差。此處建議搭配時序模型(如 Prophet)預測缺失值。
### 3.2 單位與時間格式統一
python
# 1. 單位轉換(噸 → 公斤)
df['CO2_emission_kg'] = df['CO2_emission_tonnes'] * 1000
# 2. 時間格式統一為 ISO 8601
from dateutil import parser
def to_iso8601(ts):
return parser.parse(ts).isoformat()
df['timestamp'] = df['timestamp'].apply(to_iso8601)
### 3.3 典型異常值篩選(Z‑score)
python
from scipy import stats
# 計算 Z‑score
z_scores = stats.zscore(df[['CO2_emission_kg']])
abs_z = abs(z_scores)
# 篩除 Z‑score > 3 的樣本
mask = abs_z < 3
filtered_df = df[mask[0]]
> **警示**:若資料量巨大(>10 TB),建議在 Spark 或 Flink 上執行此類算子,避免單機記憶體瓶頸。
## 4. 資料標準化:為模型訓練保駕護航
### 4.1 什麼是「資料標準化」?
- **標準化 (Standardization)**:將特徵轉換為均值為 0、標準差為 1 的分佈。
- **最小最大縮放 (Min‑Max Scaling)**:將數值映射至 [0, 1] 範圍。
- **正規化 (Normalization)**:針對向量數據做 L2 正則化。
### 4.2 為何要標準化?
- **提升機器學習演算法收斂速度**:尤其是梯度下降法。
- **防止某些特徵因尺度過大而主導模型**:在碳排放預測中,電量可能遠大於交通量,若不標準化,會扭曲模型。
- **確保可解釋性**:統一尺度可更易解讀特徵重要性。
### 4.3 實作範例(Python / PySpark)
python
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaled_features = scaler.fit_transform(filtered_df[['CO2_emission_kg', 'electricity_kWh']])
# 轉回 DataFrame
scaled_df = pd.DataFrame(scaled_features, columns=['CO2_std', 'elec_std'])
> **挑戰**:在跨部門共享資料時,需保留「原始值」以便對照,建議將標準化層次以「派生欄位」的方式附加到資料庫中,避免覆寫。
## 5. 資料治理的「清洗+標準化」記錄
| 步驟 | 工具 | 輸出 | 合規檢查 |
|---|---|---|---|
| 1 | PySpark DataFrame | 清洗後 parquet | 欄位完整性檢查 |
| 2 | Data Quality Dashboard | 生成指標(缺失率、異常率) | GDPR 風險評估 |
| 3 | Delta Lake | 版本化儲存 | 追蹤歷史變更 |
> **重點**:將每一步的「輸入 → 變換 → 輸出」以元資料表格形式記錄,確保任何人都能追溯到原始來源,並在審計時快速定位問題。
## 6. 永續視角下的清洗與標準化
1. **節能減碳**:在資料中心選擇低功耗的雲端服務,並在資料處理過程中使用「批次處理」減少能源浪費。
2. **循環經濟**:將清洗後的資料包裝為開放資料集,供第三方研究者重複利用,減少重複蒐集成本。
3. **社會影響**:確保清洗過程不會無意中歪曲弱勢社群的數據,例如對低收入地區的排放數據進行過度填補可能掩蓋真實問題。
## 7. 小結
資料清洗與標準化不只是「把資料變乾淨」的工程,它是將永續理念嵌入數據生命週期的關鍵環節。透過細緻的流程設計、可追溯的治理機制與對永續目標的對齊,我們才能將數據轉化為真正具備洞見、能夠驅動政策與商業策略的資產。
> **前瞻**:下一章將聚焦於「資料模型建構」——如何將清洗後的資料進一步轉化為可行的碳排放預測模型、循環經濟指標及社會影響評估工具。