視覺化檢視資料

使用 PySpark 進行特徵工程

John Hogue

Lead Data Scientist, General Mills

用 DataFrame.describe() 做描述統計

df.describe(['LISTPRICE']).show()
+-------+------------------+
|summary|         LISTPRICE|
+-------+------------------+
|  count|              5000|
|   mean|        263419.365|
| stddev|143944.10818036905|
|    min|            100000|
|    max|             99999|
+-------+------------------+
使用 PySpark 進行特徵工程

多種描述統計函式現成可用

  • 平均數
    • pyspark.sql.functions.mean(col)
  • 偏度
    • pyspark.sql.functions.skewness(col)
  • 最小值
    • pyspark.sql.functions.min(col)
  • 共變異數
    • cov(col1, col2)
  • 相關係數
    • corr(col1, col2)
使用 PySpark 進行特徵工程

mean() 範例

  • mean(col)
  • 彙總函式:回傳群組值的平均數。
df.agg({'SALESCLOSEPRICE': 'mean'}).collect()
[Row(avg(SALESCLOSEPRICE)=262804.4668)]
使用 PySpark 進行特徵工程

cov() 範例

  • cov(col1, col2)
  • 參數:
    • col1 – 第 1 欄
    • col2 – 第 2 欄
df.cov('SALESCLOSEPRICE', 'YEARBUILT')
1281910.3840634783
使用 PySpark 進行特徵工程

seaborn:統計資料視覺化

Seaborn

使用 PySpark 進行特徵工程

繪圖注意事項

使用 Seaborn 等標準函式庫繪圖前,需先將 PySpark DataFrame 轉成 Pandas

WARNING: 將 PySpark DataFrame 取樣後再轉成 Pandas!

  • sample(withReplacement, fraction, seed=None)
    • withReplacement 允許樣本重複
    • fraction 要保留的比例(%)
    • seed 隨機種子,確保可重現
# 取樣 50% 的 PySpark DataFrame 並計算列數
df.sample(False, 0.5, 42).count()
2504
使用 PySpark 進行特徵工程

分佈圖繪製前的準備

Seaborn distplot()

  • seaborn.distplot(a)
  • a:Series、1d-array,或 list。觀測資料。
# 匯入你喜歡的視覺化函式庫
import seaborn as sns

# 取樣資料框 sample_df = df.select(['SALESCLOSEPRICE']).sample(False, 0.5, 42)
# 轉為 Pandas DataFrame pandas_df = sample_df.toPandas()
# 繪圖 sns.distplot(pandas_df)
使用 PySpark 進行特徵工程

成交價的分佈圖

Displot

使用 PySpark 進行特徵工程

關係圖繪製

Seaborn lmplot()

  • seaborn.lmplot(x, y, data)
  • xy:字串,輸入變數;必須是資料中的欄名。
  • data:Pandas DataFrame
# 匯入你喜歡的視覺化函式庫
import seaborn as sns

# 選擇欄位 s_df = df.select(['SALESCLOSEPRICE', 'SQFTABOVEGROUND']) # 取樣資料框 s_df = s_df.sample(False, 0.5, 42)
# 轉為 Pandas DataFrame pandas_df = s_df.toPandas()
# 繪圖 sns.lmplot(x='SQFTABOVEGROUND', y='SALESCLOSEPRICE', data=pandas_df)
使用 PySpark 進行特徵工程

地上面積與成交價的線性模型圖

Linear Model Plot

使用 PySpark 進行特徵工程

一起來練習吧!

使用 PySpark 進行特徵工程

Preparing Video For Download...