배운 내용을 토대로 새로운 API를 불러와 버스 데이터 분석을 진행해봄
Open Application Programming Interface
누구나 사용할 수 있도록 공개된 API를 말함.
ex) 네이버 지도, 구글맵 등
회원가입 후 인증키 신청
인증키와 url로 사용 가능
import urllib.request
import json
import pandas as pd
%config InlineBackend.figure_format = 'retina'
API 파일을 불러오기 위한 라이브러리를 먼저 불러온다
# 인증키와 주소
key = ''
start = 1
end = 1000
use_dt = 20220811
url = f'http://openapi.seoul.go.kr:8088/{key}/json/CardBusStatisticsServiceNew/{start}/{end}/{use_dt}/'
# 데이터 가져오기
response = urllib.request.urlopen(url)
json_str = response.read().decode('utf-8')
# JSON -> Dict으로 변환
json_object = json.loads(json_str)
# Dict -> 데이터프레임으로 변환
bus = pd.json_normalize(json_object['CardBusStatisticsServiceNew']['row'])
# 확인
bus.head()
상위 데이터를 확인할 수 있음
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'Malgun Gothic'
plt.rcParams['axes.unicode_minus'] = False
bus.rename(columns={'USE_DT': '사용일자',
'BUS_ROUTE_ID': '노선ID',
'BUS_ROUTE_NO': '노선번호',
'BUS_ROUTE_NM': '노선명',
'STND_BSST_ID': '표준버스정류장ID',
'BSST_ARS_NO': '버스정류장ARS번호',
'BUS_STA_NM': '역명',
'RIDE_PASGR_NUM': '승차총승객수',
'ALIGHT_PASGR_NUM': '하차총승객수',
'WORK_DT': '등록일자'}, inplace=True)
bus.head()
열 이름을 변경하여 정보 확인을 쉽게 했다.
# 승차 인원 TOP 10
bus_top10 = bus.sort_values(by='승차총승객수', ascending=False).head(10)
bus_top10.reset_index(drop=True, inplace=True)
# 확인
bus_top10
sort_values(by='정렬 기준', ascending='False').head(10): 정렬 기준으로 ascending(정렬) False(내림차순)으로 정렬하는데 상위 10개 데이터 출력
bus_top10.reset_index(drop=True, inplace=True) : reset_index(인덱스 초기화) drop(기존 인덱스 삭제) inplace(바로적용) 하기
이를 토대로 시각화하면
plt.figure(figsize=(10, 5))
plt.title('승차 인원 TOP 10', pad=10)
plt.bar(bus_top10['역명'], bus_top10['승차총승객수'])
plt.xlabel('역명')
plt.ylabel('탑승자 수')
plt.xticks(rotation=80)
plt.show()
# 노선별 승하차 인원
bus_linesum = bus.groupby(by='노선명', as_index=False)[['승차총승객수', '하차총승객수']].sum()
# 정렬
bus_linesum.sort_values(by=['승차총승객수'], ascending=False, inplace=True)
# 인덱스 초기화
bus_linesum.reset_index(drop=True, inplace=True)
# TOP 10 확인
bus_linesum
groupby()로 기준열 입력, 기준에 따라 확인할 데이터 리스트 입력 후 sum() 메소드로 합계
승차총승객수 기준으로 내림차순 정렬
정렬로 인한 인덱스를 초기화 작업
데이터 확인
오픈 API 사용방법을 알아서 데이터 분석을 다양하게 해볼 수 있을 것 같다.
데이터를 기준에 따라 확인하니 새롭게 알 수 있는 점들이 생겨 재밌는 것 같다.
데이터 분석을 입체적으로 한다면 많은 기회를 찾아낼 수 있을 것 같다.