實價登錄資料轉換小工具

roro
5 min readJul 23, 2018

--

緣起

內政部的實價登錄原始檔案,大都是被各大房產公司拿去做商業用途。以目前介面跟搜尋功能最好的信義房屋行情網站來說,還是會隱藏一些原始資料。

而且,實價登錄資料裡面一欄位:單價(元/平方公尺) ,由於車位有無、車位登記方式的不準確,大部分筆數的失真會很嚴重。因此,單價(元/平方公尺) 這欄位幾乎沒有參考價值。那麼單價應該怎麼算?我參考這邊說明

內政部的實價登錄提供三種資料:買賣、預售屋、出租 的交易資料。出租交易幾乎沒有什麼人在登錄,資料非常少。

因此就寫了個小工具順便練習 javascript 跟 mongo shell。這個小工具 (Taiwan_estates_transactionData_convert)目前針對買賣資料做處理。之後再寫預售屋、出租的部分了。

此工具解決的問題

  1. 拿掉會誤導人的原始單價資訊,另外計算單價的規則:

有車位與否分成兩種算法:

無車位:換算單價,不包含車位轉移的交易才列入計算。
總價/ 建物移轉總面積
有車位換算單價(坪),有車位轉移 and 車位移轉總面積 !==0 and 車位總價 !==0。 3個條件都滿足才列入計算。(簡單說,有登錄:車位轉移、車位面積、車位價格,才列入換算『單價/(坪)』目前算式:
(總價 - 車位價) / ( 建物移轉總面積(平方公尺) - 車位移轉總面積(平方公尺) )

以上若有錯誤,歡迎 comment 或 github issue / PR

2. 地址取一個,可以讓 google map 定位,儲存在 mymap。

3. 日期轉換成 西元。

4. 面積轉換成 坪。

5. 換算車位單價(平方公尺)。

轉檔後,新增的 7 個欄位

addresstradeDatebuild_CompletionDate單價(元/坪)(已扣除車位)建物移轉總面積(坪/扣車位面積)土地移轉總面積(坪)車位移轉總面積(坪)

將新增那些欄位,是依據原始資料條件而有所不同(例如:原始檔案沒有建築物完工日的話,就不會生成 build_CompletionDate 這欄位)

環境準備

下載原始資料

可以指定行政區域
也可以全抓

必須的準備步驟

  • 新增一個資料夾存放原始 data,(位置依照自己喜好) 建議以日期命名;因爲會影響到後續的 collection 名稱。
  • 接着把實價網站抓回來的壓縮檔,解壓縮到此資料夾。
  • 把這資料夾的絕對路徑 設定到 dir_path.js 裡面
執行 
node 0_1_setDir.js
./node_exe_mongoCmd/0_1_setDir.js然後輸入剛剛自行新增的資料夾絕對路徑。
  • 指定 dbname
執行 
node 0_setDatabase.js
待會會把所有 csv 檔一次全部匯入這個 db.
設定記錄在 ./config/setDB.js
  • 自動更名所有 csv 檔案,自動刪除所有無用的檔案
執行
node
0_2_renameCSV.js

剛剛自行新增的資料夾底下,會新增 『rent』『presell』資料夾,分別代表 『出租』『預售』的資料,某些csv檔案會被命名好之後丟到裡面。目前還沒有寫這兩種資料的轉檔功能,因此還暫時還用不到。 稍後會用到的是 _buy 後綴的 csv 檔案。

import 到 MongoDB

執行
node 1_mongoimport_CSV_JSON.js

會把所有 csv 檔案一次全部匯入 mongoDB , 以檔名當做 collection 的名稱,一個 csv 檔案一個 collection。

在 mongoDB compass 裡面可以看到所有 csv 檔案已經匯入。

執行 mongo shell 轉檔

執行 
node 2_1_mongoCollections_convert.js
原始檔案
新增 上述欄位。(將新增那些欄位,是依據原始資料條件而有所不同)

匯出 csv 檔案

執行
node 3_mongoexport_CSV.js

剛剛自行新增的資料夾底下,會新增 『csv_for_googleMap』;可直接匯入 google mymap 或是給 google my map / google sheet 使用。『csv_for_googleMap』資料夾之下會新增一個『onlyLand』資料夾,只有土地轉移的交易,會在此另存新檔。

上傳 csv 給 google my map

匯入 mymap(如果 csv 檔案超過 2000 筆,請分割成幾個較小檔案)

  • 地標位置請選擇 address 這個欄位。
  • 標記的名稱可以依照需要選擇,這邊選『都市土地使用分區』。

編輯 google myMap 。很快的,成果大致如下:

歡迎 comment 或 github issue / PR

--

--