跳到主要內容

DS 102 實作中心

使用模擬的公司與據點資料練習型態清理、缺失與重複判斷、join cardinality、單位統一與驗證規則,完成一份可信的整理流程。

資訊

DS 102 實作資料為教學用模擬資料,所有公司名稱與數值均為示例,不代表任何真實企業的營運資料。

注意

請使用課程提供的模擬檔案練習。未經授權,不要把機關或公司的機密資料、個人資料或敏感資料貼到 AI 工具;使用真實的內部營運資料前,請先確認所屬單位的規範。

下載實作檔案

公司主檔

DS102_Company_Master.csv

5 家模擬公司的基本資料:company_id、company_name、sector、hq_region。

下載

據點月資料(寬格式)

DS102_Site_Monthly_Wide.csv

2 家公司、每家 2 個據點、12 個月份欄位的用電量資料,用於 reshape 與 join cardinality 練習。

下載

公司年度乾淨資料

DS102_Company_Year_Clean.csv

5 家公司、2023 至 2025 年,共 15 列。用於 Guided Lab。

下載

公司年度練習資料

DS102_Company_Year_Practice.csv

刻意含有資料品質問題的練習資料。Data Quality Challenge 與 Independent Lab 使用。

下載

資料字典(繁體中文)

DS102_Data_Dictionary_zh-TW.csv

三個檔案每個欄位的型態、單位、是否必填與說明。

下載

Data dictionary (English)

DS102_Data_Dictionary_en.csv

英文版資料字典,欄位與單位和中文版相同。

下載

Guided Lab starter notebook

DS102_Guided_Lab_Starter.ipynb

附引導與 TODO 的起始 Notebook,可從新的 kernel 由上到下執行。

Independent Lab starter notebook

DS102_Independent_Lab_Starter.ipynb

附清理決策紀錄範本的起始 Notebook。

實作任務

實作 A:Type & Date Repair

練習資料中有一欄營收被存成含千分位逗號的文字,還有一個日期無法解析。請先檢查再處理,並保留無法解析的線索。

使用檔案: 公司年度練習資料、資料字典(繁體中文)

步驟

  1. 載入 DS102_Company_Year_Practice.csv,用 df.dtypes 檢查每欄的型態。
  2. 找出被存成文字的數值欄位,確認問題字元(例如千分位逗號)後再轉換。
  3. 用 pd.to_datetime(..., errors="coerce") 解析 reported_at,並標記解析失敗的列。
  4. 確認處理後的型態是否符合資料字典。

要完成的產出

  • 修正後的數值欄位(純數字型態)
  • 一個標記日期解析失敗的旗標欄位
  • 沒有被猜測填入的日期

實作 B:Missing/Duplicate Diagnosis

練習資料中有缺失值與重複列。請先判斷缺失代表什麼、重複是否真的是重複,再決定處理方式。

使用檔案: 公司年度練習資料、資料字典(繁體中文)

步驟

  1. 用 df.isna().sum() 找出缺失值,並判斷每個缺失代表未揭露、未蒐集或其他情況。
  2. 用 df.duplicated().sum() 檢查完全重複的列。
  3. 建立 company_id + year 的候選鍵,確認是否有重複的鍵。
  4. 寫下每一項發現的處理決策與理由。

要完成的產出

  • 缺失值的判斷與處理方式
  • 重複列的判斷與處理方式
  • 候選鍵唯一性的檢查結果

資訊

本頁不會告訴你總共有幾個問題,也不公布標準答案。請把找到的問題與判斷理由帶到課堂討論。

實作 C:Join Cardinality Challenge

據點月資料中的 site_id 會在不同公司間重複出現。請先發現這個陷阱,再建立正確的 join 鍵。

使用檔案: 據點月資料(寬格式)、公司主檔、資料字典(繁體中文)

步驟

  1. 用 groupby("site_id")["company_id"].nunique() 檢查 site_id 是否在多家公司間重複。
  2. 嘗試只用 site_id 與公司主檔做 join,觀察列數是否符合預期。
  3. 建立 company_id + site_id 的正確 join 鍵,重新做一次 join。
  4. 比較兩次 join 的列數差異,寫下為什麼會不一樣。

要完成的產出

  • site_id 重複情況的檢查結果
  • 兩種 join 方式的列數比較
  • 對 many-to-many 風險的說明

實作 D:Unit Normalization Review

假設另一個來源用不同單位記錄同一種指標。請只在有明確換算規則時才統一單位,並保留原始單位。

使用檔案: 公司年度乾淨資料、資料字典(繁體中文)

步驟

  1. 從資料字典確認 waste_tonnes 的單位。
  2. 假設有一個以公斤為單位的來源,寫出換算成公噸的公式。
  3. 在轉換後的資料中保留一欄記錄原始單位。
  4. 檢查同名欄位在不同來源中的定義是否一致(例如 employees 是否都只計正職)。

要完成的產出

  • 一份換算規則的說明
  • 保留原始單位的欄位
  • 定義是否一致的檢查結果

實作 E:Data Contract Validation

把資料的預期規則寫成可執行的檢查,並確認規則真的能在資料有問題時失敗。

使用檔案: 公司年度乾淨資料、公司主檔、據點月資料(寬格式)、資料字典(繁體中文)

步驟

  1. 寫一項唯一性檢查:company_id + year 不可重複。
  2. 寫一項範圍檢查:employees 不可為負。
  3. 寫一項允許值檢查:sector 必須在允許清單內。
  4. 寫一項參照完整性檢查:site_monthly 的 company_id 必須存在於公司主檔。
  5. 用練習資料(含品質問題)再跑一次,確認至少有一項規則會失敗。

要完成的產出

  • 至少四項可執行的驗證檢查
  • 用練習資料驗證規則真的會失敗的證明
  • 每項規則對應的規則類型(範圍、允許值、唯一性、參照完整性)

完成標記只記錄在這個瀏覽器(加入梯次後會同步)。實作成果請保存在你自己的 Notebook。

同步我的進度加入梯次後,進度可跨裝置保存,講師也能看到

資訊

加入後,你已完成的模組編號會連同「學員代碼」傳送給講師,講師可以看到你的進度。請使用講師提供的代碼,不要輸入姓名、公司機密或其他個資。進度資料與該梯次的其他資料一起保存。

接下來做什麼?