線上讀取高雄市不動產實價登錄資料與日期處理
In [1]:
import pandas as pd
url="https://data.kcg.gov.tw/dataset/f91cb647-ab05-4474-9687-d918421ca3a4/resource/25c77fbc-950a-45eb-b91e-79b536fabae5/download/d00mei-yi03open-data-10801open-data1080401-1080630.xlsx"
df = pd.read_excel(url)
df.head()
Out[1]:
申報種類
交易標的種類
土地數量
建物數量
車位數量
幾房
幾廳
幾衛
有無隔間
建物型態
…
代表建號主要建材
代表建號總層數
代表建號建築完成日期
代表建號屋齡
代表建號層次
車位總價格
車位總持分面積
地建號範圍
行政區
地段
0
買賣
房地(土地+建物)
1.0
1.0
NaN
3.0
2.0
2.0
Y
住宅大樓(11F含以上有電梯)
…
見其它登記事項
15.0
1070830.0
1.0
三層
NaN
NaN
建國四路151~180號
鹽埕區
興仁段
1
買賣
房地(土地+建物)+車位
1.0
1.0
1.0
3.0
2.0
3.0
Y
住宅大樓(11F含以上有電梯)
…
見其它登記事項
15.0
1070830.0
1.0
七層
0.0
0.0
建國四路151~180號
鹽埕區
興仁段
2
買賣
房地(土地+建物)+車位
1.0
1.0
1.0
3.0
2.0
2.0
Y
住宅大樓(11F含以上有電梯)
…
見其它登記事項
15.0
1070830.0
1.0
五層
0.0
0.0
建國四路151~180號
鹽埕區
興仁段
3
買賣
房地(土地+建物)+車位
1.0
1.0
1.0
3.0
2.0
2.0
Y
住宅大樓(11F含以上有電梯)
…
見其它登記事項
15.0
1070830.0
1.0
十一層
0.0
0.0
建國四路151~180號
鹽埕區
興仁段
4
買賣
房地(土地+建物)+車位
1.0
1.0
1.0
3.0
2.0
2.0
Y
住宅大樓(11F含以上有電梯)
…
見其它登記事項
15.0
1070830.0
1.0
十三層
0.0
0.0
建國四路151~180號
鹽埕區
興仁段
5 rows × 35 columns
In [1]:
import pandas as pd url="https://data.kcg.gov.tw/dataset/f91cb647-ab05-4474-9687-d918421ca3a4/resource/25c77fbc-950a-45eb-b91e-79b536fabae5/download/d00mei-yi03open-data-10801open-data1080401-1080630.xlsx" df = pd.read_excel(url) df.head()
Out[1]:
申報種類 | 交易標的種類 | 土地數量 | 建物數量 | 車位數量 | 幾房 | 幾廳 | 幾衛 | 有無隔間 | 建物型態 | … | 代表建號主要建材 | 代表建號總層數 | 代表建號建築完成日期 | 代表建號屋齡 | 代表建號層次 | 車位總價格 | 車位總持分面積 | 地建號範圍 | 行政區 | 地段 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 買賣 | 房地(土地+建物) | 1.0 | 1.0 | NaN | 3.0 | 2.0 | 2.0 | Y | 住宅大樓(11F含以上有電梯) | … | 見其它登記事項 | 15.0 | 1070830.0 | 1.0 | 三層 | NaN | NaN | 建國四路151~180號 | 鹽埕區 | 興仁段 |
1 | 買賣 | 房地(土地+建物)+車位 | 1.0 | 1.0 | 1.0 | 3.0 | 2.0 | 3.0 | Y | 住宅大樓(11F含以上有電梯) | … | 見其它登記事項 | 15.0 | 1070830.0 | 1.0 | 七層 | 0.0 | 0.0 | 建國四路151~180號 | 鹽埕區 | 興仁段 |
2 | 買賣 | 房地(土地+建物)+車位 | 1.0 | 1.0 | 1.0 | 3.0 | 2.0 | 2.0 | Y | 住宅大樓(11F含以上有電梯) | … | 見其它登記事項 | 15.0 | 1070830.0 | 1.0 | 五層 | 0.0 | 0.0 | 建國四路151~180號 | 鹽埕區 | 興仁段 |
3 | 買賣 | 房地(土地+建物)+車位 | 1.0 | 1.0 | 1.0 | 3.0 | 2.0 | 2.0 | Y | 住宅大樓(11F含以上有電梯) | … | 見其它登記事項 | 15.0 | 1070830.0 | 1.0 | 十一層 | 0.0 | 0.0 | 建國四路151~180號 | 鹽埕區 | 興仁段 |
4 | 買賣 | 房地(土地+建物)+車位 | 1.0 | 1.0 | 1.0 | 3.0 | 2.0 | 2.0 | Y | 住宅大樓(11F含以上有電梯) | … | 見其它登記事項 | 15.0 | 1070830.0 | 1.0 | 十三層 | 0.0 | 0.0 | 建國四路151~180號 | 鹽埕區 | 興仁段 |
5 rows × 35 columns
順利讀取資料後,先列出欄位名稱
In [2]:
df.columns
Out[2]:
Index(['申報種類', '交易標的種類', '土地數量', '建物數量', '車位數量', '幾房', '幾廳', '幾衛', '有無隔間',
'建物型態', '房地總價', '土地總價', '建物總價', '車位總價', '有無管理組織', '交易日期', '備註欄',
'行政區代碼', '代表段號', '土地移轉面積(平方公尺)', '代表地號都市土地使用分區', '代表地號非都市土地使用分區',
'代表地號非都市土地使用地', '建物移轉面積(平方公尺)', '代表建號主要用途', '代表建號主要建材', '代表建號總層數',
'代表建號建築完成日期', '代表建號屋齡', '代表建號層次', '車位總價格', '車位總持分面積', '地建號範圍', '行政區',
'地段'],
dtype='object')
In [2]:
df.columns
Out[2]:
Index(['申報種類', '交易標的種類', '土地數量', '建物數量', '車位數量', '幾房', '幾廳', '幾衛', '有無隔間', '建物型態', '房地總價', '土地總價', '建物總價', '車位總價', '有無管理組織', '交易日期', '備註欄', '行政區代碼', '代表段號', '土地移轉面積(平方公尺)', '代表地號都市土地使用分區', '代表地號非都市土地使用分區', '代表地號非都市土地使用地', '建物移轉面積(平方公尺)', '代表建號主要用途', '代表建號主要建材', '代表建號總層數', '代表建號建築完成日期', '代表建號屋齡', '代表建號層次', '車位總價格', '車位總持分面積', '地建號範圍', '行政區', '地段'], dtype='object')
原先的日期是民國表示:
In [3]:
df['交易日期'].head()
Out[3]:
0 1080318
1 1080318
2 1080318
3 1080318
4 1080318
Name: 交易日期, dtype: int64
In [3]:
df['交易日期'].head()
Out[3]:
0 1080318 1 1080318 2 1080318 3 1080318 4 1080318 Name: 交易日期, dtype: int64
轉換為西元年月日:
In [4]:
df['交易日期'] = df['交易日期'].astype(str)
#df['test'] = df['交易日期'].str.slice(0,3)
#df['test']
#df['test'] = df['交易日期'].str.slice(-7,-4).astype(int) + 1911
#df['交易日期'] = df['test'].astype(str) + df['交易日期'].str.slice(-4,-2) + df['交易日期'].str.slice(-2, )
df['交易日期'] = (df['交易日期'].str.slice(-7,-4).astype(int) + 1911).astype(str) + df['交易日期'].str.slice(-4,-2) + df['交易日期'].str.slice(-2, )
df['交易日期'] = pd.to_datetime(df['交易日期'], format="%Y%m%d" )
df['交易日期']
Out[4]:
0 2019-03-18
1 2019-03-18
2 2019-03-18
3 2019-03-18
4 2019-03-18
...
11128 2019-04-16
11129 2019-04-16
11130 2019-04-16
11131 2019-04-16
11132 2019-04-16
Name: 交易日期, Length: 11133, dtype: datetime64[ns]
In [4]:
df['交易日期'] = df['交易日期'].astype(str) #df['test'] = df['交易日期'].str.slice(0,3) #df['test'] #df['test'] = df['交易日期'].str.slice(-7,-4).astype(int) + 1911 #df['交易日期'] = df['test'].astype(str) + df['交易日期'].str.slice(-4,-2) + df['交易日期'].str.slice(-2, ) df['交易日期'] = (df['交易日期'].str.slice(-7,-4).astype(int) + 1911).astype(str) + df['交易日期'].str.slice(-4,-2) + df['交易日期'].str.slice(-2, ) df['交易日期'] = pd.to_datetime(df['交易日期'], format="%Y%m%d" ) df['交易日期']
Out[4]:
0 2019-03-18 1 2019-03-18 2 2019-03-18 3 2019-03-18 4 2019-03-18 ... 11128 2019-04-16 11129 2019-04-16 11130 2019-04-16 11131 2019-04-16 11132 2019-04-16 Name: 交易日期, Length: 11133, dtype: datetime64[ns]
取得現在的時間後,計算160天前的日期(2019-06-21)
In [5]:
import datetime as dt
now = dt.datetime.now() # 取得目前時間
today = dt.date.today() # 取得今天日期
#date = dt.datetime.date() # 取得目前日期時間
delta = dt.timedelta(days=-160)
n_days = today + delta
print("目前時間:", now)
print("目前日期:", today)
print(delta, "天的日期為:", n_days)
目前時間: 2019-11-28 15:22:12.908443
目前日期: 2019-11-28
-160 days, 0:00:00 天的日期為: 2019-06-21
In [6]:
df[df['交易日期']==n_days]
c:userssuperuserminiconda3libsite-packagesipykernel_launcher.py:1: FutureWarning: Comparing Series of datetimes with 'datetime.date'. Currently, the
'datetime.date' is coerced to a datetime. In the future pandas will
not coerce, and 'the values will not compare equal to the
'datetime.date'. To retain the current behavior, convert the
'datetime.date' to a datetime with 'pd.Timestamp'.
"""Entry point for launching an IPython kernel.
Out[6]:
申報種類
交易標的種類
土地數量
建物數量
車位數量
幾房
幾廳
幾衛
有無隔間
建物型態
…
代表建號主要建材
代表建號總層數
代表建號建築完成日期
代表建號屋齡
代表建號層次
車位總價格
車位總持分面積
地建號範圍
行政區
地段
83
買賣
建物
NaN
1.0
NaN
NaN
NaN
NaN
N
住宅大樓(11F含以上有電梯)
…
鋼筋混凝土造
12.0
700114.0
38.0
九層
NaN
NaN
府北路31~60號
鹽埕區
府北段五小段
8150
買賣
房地(土地+建物)
2.0
1.0
NaN
5.0
2.0
5.0
Y
透天厝
…
鋼筋混凝土造
3.0
1030121.0
5.0
一層;二層;三層;屋頂突出物
NaN
NaN
大智街151~180號
大寮區
後壁寮段
10779
買賣
土地
1.0
NaN
NaN
NaN
NaN
NaN
Y
NaN
…
NaN
NaN
NaN
NaN
NaN
NaN
NaN
赤崁新段241~270地號
梓官區
赤崁新段
3 rows × 35 columns
In [5]:
import datetime as dt now = dt.datetime.now() # 取得目前時間 today = dt.date.today() # 取得今天日期 #date = dt.datetime.date() # 取得目前日期時間 delta = dt.timedelta(days=-160) n_days = today + delta print("目前時間:", now) print("目前日期:", today) print(delta, "天的日期為:", n_days)
目前時間: 2019-11-28 15:22:12.908443 目前日期: 2019-11-28 -160 days, 0:00:00 天的日期為: 2019-06-21
In [6]:
df[df['交易日期']==n_days]
c:userssuperuserminiconda3libsite-packagesipykernel_launcher.py:1: FutureWarning: Comparing Series of datetimes with 'datetime.date'. Currently, the 'datetime.date' is coerced to a datetime. In the future pandas will not coerce, and 'the values will not compare equal to the 'datetime.date'. To retain the current behavior, convert the 'datetime.date' to a datetime with 'pd.Timestamp'. """Entry point for launching an IPython kernel.
Out[6]:
申報種類 | 交易標的種類 | 土地數量 | 建物數量 | 車位數量 | 幾房 | 幾廳 | 幾衛 | 有無隔間 | 建物型態 | … | 代表建號主要建材 | 代表建號總層數 | 代表建號建築完成日期 | 代表建號屋齡 | 代表建號層次 | 車位總價格 | 車位總持分面積 | 地建號範圍 | 行政區 | 地段 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
83 | 買賣 | 建物 | NaN | 1.0 | NaN | NaN | NaN | NaN | N | 住宅大樓(11F含以上有電梯) | … | 鋼筋混凝土造 | 12.0 | 700114.0 | 38.0 | 九層 | NaN | NaN | 府北路31~60號 | 鹽埕區 | 府北段五小段 |
8150 | 買賣 | 房地(土地+建物) | 2.0 | 1.0 | NaN | 5.0 | 2.0 | 5.0 | Y | 透天厝 | … | 鋼筋混凝土造 | 3.0 | 1030121.0 | 5.0 | 一層;二層;三層;屋頂突出物 | NaN | NaN | 大智街151~180號 | 大寮區 | 後壁寮段 |
10779 | 買賣 | 土地 | 1.0 | NaN | NaN | NaN | NaN | NaN | Y | NaN | … | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 赤崁新段241~270地號 | 梓官區 | 赤崁新段 |
3 rows × 35 columns
上面的方式計算出來會有警告,改成用Timestamp的方式
In [7]:
import datetime as dt
now = dt.datetime.now() # 取得目前時間
today = dt.date.today() # 取得今天日期
delta = pd.Timedelta(days=-160)
#n_days = today + delta
n_days = pd.Timestamp( today + delta )
print("目前時間:", now)
print("目前日期:", today)
print(delta, "天的日期為:", n_days)
目前時間: 2019-11-28 15:22:13.091156
目前日期: 2019-11-28
-160 days +00:00:00 天的日期為: 2019-06-21 00:00:00
In [7]:
import datetime as dt now = dt.datetime.now() # 取得目前時間 today = dt.date.today() # 取得今天日期 delta = pd.Timedelta(days=-160) #n_days = today + delta n_days = pd.Timestamp( today + delta ) print("目前時間:", now) print("目前日期:", today) print(delta, "天的日期為:", n_days)
目前時間: 2019-11-28 15:22:13.091156 目前日期: 2019-11-28 -160 days +00:00:00 天的日期為: 2019-06-21 00:00:00
再次找出160天前的交易日期資料,這次就沒警告訊息了
In [8]:
df[df['交易日期']==n_days]
Out[8]:
申報種類
交易標的種類
土地數量
建物數量
車位數量
幾房
幾廳
幾衛
有無隔間
建物型態
…
代表建號主要建材
代表建號總層數
代表建號建築完成日期
代表建號屋齡
代表建號層次
車位總價格
車位總持分面積
地建號範圍
行政區
地段
83
買賣
建物
NaN
1.0
NaN
NaN
NaN
NaN
N
住宅大樓(11F含以上有電梯)
…
鋼筋混凝土造
12.0
700114.0
38.0
九層
NaN
NaN
府北路31~60號
鹽埕區
府北段五小段
8150
買賣
房地(土地+建物)
2.0
1.0
NaN
5.0
2.0
5.0
Y
透天厝
…
鋼筋混凝土造
3.0
1030121.0
5.0
一層;二層;三層;屋頂突出物
NaN
NaN
大智街151~180號
大寮區
後壁寮段
10779
買賣
土地
1.0
NaN
NaN
NaN
NaN
NaN
Y
NaN
…
NaN
NaN
NaN
NaN
NaN
NaN
NaN
赤崁新段241~270地號
梓官區
赤崁新段
3 rows × 35 columns
In [ ]:
In [8]:
df[df['交易日期']==n_days]
Out[8]:
申報種類 | 交易標的種類 | 土地數量 | 建物數量 | 車位數量 | 幾房 | 幾廳 | 幾衛 | 有無隔間 | 建物型態 | … | 代表建號主要建材 | 代表建號總層數 | 代表建號建築完成日期 | 代表建號屋齡 | 代表建號層次 | 車位總價格 | 車位總持分面積 | 地建號範圍 | 行政區 | 地段 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
83 | 買賣 | 建物 | NaN | 1.0 | NaN | NaN | NaN | NaN | N | 住宅大樓(11F含以上有電梯) | … | 鋼筋混凝土造 | 12.0 | 700114.0 | 38.0 | 九層 | NaN | NaN | 府北路31~60號 | 鹽埕區 | 府北段五小段 |
8150 | 買賣 | 房地(土地+建物) | 2.0 | 1.0 | NaN | 5.0 | 2.0 | 5.0 | Y | 透天厝 | … | 鋼筋混凝土造 | 3.0 | 1030121.0 | 5.0 | 一層;二層;三層;屋頂突出物 | NaN | NaN | 大智街151~180號 | 大寮區 | 後壁寮段 |
10779 | 買賣 | 土地 | 1.0 | NaN | NaN | NaN | NaN | NaN | Y | NaN | … | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 赤崁新段241~270地號 | 梓官區 | 赤崁新段 |
3 rows × 35 columns
In [ ]: