線上讀取高雄市不動產實價登錄資料與日期處理
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:\users\superuser\miniconda3\lib\site-packages\ipykernel_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:\users\superuser\miniconda3\lib\site-packages\ipykernel_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 [ ]: