어떤 자료를 이용해서 시각화 할 지 고민했는데, 전 직장에서 해외 공항 자료를 작성했을 때 해당 지역의 기상 자료를 활용했던 것이 생각이 났다.
공공데이터 포털에서 공항의 일별 기상자료를 다운받았다.
www.data.go.kr/data/15052608/fileData.do
시각화에 필요한 라이브러리와 matplotlib에 한글을 사용하기 위한 라이브러리 import.
이 또한 jupyter notebook을 사용해서 코딩했다.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
import platform
from matplotlib import font_manager, rc
plt.rcParams['axes.unicode_minus'] = False
if platform.system() == 'Darwin':
rc('font', family='AppleGothic')
elif platform.system() == 'Windows':
path = "c:/Windows/Fonts/malgun.ttf"
font_name = font_manager.FontProperties(fname=path).get_name()
rc('font', family=font_name)
else:
print('Unknown system... sorry~~~~')
csv파일 불러오기
alldata = pd.read_csv('airport_weather_data.csv', encoding='cp949', index_col=0)
alldata.head()
일자 컬럼을 datetime으로 변환하고 인덱스로 설정하기
#사실 datetime을 설정안해줘도 된다고 생각했는데, 차트를 그릴 때 x축에 일자가 너무 지저분하게 들어가 있어서
#방법을 찾다보니 datetime을 설정하게 되었다.
alldata['일시'] = pd.to_datetime(alldata['일시'])
alldata.info()
alldata = alldata.set_index('일시')
NaN 데이터 유무를 확인
alldata.isna().sum()
이 데이터 프레임의 NaN데이터는 없음을 의미하기에 0으로 채워주고, 필요없는 컬럼 제거
alldata = alldata.fillna(0)
alldata = alldata.drop(['최대풍속 나타난시각(hhmi)','최대순간풍속 나타난시각(hhmi)','최고기온시각(hhmi)','최저기온시각(hhmi)','1시간최다강수 시각(hhmi)','평균운량(1/8)'], axis=1)
alldata.head()
이제 공항별로 나눠준다.
처음에 데이터를 다운로드 받을 때 김포, 인천, 제주공항의 자료를 받았지만, 똑같은 시각화 자료를 만드는것 보다 김포공항의 자료만 시각화 하는게 더 가독성이 좋을 것이라고 판단했다.
GMP = alldata.loc[alldata['지점명']=='김포공항',]
ICN = alldata.loc[alldata['지점명']=='인천공항',]
CJU = alldata.loc[alldata['지점명']=='제주공항',]
GMP.head()
ICN.head()
CJU.head()
김포공항 일자 별 평균 풍속
plt.figure(figsize=(25,15))
plt.plot(GMP['평균풍속(KT)'])
plt.title('김포 공항 일별 평균풍속')
plt.xlabel('일자')
plt.ylabel('평균 풍속')
plt.show()
김포공항 일별 최대 풍속과 평균풍속
plt.figure(figsize=(25,15))
plt.plot(GMP['평균풍속(KT)'],label = '평균풍속')
plt.plot(GMP['최대풍속(KT)'], label = '최대풍속')
plt.title('김포 공항 일별 평균 및 최대 풍속')
plt.xlabel('일자')
plt.ylabel('풍속')
plt.legend()
plt.show()
다음은 최대 풍속의 풍향과 최대 순간 풍속의 풍향을 나타내보았다.
plt.figure(figsize=(25,15))
plt.subplot(1,2,1)
plt.hist(data = GMP, x= '최대풍속 풍향(deg)',rwidth = 0.5,label = '최대 풍속 풍향', bins =40)
plt.title('김포 공항 일별 최대풍속 풍향 ')
plt.xlabel('풍향')
plt.ylabel('빈도수')
plt.legend()
plt.subplot(1,2,2)
plt.hist(data =GMP, x ='최대순간풍속 풍향(deg)', rwidth = 0.5,label = '최대 순간 풍속 풍향', bins=40, color='r')
plt.title('김포 공항 일별최대 순간 풍속 풍향(gust)')
plt.xlabel('풍향')
plt.ylabel('빈도수')
plt.legend()
plt.show()
RWY15보다 RWY33나 34를 더 주로 사용할 것을 볼 수 있다.
김포공항의 일자 별 최저온도와 최고온도
plt.figure(figsize=(25,15))
plt.plot(GMP['최저기온(°C)'],label = '최저기온')
plt.plot(GMP['최고기온(°C)'], label = '최고기온',color = 'r')
plt.title('김포 공항 일별 기온')
plt.xlabel('일자')
plt.ylabel('기온')
plt.legend()
plt.show()
처음에는 깊게 생각하지 못하여 놓치는 부분이 있지 않을까?라고 생각이 되어 seaborn의 pairplot을 사용해서 상관관계를 확인했다.
기압과 습도의 상관관계가 반비례 관계로 보여 scatter로 시각화 해보았다.
plt.figure(figsize=(25,15))
plt.scatter(data=GMP,x='평균상대습도(%)',y='평균해면기압(hPa)')
plt.title('기압과 습도의 상관관계')
plt.xlabel('평균상대습도')
plt.ylabel('평균해면기압')
plt.show()
마지막으로 피벗을 사용하여 공항 별 평균 자료치를 확인해봤는데 이건 다음에 어찌 쓸지 생각해 봐야겠다.
pivoted_alldata = pd.pivot_table(alldata, index = ['지점명'])
pivoted_alldata
'미니프로젝트' 카테고리의 다른 글
구글에서 파이썬 셀레니움을 통한 이미지 크롤링 (0) | 2021.04.02 |
---|---|
SVM을 통해 구매 가능성이 있는 고객 분류하기 (0) | 2021.04.01 |
인천 1호선 일자 및 시간대별 승하차 현황 시각화/prophet을 통한 승객 수요 예측 (0) | 2021.04.01 |
K-NN을 통해 구매 가능성이 있는 고객 분류하기 (0) | 2021.04.01 |
stramlit으로 크롤링을 통한 기사제목 워드클라우드 시각화하기 (0) | 2021.03.24 |