2026年11月1日 星期日

【PySpark 大數據處理 07】進階資料清洗:字串處理 (String) 與時間格式 (Timestamp) 正規化

在上一篇中,我們成功消滅了缺失值與重複資料。但資料的考驗還沒結束!在真實的商業環境中,資料往往是由不同系統或人工輸入匯集而成的,這會導致兩個常見的災難:充滿雜訊的字串(例如多餘的空白、大小寫不一致),以及格式五花八門的日期時間。

今天,我們將學習 PySpark 內建強大的字串處理函數,以及如何將混亂的時間統一「正規化 (Normalization)」,為未來的時間序列分析打下良好基礎。

1. 觀念解析:為什麼需要正規化?

對電腦來說,字串 `"Apple "` (後面多一個空白) 和 `"Apple"` 是完全不同的東西;同樣地,字串 `"2026/10/25"` 與時間戳記 `2026-10-25 00:00:00` 在底層的處理邏輯也天差地遠。請參考下方的轉換示意圖:

2026年10月31日 星期六

【PySpark 大數據處理 06】資料品質守門員:優雅處理缺失值 (Null) 與重複資料

在我們處理巨量資料時,特別是針對物聯網 (IoT)、智慧城市感測器數據或是企業 ESG 永續治理的相關指標,我們幾乎不可能拿到完美的資料。感測器斷線會產生缺失值 (Null),系統重試機制則可能引發重複的紀錄 (Duplicates)。如果帶著這些「髒資料」直接進入分析或機器學習模型,將會導致嚴重的誤差(這就是所謂的 Garbage In, Garbage Out)。

今天,我們將學習 PySpark 內建的資料品質守門員,透過幾個簡單的語法,優雅地處理這些異常資料!

1. 缺失值處理策略:刪除 (Drop) 還是 填補 (Fill)?

當我們遇到欄位空白 (Null 或 NaN) 時,通常有兩種作法:一是將該筆資料整列刪除;二是根據商業邏輯填補一個預設值(例如補 0,或是補上平均數)。

【PySpark 大數據處理 05】資料塑形與運算:新增欄位 (withColumn) 與型態轉換 (Cast)

在上一篇中,我們學會了如何用 select() 與 filter() 剔除不要的資料。但面對留下來的資料,我們往往還需要進行「加工」。在實務的 ETL (Extract, Transform, Load) 流程中,最常見的兩個痛點是:資料型態錯誤(例如系統把價格存成了字串)以及需要計算新指標(例如算出總金額或折扣價)。

今天,我們要來認識 PySpark DataFrame 中最強大的變形金剛:withColumn() 函數!

1. 核心觀念:什麼是 withColumn?

與傳統 SQL 使用 ALTER TABLE 或是 SELECT A, B, A*B AS C 的思維不同,在 PySpark 中,DataFrame 是不可變的 (Immutable)。當我們想要新增或修改欄位時,必須使用 withColumn(欄位名稱, 運算邏輯) 來產生一個「全新的 DataFrame」。

熱門文章