資料處理技巧

使用 PySpark 清理資料

Mike Metzger

Data Engineering Consultant

我們要解析的是什麼?

  • 資料不正確
    • 空白列
    • 註解行
    • 標頭
  • 巢狀結構
    • 多重分隔符
  • 非規則資料
    • 各列欄數不一
  • 著重於 CSV 資料
width, height, image

# This is a comment
200    300    affenpinscher;0
600    450    Collie;307    Collie;101
600    449    Japanese_spaniel;23
使用 PySpark 清理資料

Stanford ImageNet 標註

  • 辨識影像中的犬種
  • 提供影像內所有犬隻清單
  • 其他後設資料(基底資料夾、影像尺寸等)

範例列:

02111277    n02111277_3206    500    375    Newfoundland,110,73,416,298
02108422    n02108422_4375    500    375    bull_mastiff,101,90,214,356 \
 bull_mastiff,282,74,416,370
使用 PySpark 清理資料

移除空白行、標頭與註解

Spark 的 CSV 剖析器:

  • 自動移除空白行
  • 可用選用引數移除註解
df1 = spark.read.csv('datafile.csv.gz', comment='#')
  • 處理標頭欄位
    • 以引數指定
    • 若定義了綱要則忽略
df1 = spark.read.csv('datafile.csv.gz', header='True')
使用 PySpark 清理資料

自動建立欄位

Spark 會:

  • sep 引數自動建立 DataFrame 欄位
    df1 = spark.read.csv('datafile.csv.gz', sep=',')
    
  • 預設使用 ,
  • 即使字串中沒有 sep 也能成功剖析
    df1 = spark.read.csv('datafile.csv.gz', sep='*')
    
  • 將資料存入預設欄位 _c0
  • 讓你正確處理巢狀分隔符
使用 PySpark 清理資料

一起來練習吧!

使用 PySpark 清理資料

Preparing Video For Download...