본문 바로가기
Python/Pandas

[API 다루기] JSON 데이터를 pandas 데이터프레임으로

by ISLA! 2023. 8. 7.

API 데이터 찾기

본 예제에서는 한국도로공사 고속도로 공공데이터 포털을 이용해본다.

http://data.ex.co.kr/dataset/datasetList/list?pn=1&CATEGORY=TR&GROUP_TR=TIME_TCS

 

 

고속도로 공공데이터 포털

데이터 목록 Home > 데이터 > 데이터 목록 - 교통 서비스 전체 FILE OpenAPI 원문 LOD 업무 전체 교통 건설 유지관리 일반행정 통행료 휴게소 융합 <!-- Project : 공공데이터 개방시스템 확대구축 수정일자

data.ex.co.kr

  • 실시간 영업소간 통행시간 클릭
  • 예제 실행하기 클릭
    • 다음과 같은 화면이 나타난다

 

  • 인증키 입력 & 원하는 데이터 타입 체크
  • url 결과 복사

 

API 데이터 가져오기

  • 로컬에서 주피터랩 열어주기
  • 코드 입력 Url 복붙 >> 데이터가 나타나지 않는다. url 을 수정한다.
🍓 url 세팅이 중요하다
- 사전에 예제 테스트를 미리 해보고, 해당 url 로 작업을 진행한다. 
- 수정된 url : "http://data.ex.co.kr/openapi/trtm/realUnitTrtmkey=1308370912&type=json&iStartUnitCode=101&iEndUnitCode=103 "
import requests

url = "http://data.ex.co.kr/openapi/trtm/realUnitTrtm?key=1308370912&type=json&iStartUnitCode=101&iEndUnitCode=103"

#url의 데이터를 요청
req = requests.get(url)

#요청한 데이터가 제이슨이다 > 다음 함수로 제이슨 데이터를 읽어온다
json_df = req.json()
json_df

 

👉 다음과 같이 결과가 나타나면 성공

 

JSON 파일을 데이터프레임으로 가공

import pandas as pd

#pandas 데이터프레임과 구조가 유사하다. >> 원하는 부분을 추출해내는 방식도 유사
df = pd.DataFrame(json_df['realUnitTrtmVO'])
print(df)

[결과]

 

 

이제 좀 더 깔끔한 표 형식도 만들어보자.

cars = json_df['realUnitTrtmVO']

#반복되는 구간 확인, 리스트형이 있음. 그 부분을 추출
pd.DataFrame(cars)

records = []
for car in cars:
    row_dict = {}
    row_dict['date'] = car['stdDate']
    row_dict['timeAvg'] = car['timeAvg']
    records.append(row_dict)

pd.DataFrame(records)

cars 데이터프레임

 

records 데이터프레임

728x90