2019年11月28日 星期四

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.01.0NaN3.02.02.0Y住宅大樓(11F含以上有電梯)...見其它登記事項15.01070830.01.0三層NaNNaN建國四路151~180號鹽埕區興仁段
1買賣房地(土地+建物)+車位1.01.01.03.02.03.0Y住宅大樓(11F含以上有電梯)...見其它登記事項15.01070830.01.0七層0.00.0建國四路151~180號鹽埕區興仁段
2買賣房地(土地+建物)+車位1.01.01.03.02.02.0Y住宅大樓(11F含以上有電梯)...見其它登記事項15.01070830.01.0五層0.00.0建國四路151~180號鹽埕區興仁段
3買賣房地(土地+建物)+車位1.01.01.03.02.02.0Y住宅大樓(11F含以上有電梯)...見其它登記事項15.01070830.01.0十一層0.00.0建國四路151~180號鹽埕區興仁段
4買賣房地(土地+建物)+車位1.01.01.03.02.02.0Y住宅大樓(11F含以上有電梯)...見其它登記事項15.01070830.01.0十三層0.00.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:\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買賣建物NaN1.0NaNNaNNaNNaNN住宅大樓(11F含以上有電梯)...鋼筋混凝土造12.0700114.038.0九層NaNNaN府北路31~60號鹽埕區府北段五小段
8150買賣房地(土地+建物)2.01.0NaN5.02.05.0Y透天厝...鋼筋混凝土造3.01030121.05.0一層;二層;三層;屋頂突出物NaNNaN大智街151~180號大寮區後壁寮段
10779買賣土地1.0NaNNaNNaNNaNNaNYNaN...NaNNaNNaNNaNNaNNaNNaN赤崁新段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買賣建物NaN1.0NaNNaNNaNNaNN住宅大樓(11F含以上有電梯)...鋼筋混凝土造12.0700114.038.0九層NaNNaN府北路31~60號鹽埕區府北段五小段
8150買賣房地(土地+建物)2.01.0NaN5.02.05.0Y透天厝...鋼筋混凝土造3.01030121.05.0一層;二層;三層;屋頂突出物NaNNaN大智街151~180號大寮區後壁寮段
10779買賣土地1.0NaNNaNNaNNaNNaNYNaN...NaNNaNNaNNaNNaNNaNNaN赤崁新段241~270地號梓官區赤崁新段
3 rows × 35 columns
In [ ]:
 

【公告】網站遷移,未來內容將發表於新網站!!

 受限於blogger本身架構與限制,本網站所有內容已遷移至新網站,網址如下: https://kuo.us.to/wordpress/