Study/연습

Python - 공공API 테스트

상맹 2021. 10. 25. 16:40
반응형

서울시 권역별 실시간 대기환경 현황

https://data.seoul.go.kr/dataList/OA-2219/S/1/datasetView.do

 

① row 데이터 중에서 MSRDT(날짜), MSRSTE_NM(지역), PM10(미세먼지), IDEX_NM(상태) 4가지 데이터를 파이썬 list로 만들어서 콘솔에 출력하시오.

② row 데이터 중에서 MSRDT(날짜), MSRSTE_NM(지역), PM10(미세먼지), IDEX_NM(상태) 4가지 데이터를 DB에 저장하시오. (pandas로 변경해서 db에 저장하는 것을 추천)

③ 추가로 weather.csv 파일로 만드시오.

 

 (1) requests 모듈로 데이터 다운받기

import requests
import sqlalchemy as db
import pandas as pd

# 1. requests 모듈로 데이터 다운받기
url = "http://openapi.seoul.go.kr:8088/6d424f64706765743730746d476f47/json/RealtimeCityAir/1/5?END_INDEX=1"
response = requests.get(url)
parseResponse = response.json() #json 문자열을 파이썬 오브젝트(딕셔너리)로 변경

 (2) 데이터 정제하기

# 2. 데이터 정제하기
row = parseResponse["RealtimeCityAir"]["row"]

weather = []

print(row)
for r in row:
    dict = {}
    dict["MSRDT"] = r["MSRDT"]
    dict["MSRSTE_NM"] = r["MSRSTE_NM"]
    dict["PM10"] = r["PM10"]
    dict["IDEX_NM"] = r["IDEX_NM"]
    weather.append(dict)

print(weather)

정제되지 않은 데이터
정제된 데이터

 (3) 판다스로 데이터 변경하기 (csv, db에 데이터 옮기기 편함)

# 3. 판다스로 데이터 변경하기 (csv, db에 데이터 옮기기 편함)
weather_dataFrame = pd.DataFrame(weather)
print(weather_dataFrame)

 

 (4) 디비 연결하기

# 4. 디비 연결하기
engine = db.create_engine(
    "mariadb+mariadbconnector://python:python1234@127.0.0.1:3306/pythondb")

 (5) 인서트하기

# 5. 인서트하기
weather_dataFrame.to_sql("weather", engine, index=False, if_exists="replace")

 (6) csv 파일로 만들기

# 6. csv 파일로 만들기
weather_dataFrame.to_csv("weather.csv")

 (7) 불러오기

# 7. 불러오기
weather_dataFrame_entity = pd.read_sql("select * from weather", engine)
print(weather_dataFrame_entity)

 

반응형