資料預處理程式

Python 數據處理: numpy, pandas

房價資訊可以內政部 open data 取得, 我們假設已經下載新北市某年某季檔案, 我們選 csv 好了, 解壓縮後取得f_lvr_land_a.csv 檔案. 這個檔案在本地硬碟, 我們必須上傳到 colab 雲端, 而 goole 也提供模組於 colab, 我們只要

from google.colab import files

uploaded = files.upload()

即可讓我們挑選檔案上傳, 之後我們再從 uploaded 這變數找到剛剛完成上傳的檔案.

接著我們 可以用 pandas 的 read_csv() 來讀取剛剛上傳colab雲端的檔案 'f_lvr_land_a.csv'.

不過並不能直接採文字檔, 必須利用 io.BytesIO(uploaded['f_lvr_land_a.csv']) 來讀取.

此方式是為了講解簡單, 當檔案很多或是很大時, 也許全部是放在 Google Drive, 就必須用 PyDrive 或 Google 提供的 REST Api, 並且都要取得認證碼, 稍嫌囉嗦一點, 但是會比較務實.

程式碼:

import io

from google.colab import files

import pandas as pd

uploaded = files.upload()

#假設上傳檔案名稱為 f_lvr_land_a.csv

df=pd.read_csv(io.BytesIO(uploaded['f_lvr_land_a.csv']))

df #預覽df內容

上圖是我們從 open data取得的原始數據. 經常我們參與機器學習或是某某智慧XX專案時, 最佔人力資源很可能是資料的預處理, 而且很可能成敗也跟處理的好壞有關, 雖然內政部已經將資料幫忙整理的很乾淨, 但我們還不能直接丟入模型. 例如:

  1. Row 0 很明顯是欄位英文翻譯, 要拿掉

  2. "非都市土地使用分區", "非都市土地使用編定" 有缺值 (NaN), 我們必須有策略來因應

  3. "總樓層數"與"交易筆棟數" 是中文字串我們打算轉換成數字

  4. 許多欄位是類別式型態 如: "主要建材", "交易標的", "轉移層次" 等等, 需要編碼

  5. "交易年月日", "建築完成年月日" 要由民國字串 轉為程式可計算的時間

以下我們逐步說明細節, 而通常在Python 會利用 Pandas, Numpy 提供的功能函數來處理.