코랩 파이썬 공공데이터 Open API 불러오기 (json/xml)
예시) 공공데이터포털 - 여성가족부_성범죄자 지역별 통계 데이터 불러오기
안녕하세용 에이블러분들~~
어제 5차 미프가 끝났습니다~~
벌써 DX과정 절반이 지나갔습니다
지금까지 배운내용들!!을 활용해서 공공데이터 이용해
공모전이나 개인 데이터분석 하시는 분들 많으실 거 같은데요
그래서 코랩에서 공공데이터 불러오는 방법 포스팅 하겠습니당~
.Open API 불러오기
- 필요한 라이브러리를 설치하고 불러오기:
- requests: API 호출을 위해 사용.
- pandas: 데이터프레임 작업을 위해 사용.
- API 호출:
- requests.get()을 사용하여 API에서 데이터를 받아옵니다.
- 이 때, API 키와 필요한 파라미터를 전달해야 합니다.
- 응답 데이터 처리:
- 받아온 데이터가 JSON 형태일 경우, 이를 pandas의 DataFrame으로 변환합니다.
- 데이터프레임으로 변환:
- pandas.DataFrame()을 사용하여 JSON 데이터를 데이터프레임으로 만듭니다.
import requests
import pandas as pd
# API URL과 API 키 설정
url = "https://api.data.go.kr/your-api-endpoint"
api_key = "your_api_key"
# 파라미터 설정 (예시)
params = {
'serviceKey': api_key,
'type': 'json',
'numOfRows': 100, # 가져올 행의 수
'pageNo': 1 # 페이지 번호
}
# API 호출
response = requests.get(url, params=params)
# 응답 데이터를 JSON 형태로 로딩
data = response.json()
# JSON 데이터에서 필요한 부분을 데이터프레임으로 변환
# 예시: data['response']['body']['items']는 실제 데이터가 있는 경로에 따라 조정해야 합니다.
df = pd.DataFrame(data['response']['body']['items'])
# 데이터프레임 확인
print(df.head())
- 위 코드는 일반적인 형태입니다
- 실제 사용하려는 API의 응답 구조에 따라 JSON에서 데이터를 추출하는 부분(data['response']['body']['items'])을 적절히 수정 필요
- 정확한 API 엔드포인트와 필요한 파라미터, 그리고 API 키를 확인 필요
(예시) 공공데이터포털 - 여성가족부_성범죄자 지역별 통계 데이터 불러오기
https://www.data.go.kr/data/3072018/openapi.do
- API 유형 - LINK
- 데이터포맷 - XML
- 서비스 인증/권한 - 없음
- 인터페이스 - REST
import requests
import pandas as pd
import xml.etree.ElementTree as ET
# API 엔드포인트 설정
url = "http://api.sexoffender.go.kr/openapi/SOCitysStats/"
# 파라미터 설정
params = {
'serviceKey': 'your_api_key', # 실제 서비스키로 변경 필요
}
# API 호출
response = requests.get(url, params=params)
# 응답 데이터 확인
if response.status_code == 200:
# XML 데이터 파싱
root = ET.fromstring(response.content)
# 데이터 추출 및 데이터프레임으로 변환
data = []
for city in root.findall('.//City'):
data.append({
'city_name': city.find('city-name').text, # 시도명
'city_count': city.find('city-count').text # 성범죄자 수
})
df = pd.DataFrame(data)
print(df.head())
else:
print("Failed to fetch data:", response.status_code)
- CSV 저장
df.to_csv('city.csv', index=False)
- 간단한 시각화
# city_name별로 city_count값을 시각화
import matplotlib.pyplot as plt
import seaborn as sns
# 'city_count' 값을 정수형으로 변환 (문자열이면 정렬이 제대로 작동하지 않을 수 있음)
df['city_count'] = df['city_count'].astype(int)
# 'city_count' 기준으로 데이터프레임 정렬
df_sorted = df.sort_values('city_count', ascending=False)
# 시각화
plt.figure(figsize=(12, 6))
sns.barplot(x='city_name', y='city_count', data=df_sorted)
plt.xticks(rotation=45) # x축 레이블 회전
plt.show()
▼ 시각화에 한글이 깨진다면 ?▼
2024.04.23 - [KT에이블스쿨 5기/DX컨설턴트] - [KT에이블스쿨 5기 DX] 주피터랩/코랩 시각화 한글 깨짐 해결 방법
'KT에이블스쿨 5기 > DX컨설턴트' 카테고리의 다른 글
데이터리안 2024년 7월 세미나 참가후기 [데이터분석가,어떤 회사로 가야할까?] (1) | 2024.07.13 |
---|---|
[KT 에이블스쿨 DX 5기] 제안서 작성 수업 요약 (0) | 2024.06.03 |
[KT에이블스쿨 5기 DX] 주피터랩/코랩 시각화 한글 깨짐 해결 방법 (0) | 2024.04.23 |
머신러닝/딥러닝을 이용한 데이터분석 프로젝트 프로세스 (2) | 2024.04.22 |
[KT에이블스쿨 5기 DX] 딥러닝 - YOLOv8 (0) | 2024.04.16 |