728x90
반응형
1. 서울 열린데이터 광장
서울 열린데이터 광장(Seoul Open Data Plaza)은 서울시에서 운영하는 공공데이터 개방 플랫폼입니다. 시민, 연구자, 기업 등이 서울시에서 생성한 다양한 공공데이터를 자유롭게 활용할 수 있도록 제공하고 있습니다. 이를 통해 데이터 기반의 창의적인 아이디어와 혁신을 촉진하며, 시민들의 정보 접근성을 높이고 공공서비스를 개선하는 데 기여하고 있습니다.
2. 서울시 공공자전거 실시간 대여정보
1. 인증키를 발급 받습니다.
2. "서울시 공공자전거 실시간 대여정보" 를 검색합니다.
import requests
import folium
import json
import pandas as pd
import warnings
warnings.filterwarnings('ignore')
base_url = 'http://openapi.seoul.go.kr:8088/(인증키)/json/bikeList/1/5/'
response = requests.get(base_url)
# print(request)
json_data = response.json()
json_data
json_data.get("rentBikeStatus", {}).get("RESULT", {}).get("CODE", "")
json_data["rentBikeStatus"]["RESULT"]["CODE"]
def fetch_bike_data():
base_url = "http://openapi.seoul.go.kr:8088/(인증키)/json/bikeList/"
start = 1
end = 1000
step = 1000
data_frames = []
while True:
url = f"{base_url}{start}/{end}/"
response = requests.get(url)
if response.status_code != 200:
print(f"Status Code: {response.status_code}")
break
json_data = response.json()
try:
rent_bike_status = json_data["rentBikeStatus"]
result_code = rent_bike_status["RESULT"]["CODE"]
except KeyError:
print("JSON 오류")
break
if result_code == "INFO-200":
print("데이터 없음")
break
elif result_code == "INFO-000":
print(f"시작: {start} 끝: {end}.")
try:
bike_data = rent_bike_status["row"]
if bike_data:
df = pd.DataFrame(bike_data)
data_frames.append(df)
except KeyError:
print("데이터를 찾을 수 없음")
else:
print(f"result code: {result_code}")
break
start += step
end += step
if data_frames:
final_df = pd.concat(data_frames, ignore_index=True)
return final_df
else:
return pd.DataFrame()
bike_data_df = fetch_bike_data()
bike_data_df
bike_data_df.info()
'''
rackTotCnt 거치대개수
parkingBikeTotCnt 자전거주차총건수
shared 거치율
stationLatitude 위도
stationLongitude 경도
stationId 대여소ID
stationName 대여소이름
'''
bike_data_df.columns
bike_data_df.shape
bike_data_df['stationLongitude'] = bike_data_df['stationLongitude'].astype(float)
bike_data_df['stationLatitude'] = bike_data_df['stationLatitude'].astype(float)
bike_map = folium.Map(location=[bike_data_df['stationLatitude'].mean(),
bike_data_df['stationLongitude'].mean()],
zoom_start=12)
for index, data in bike_data_df.iterrows():
popup_str = '{} 자전거주차총건수:{}대'.format(
data['stationName'], data['parkingBikeTotCnt']
)
popup = folium.Popup(popup_str, max_width=600)
folium.Marker(location=[data['stationLatitude'], data['stationLongitude']],
popup=popup).add_to(bike_map)
bike_map
728x90
반응형
'인공지능 > 데이터분석' 카테고리의 다른 글
머신러닝과 딥러닝 (3) | 2024.12.23 |
---|---|
커피 프랜차이즈의 입점전략 (1) | 2024.12.20 |
소상공인시장진흥공단_상가정보 데이터셋 (2) | 2024.12.18 |
Online Retail 데이터셋 살펴보기 (1) | 2024.12.15 |
matplotlib (2) | 2024.12.14 |