반응형
지난 글에서 2020년 서울 모기지수 그래프를 그렸다.
https://aigoamigo.tistory.com/entry/graph5
2020년 서울 주거지, 수변부, 공원 모기지수 그래프로 나타내기
모기가 다가오는 계절. 2022년의 주거지, 수변부, 공원의 모기지수는 어떻게 될까 궁금했음. 그래프를 살펴보면 8월 말에 보기지수가 가장 높고, 10월 초가되면 모기지수가 급속도로 낮아지는 모
aigoamigo.tistory.com
그런데 2020년 1년의 데이터만으로는 그 정확도가 몹시 낮을 것 같았다.
2020년에 장마가 오지 않았다면? 그와 반대로 장마가 다른 때보다 2배 더 길었다면?
위와 같은 상황이 있었다면 데이터를 일반화하기에는 무리가 있을 것이다.
그래서 그나마 정확도를 높이기 위해서 2017~2020년까지의 모기지수 데이터를 평균내었다.
수변부, 주거지, 공원 모두 다 7월 말부터 8월 초에 급속도로 모기지수가 낮아졌다.
왜 이런 현상이 일어나는지는 "강수량, 소독량, 최고기온, 최저기온 등"을 따져봐야할 것 같다.
이들 중에서 어떤 것이 그래프의 변화와 큰 상관관계가 있는지는 인공지능 분석을 활용해야할듯!!
이후 인공지능 분석도 해보겠습니다!
소스코드는 아래와 같다.
import pandas as pd #데이터 분석 관련 라이브러리
from datetime import datetime #날짜 관련 라이브러리
import matplotlib.pyplot as plt #그래프 그리기 위한 라이브러리 #
import matplotlib.dates as dates # MonthLocator, DateFormatter 활용
import matplotlib #그래프 한글 설정 위함
df_1 = pd.read_csv("2017to2022Mosquito.csv") #데이터 가져오기
df_2 = pd.read_csv("supplementation2017.csv") #데이터 가져오기
df_1 = df_1.iloc[:,1:] #"날짜", "수변부", "주거지", "공원" 열 가져오기
df_2 = df_2.iloc[:,1:] #"날짜", "수변부", "주거지", "공원" 열 가져오기
df_all = pd.concat([df_2, df_1]) #데이터 합치기
change_date = lambda x:datetime.strftime(datetime.strptime(x, "%Y-%m-%d"), "%m-%d") #월과 달만 표시하는 함수
df_all["날짜"] = df_all["날짜"].apply(change_date) #"2020-01-01"을 "01-01"로 변환
df_all_mean = df_all.groupby("날짜").mean() #일자별 평균
matplotlib.rcParams["font.family"] = "Malgun Gothic"
fig, ax = plt.subplots(2,2, figsize=(20, 20)) #서브 플롯 설정
fig.suptitle("2017-2020년 서울 모기지수 평균", fontsize=50)
#수변부 그래프
ax[0,0].set_title("수변부", fontsize=40)
ax[0,0].tick_params(axis = 'x', labelsize =30) #x축 눈금 크기
ax[0,0].tick_params(axis = 'y', labelsize =30) #y축 눈금 크기
dateFmt = dates.DateFormatter("%m-%d") #날짜 표시 형태 설정1
ax[0,0].xaxis.set_major_formatter(dateFmt) #주눈금 날짜 표시 형태 설정
ax[0,0].xaxis.set_major_locator(dates.MonthLocator(interval=1)) #1달 간격으로 x축 주눈금 설정
ax[0,0].tick_params(axis = 'x', labelrotation = 45) #x축 라벨 기울기 설정
ax[0,0].plot(list(df_all_mean.index), df_all_mean["수변부"]) #수변부 그래프 그리기
ax[0,0].grid() #눈금 표시
#주거지 그래프
ax[0,1].set_title("주거지", fontsize=40)
ax[0,1].tick_params(axis = 'x', labelsize =30) #x축 눈금 크기
ax[0,1].tick_params(axis = 'y', labelsize =30) #y축 눈금 크기
dateFmt = dates.DateFormatter("%m-%d") #날짜 표시 형태 설정1
ax[0,1].xaxis.set_major_formatter(dateFmt) #주눈금 날짜 표시 형태 설정
ax[0,1].xaxis.set_major_locator(dates.MonthLocator(interval=1)) #1달 간격으로 x축 주눈금 설정
ax[0,1].tick_params(axis = 'x', labelrotation = 45) #x축 라벨 기울기 설정
ax[0,1].plot(list(df_all_mean.index), df_all_mean["주거지"]) #수변부 그래프 그리기
ax[0,1].grid() #눈금 표시
#공원 그래프
ax[1,0].set_title("공원", fontsize=40)
ax[1,0].tick_params(axis = 'x', labelsize =30) #x축 눈금 크기
ax[1,0].tick_params(axis = 'y', labelsize =30) #y축 눈금 크기
dateFmt = dates.DateFormatter("%m-%d") #날짜 표시 형태 설정1
ax[1,0].xaxis.set_major_formatter(dateFmt) #주눈금 날짜 표시 형태 설정
ax[1,0].xaxis.set_major_locator(dates.MonthLocator(interval=1)) #1달 간격으로 x축 주눈금 설정
ax[1,0].tick_params(axis = 'x', labelrotation = 45) #x축 라벨 기울기 설정
ax[1,0].plot(list(df_all_mean.index), df_all_mean["공원"]) #공원부 그래프 그리기
ax[1,0].grid() #눈금 표시
plt.tight_layout() #크기 조정
반응형
'데이터 분석' 카테고리의 다른 글
커리어넷 연봉 그래프 만들기 (0) | 2022.03.15 |
---|---|
워드클라우드 생성 프로그램 만들기(1/?) (0) | 2022.03.08 |
워드클라우드 만들기 기초 활용! (0) | 2022.03.03 |
2020년 서울 주거지, 수변부, 공원 모기지수 그래프로 나타내기 (2) | 2022.02.28 |
matplotlib 그래프 이미지가 잘린 상태로 저장될 때 (2) | 2022.02.23 |
댓글