Python

파이썬으로 JSON API 데이터 추출 및 CSV 변환하기

hyungminjeon 2025. 4. 5. 17:04

– requests와 csv 라이브러리를 활용한 실습 정리

웹에서 제공되는 공공 API 데이터를 프로그램적으로 추출하고, 이를 CSV 파일로 저장하는 작업은 데이터 분석의 첫 단계에서 매우 자주 사용된다. 이번 포스팅에서는 미국 센서스국(Census Bureau)에서 제공하는 JSON 데이터를 파이썬의 requests와 csv 표준 라이브러리를 활용하여 CSV 파일로 저장하는 과정을 실습을 통해 정리하였다.


1. requests.get() 함수로 API 데이터 요청하기

import requests

r = requests.get('https://api.census.gov/data/2020/acs/acs5?get=NAME,B08303_001E,B08303_013E&for=county:*&in=state:36')

requests 라이브러리는 HTTP 요청을 간편하게 처리할 수 있도록 도와주는 라이브러리이다. 위 코드에서는 get() 메서드를 사용하여 URL에 명시된 API로부터 데이터를 요청한다.

  • r 객체는 요청에 대한 응답(response)을 담고 있으며, 다양한 속성과 메서드를 포함한다.
  • 해당 URL은 2020년 인구조사(ACS 5년 추정치) 중 뉴욕주(state code: 36)의 각 카운티별 통근 수단 데이터를 요청하고 있다.
  • NAME: 지역 이름
  • B08303_001E: 전체 통근자 수
  • B08303_013E: 90분 이상 통근하는 통근자 수
  • for=county:*: 모든 카운티 대상
  • in=state:36: 뉴욕 주의 범위로 제한

2. .json() 메서드로 JSON 응답 파싱하기

r_json = r.json()
  • json() 메서드는 응답 본문을 JSON 형태로 파싱하여 파이썬 객체(리스트 및 딕셔너리)로 변환한다.
  • 이 경우 r_json은 이중 리스트 형태이며, 첫 번째 리스트는 컬럼 이름(헤더), 이후 리스트들은 각각의 데이터 행이다.

예시:

[
  ["NAME", "B08303_001E", "B08303_013E", "state", "county"],
  ["Albany County, New York", "137451", "7270", "36", "001"],
  ...
]

3. csv.writer()를 이용해 CSV 파일로 저장하기

import csv

with open('commute_data.csv', mode='w', newline='') as file:
  writer = csv.writer(file)
  writer.writerows(r_json)

위 코드는 JSON 데이터를 CSV 파일로 변환하여 저장하는 부분이다.

  • open() 함수는 새 파일을 쓰기 모드(w)로 연다. newline='' 옵션은 플랫폼에 따라 자동으로 추가될 수 있는 줄 바꿈 문자를 제거하기 위해 사용한다.
  • csv.writer()는 CSV 형식으로 데이터를 쓸 수 있는 객체를 생성한다.
  • writer.writerows()는 리스트 안에 있는 각 행을 한 줄씩 CSV로 작성한다. r_json은 이중 리스트이므로 이 메서드로 모든 데이터를 일괄 기록할 수 있다.

CSV 파일 예시:

NAME,B08303_001E,B08303_013E,state,county
Albany County, New York,137451,7270,36,001
...

주요 함수 및 메서드 요약

함수 / 메서드설명
requests.get(url) 지정한 URL로 HTTP GET 요청을 보냄
response.json() JSON 응답을 파이썬 데이터 형식으로 변환
open(filename, 'w') 파일을 쓰기 모드로 엶
csv.writer(file) 파일 객체에 대해 CSV 작성기 생성
writer.writerows(data) 이중 리스트 데이터를 한 줄씩 CSV로 작성

마무리

이번 실습을 통해 공개 API에서 JSON 데이터를 수집하고, 이를 손쉽게 CSV 파일로 변환하는 전체 과정을 구현해보았다. 이러한 데이터 핸들링 기술은 통계, 인구 조사, 교통, 환경 등 다양한 분야에서 유용하게 활용될 수 있으며, 특히 자동화된 데이터 수집 파이프라인 구축에 필수적인 기반 기술이다.