반응형
모기가 다가오는 계절.
2022년의 주거지, 수변부, 공원의 모기지수는 어떻게 될까 궁금했음.
그래프를 살펴보면 8월 말에 보기지수가 가장 높고,
10월 초가되면 모기지수가 급속도로 낮아지는 모습을 보인다.
각 그래프의 형태가 비슷해보이나 y축 값을 잘 보면 수변부는 최고 180이 넘는 모기지수가 나타난다.
특히 8월달에는 물 주변에 함부로 가면 안되겠구먼...
2022년에는 모기지수가 조금 더 낮길 바라며 ㅠㅠ
활용한 데이터
http://data.seoul.go.kr/dataList/OA-13285/S/1/datasetView.do
열린데이터광장 메인
데이터분류,데이터검색,데이터활용
data.seoul.go.kr
활용 코드
import requests #서버 접속
import json #json 읽기
import pandas as pd #표로 만들기
from datetime import datetime, timedelta #날짜 계산을 위함
import matplotlib.pyplot as plt #그래프 그리기
import matplotlib #rcParams 활용하여 한글 사용 위함
import matplotlib.ticker as ticker #MultipleLocator, FormatStrFormatter) #주눈금, 보조눈금 표시를 위함
import matplotlib.dates as dates # MonthLocator, DateFormatter 활용 #날짜 형태의 주눈금, 보조눈금 표시를 위함
total_date = list(pd.date_range(start="2020-01-01", end="2020-12-31")) #2020년 1월 1일~2020년 12월 31일까지 timestamp로 나타내기
#timestamp를 2020-01-01과 같은 형식으로 바꾸기 위한 명령어
#map안의 함수에 인자를 전달하기 위해 lamba로 함수를 별도로 설정함
for_total_date = list(map(lambda x:datetime.strftime(x, "%Y-%m-%d"), list(map(lambda x:x.date(), total_date))))
url = "http://openapi.seoul.go.kr:8088/" #기본 URL
my_api = "#############" #각자의 인증키
dic_query_params={"TYPE":"json", #요청 값 넣기
"SERVICE":"MosquitoStatus",
"START_INDEX":"1",
"END_INDEX":"5",
"MOSQUITO_DATE":""}
#Date에 넣기
list_df_all = []
for date in for_total_date:
dic_query_params["MOSQUITO_DATE"] = date
full_url = url+my_api+"/"+ "/".join(dic_query_params.values()) #full_url의 결과 : "http://openapi.seoul.go.kr:8088/######/json/MosquitoStatus/1/5/2020-04-12"
res = requests.get(full_url,verify=False) #verify를 넣지 않으면 검증되지 않은 사이트라고 접속이 안되는 경우가 있어서!
#보기 편하게 나타내기
list_df_all.append(list((json.loads(res.text)["MosquitoStatus"]["row"][0]).values()))
print("완료")
df = pd.DataFrame(list_df_all, columns=["날짜", "수변부", "주거지", "공원"])
matplotlib.rcParams["font.family"] = "Malgun Gothic" #한글 사용
matplotlib.rcParams["font.size"] = 15 #폰트 크기 설정
fig, ax = plt.subplots(2,2, figsize=(15, 10)) #보조 그래프 그리기
ax[0, 0].set_title("2020년 주거지 모기지수")
ax[0, 0].plot(total_date, df["주거지"].apply(float))
ax[0, 0].xaxis.set_major_locator(dates.MonthLocator(interval=1)) #x축 주눈금 간격 1달
ax[0, 0].xaxis.set_major_formatter(dates.DateFormatter('%Y-%m-%d')) #x축 주눈금 형식 "년-월-일"
ax[0, 0].xaxis.set_minor_locator(dates.DayLocator(interval=10)) #x축 보조눈금 간격 10일
ax[0, 0].yaxis.set_major_locator(ticker.MultipleLocator(10)) #y축 주눈금 10의 배수
ax[0, 0].tick_params (axis = 'x', labelrotation = 45) #x축 라벨 기울기 설정
ax[0, 0].grid() #눈금 표시
ax[0, 1].set_title("2020년 수변부 모기지수")
ax[0, 1].plot(total_date, df["수변부"].apply(float))
ax[0, 1].xaxis.set_major_locator(dates.MonthLocator(interval=1))
ax[0, 1].xaxis.set_major_formatter(dates.DateFormatter('%Y-%m-%d'))
ax[0, 1].xaxis.set_minor_locator(dates.DayLocator(interval=10))
ax[0, 1].yaxis.set_major_locator(ticker.MultipleLocator(10))
ax[0, 1].tick_params (axis = 'x', labelrotation = 45)
ax[0, 1].grid()
ax[1, 0].set_title("2020년 공원 모기지수")
ax[1, 0].plot(total_date, df["공원"].apply(float))
ax[1, 0].xaxis.set_major_locator(dates.MonthLocator(interval=1))
ax[1, 0].xaxis.set_major_formatter(dates.DateFormatter('%Y-%m-%d'))
ax[1, 0].xaxis.set_minor_locator(dates.DayLocator(interval=10))
ax[1, 0].yaxis.set_major_locator(ticker.MultipleLocator(10))
ax[1, 0].tick_params (axis = 'x', labelrotation = 45)
ax[1, 0].grid()
plt.tight_layout() #전체 그래프 크기 조정
이 다음으로는
2020년 뿐 아니라 2017~2021년의 모기지수 데이터를 평균내어 그래프를 그려봐야겠음!
반응형
'데이터 분석' 카테고리의 다른 글
2017-2020 년 서울 모기지수 평균 그래프 (2) | 2022.03.06 |
---|---|
워드클라우드 만들기 기초 활용! (0) | 2022.03.03 |
matplotlib 그래프 이미지가 잘린 상태로 저장될 때 (2) | 2022.02.23 |
2021학년도 전국 초등학교 전출입 학생 수 평균 그래프 (0) | 2022.02.22 |
학교알리미로 2021 전국 초등학교 입학생 수 그래프 그리기 (0) | 2022.02.19 |
댓글