본문 바로가기
문송충의 코딩하기/파이썬 데이터 분석

[파이썬] - 서울시 열린데이터광장 오픈 API 활용해서 서울시 공영주차장 정보를 알아보자

by 동장군님 2020. 11. 8.
728x90
반응형

서울시 공영주차장 Open API

이번 포스팅에서는 서울 열린데이터 광장에서 제공하고 있는 Open API를 통해서 서울시에 위치한 공영주차장 정보를 가져오도록 하겠다. 해당 관련 정보는 아래 링크에서 확인할 수 있고, 파이썬 코드를 작성하기 전에 우선 동일 링크에서 API 키를 신청하기 바란다.

 

data.seoul.go.kr/dataList/OA-13122/S/1/datasetView.do

 

서울시 공영주차장 안내 정보

데이터 이용하기-서울시 공영주차장 안내 정보

data.seoul.go.kr

Python Code

우선 아래 코드를 통해서 서울시 공영 주차장 수를 확인해보겠다. 아래 코드를 돌리면 total_num이라는 변수에 총 14,330개의 데이터가 있다는 점을 볼 수 있다. 즉 서울시에는 무려 14,330개의 공영 주차장이 있다는 것이다. 

import requests
import pandas as pd
import math

url='http://openapi.seoul.go.kr:8088/{API KEY}/json/GetParkInfo/1/2/'
re=requests.get(url)
rjson=re.json()
total_num=int(rjson['GetParkInfo']['list_total_count'])

 

다음으로 데이터를 추출해보도록 하겠다. API에서 다양한 데이터를 제공하고 있는데 이번 포스팅에서는 그 중 주차장 명, 유료 여부, 월 정기권 금액, 기본 주차장 요금, 기존 요금 단위(시간), 위도, 경도, 주차장 용량, 주말 유료 여부 데이터만을 가져오도록 하겠다.

 

parking_name=[]
pay_yn=[]
full_month_fee=[]
rates=[]
time_rates=[]
lat=[]
long=[]
cap=[]
holiday=[]

for i in range(1, math.ceil(total_num/1000)+1):
    
    end=i*1000
    start=end-1000 +1
    
    if end >total_num:
        end = total_num
        
    url=f'http://openapi.seoul.go.kr:8088/{API KEY}/json/GetParkInfo/{start}/{end}'
    re=requests.get(url)
    rjson=re.json()
    
    for u in rjson['GetParkInfo']['row']:
        parking_name.append(u['PARKING_NAME'])
        pay_yn.append(u['PAY_NM'])
        full_month_fee.append(u['FULLTIME_MONTHLY'])
        rates.append(u['RATES'])
        time_rates.append(u['TIME_RATE'])
        lat.append(u['LAT'])
        long.append(u['LNG'])
        cap.append(u['CAPACITY'])
        holiday.append(u['HOLIDAY_PAY_NM'])
        
   df=pd.DataFrame({'주차장 명':parking_name, '유료 여부':pay_yn,'월 정기권 금액':full_month_fee,'기본 주차 요금':rates,
                '기본 단위':time_rates,'위도':lat,'경도':long, '주차 가능 수':cap,'주말 개장 여부':holiday})

 

위 코드를 돌리면 아래와 같은 데이터프레임을 확인할 수 있을 것이다.

 

 

 

일부 데이터가 누락되어 있고, 잘못 기재되어 있는 점이 있기에 사용에 유의가 필요하다. 여하튼 서울시에만 공영주차장이 1만 4천개가 있다는게 놀랍다.

 

 

 

 

 

 

728x90
반응형

댓글