티스토리 뷰
데어터 불러오기
import pandas as pd
df_1911=pd.read_csv('./시각화/19111920.csv',encoding='cp949')
df_1921=pd.read_csv('./시각화/19211930.csv',encoding='cp949')
df_1931=pd.read_csv('./시각화/1931.csv',encoding='cp949')
df_1941=pd.read_csv('./시각화/1941.csv',encoding='cp949')
df_1951=pd.read_csv('./시각화/1951.csv',encoding='cp949')
df_1961=pd.read_csv('./시각화/1961.csv',encoding='cp949')
df_1971=pd.read_csv('./시각화/1971.csv',encoding='cp949')
df_1981=pd.read_csv('./시각화/1981.csv',encoding='cp949')
df_1991=pd.read_csv('./시각화/1991.csv',encoding='cp949')
df_2001=pd.read_csv('./시각화/2000.csv',encoding='cp949')
df_2011=pd.read_csv('./시각화/2011.csv',encoding='cp949')
df_1911.tail()
데이터 합치기
pd,concat([데이터프레임 리스트], axis=0) 행 방향으로 연결
->아래에 이어붙임
pd,concat([데이터프레임 리스트], axis=1) 열 방향으로 연결
-> 오른쪽에 이어붙임
ignore_index=True 인덱스 재지정
df=pd.concat([df_1911,df_1921,df_1931,df_1941,df_1951,df_1961,df_1971,df_1981,df_1991,df_2001,df_2011])
전처리하기
df.dtypes
지점 int64
지점명 object
일시 object
평균기온(°C) float64
최저기온(°C) float64
최고기온(°C) float64
dtype: object
시간을 datetime으로 바꿔준다
df['일시']=pd.to_datetime(df['일시'])
print(df['일시'].unique())
print(df['일시'].nunique())
print(df['일시'].dt.year.nunique())
['1911-10-04T00:00:00.000000000' '1911-10-09T00:00:00.000000000'
'1911-10-16T00:00:00.000000000' ... '2020-12-29T00:00:00.000000000'
'2020-12-30T00:00:00.000000000' '2020-12-31T00:00:00.000000000']
40178
110
총 110년이 있다.
서울시 데이터만 분석하기
df_seoul=df[df['지점명']=='서울'].copy()
df_seoul.head()
#결측치분석
#데이터프레임.isnull().sum()
df_seoul.isnull()
지점 지점명 일시 평균기온(°C) 최저기온(°C) 최고기온(°C)
3299 False False False False False False
3300 False False False False False False
3301 False False False False False False
3302 False False False False False False
3303 False False False False False False
False는 결측치가 없는 것, True는 결측치가 있는 것
df_seoul.isnull().sum()
지점 0
지점명 0
일시 0
평균기온(°C) 0
최저기온(°C) 2
최고기온(°C) 3
dtype: int64
최저기온과 최고기온을 처리한다.
결측치제거
df_seoul[(df_seoul['최저기온(°C)'].isnull() | df_seoul['최고기온(°C)'].isnull())]
df_seoul=df_seoul.dropna()
연도별 데이터 개수 확인
df_seoul['일시'].dt.year.value_counts()
2020 366
1964 366
1992 366
1988 366
1944 366
...
2017 364
1973 364
1967 364
1950 243
1953 31
Name: 일시, Length: 108, dtype: int64
길이가 108인것이 보인다. 한국전쟁시기의 데이터가 빠졌다.
평균기온 분석
df_seoul.groupby(df_seoul['일시'].dt.year)['평균기온(°C)'].mean()
일시
1911 10.654795
1912 10.123770
1913 10.086027
1914 12.029041
1915 10.898356
...
2016 13.592896
2017 13.077747
2018 13.002466
2019 13.598904
2020 13.271858
Name: 평균기온(°C), Length: 108, dtype: float64
import matplotlib.pyplot as plt
plt.figure(figsize=(15,5))
plt.plot(df_mean,'.')
plt.xticks(range(1911,2021,2),rotation=90)
plt.show()
이상치제거
df_mean.drop(index=[1950,1953],inplace=True)
plt.rcParams['font.family']='Malgun Gothic'
plt.rcParams['axes.unicode_minus']=False
plt.plot(df_mean,'g.-')
plt.title('서울시 연 평균기온의 변화',size=15)
plt.show()
서울시 연간 최저기온 변화
df_seoul_min=df_seoul.groupby(df_seoul['일시'].dt.year)['최저기온(°C)'].min()
plt.plot(df_seoul_min,'b.-')
plt.title('서울시 연 최저기온의 변화',size=15)
plt.show()
최고기온 시각화
df_seoul_max=df_seoul.groupby(df_seoul['일시'].dt.year)['최고기온(°C)'].max()
df_seoul_max.drop(index=[1950,1953],inplace=True)
plt.plot(df_seoul_max,'r.-')
plt.title('서울시 연 최고 기온 변화',size=15)
plt.show()
fig=plt.figure(figsize=(15,5))
plt.subplot(131)
plt.plot(df_mean,'g.-')
plt.title('서울시 연 평균기온의 변화',size=15)
plt.xlabel('연도')
plt.ylabel('평균기온')
plt.grid(ls=':')
plt.plot()
plt.subplot(132)
plt.plot(df_seoul_min,'b.-')
plt.title('서울시 연 최저기온의 변화',size=15)
plt.xlabel('연도')
plt.ylabel('최저기온')
plt.grid(ls=':')
plt.subplot(133)
plt.plot(df_seoul_max,'r.-')
plt.title('서울시 연 최고 기온 변화',size=15)
plt.xlabel('연도')
plt.ylabel('최고기온')
plt.grid(ls=':')
#전체 서식 바꾸기
fig.suptitle('서울시 기온 변화',size=20,fontweight='bold')
fig.tight_layout()
plt.show()
plt.figure(figsize=(15,7))
plt.plot(df_mean,'g.-',label='평균기온')
plt.plot(df_seoul_min,'b.-',label='최저기온')
plt.plot(df_seoul_max,'r.-',label='최고기온')
plt.xticks(range(1910,2021,5))
plt.yticks(range(-25,42,5))
plt.grid(ls=':')
plt.legend(loc=(0,1.01),ncol=3,fontsize=12,edgecolor='k')
#수평선 그리기
plt.axhline(df_mean.min(),color='gray',ls='--')
plt.axhline(df_mean.max(),color='gray',ls='--')
plt.axhline(df_seoul_min.min(),color='gray',ls='--')
plt.axhline(df_seoul_min.max(),color='gray',ls='--')
plt.axhline(df_seoul_max.min(),color='gray',ls='--')
plt.axhline(df_seoul_max.max(),color='gray',ls='--')
plt.show()
'새싹 > 새싹 데이터시각화' 카테고리의 다른 글
8. 서울시 폭염 및 열대야분석 시각화 (0) | 2022.08.08 |
---|---|
8. 전국지점별 기온분석 (0) | 2022.07.30 |
6. seaborn-막대그래프 (0) | 2022.07.19 |
5. 그래프 스타일 고급 설정 (0) | 2022.07.15 |
4. 데이터의 분포와 비율을 파악하기 위한 그래프 (1) | 2022.07.12 |
- Total
- Today
- Yesterday
- 윤성우
- 파이썬
- c++
- 뇌와행동의기초
- 통계
- stl
- 오블완
- K-MOOC
- 인프런
- 회계
- 일본어
- 일문따
- 류근관
- jlpt
- Python
- 보세사
- 백준
- 여인권
- 심리학
- 사회심리학
- 열혈프로그래밍
- 티스토리챌린지
- 인지부조화
- 강화학습
- 코딩테스트
- 통계학
- 데이터분석
- C
- C/C++
- 일본어문법무작정따라하기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |