Python Pandas 線上讀取高雄市不動產實價登錄資料與日期處理

線上讀取高雄市不動產實價登錄資料與日期處理

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 [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]

取得現在的時間後,計算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

上面的方式計算出來會有警告,改成用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

再次找出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 [ ]:

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *