基礎題¶
CSV、JSON、Parquet 各自最適合哪個使用時機?各舉一個日常工作情境。
為什麼讀 CSV 時所有欄位預設都是字串型別?這會帶來什麼問題?
errors="coerce"在型別轉換裡的作用是什麼?和errors="raise"有何差異?缺值(
NaN)和空字串("")在 Pandas 裡是同一件事嗎?為什麼要區分?為什麼要把原始資料、處理後資料和快照分開存放?放在一起會有什麼風險?
實作題¶
修改
normalize_table(),讓它在遇到 schema 中未定義的欄位時,回傳警告訊息而不是直接忽略。為
read_data_source()新增對.tsv(Tab 分隔)格式的支援。在測試中加入一個案例:輸入 Excel 檔(
.xlsx),驗證輸出的 Parquet 欄位型別與 schema 一致。新增一個
validate_schema(df, schema)函式,在正規化後驗證每個欄位的型別是否符合預期,不符合時回傳詳細差異報告。
反思題¶
如果資料來源每週更新,但欄位名稱可能悄悄改變,你會在流程的哪個階段加入防護?
normalize_table()會在欄位缺失時自動補pd.NA。這個設計的好處是什麼?有沒有可能造成問題?本章用 schema 字典來定義欄位型別。如果把這份 schema 改存成外部設定檔(如 JSON 或 YAML),會帶來什麼好處?又要注意什麼風險?