본문 바로가기

Python_Intermediate/Pandas

Python - 한국기상청 도시별 현재 날씨 Data 분석 시각화

728x90

1. Import Module

import pandas as pd
from print_df import print_df
import matplotlib.pyplot as plt


2. Sample Data : https://developer-ankiwoong.tistory.com/259


3. Code

import pandas as pd
from print_df import print_df
import matplotlib.pyplot as plt

df = pd.read_csv('weather.csv', encoding='utf=8')

df_list = list(df['지역'])

index_dict = {}

for i, v in enumerate(df_list):
index_dict[i] = v

df.drop('지역', axis=1, inplace=True)
df.rename(index=index_dict, inplace=True)

city = df.loc[['서울', '인천', '대전', '대구', '광주', '부산', '울산']]

plt.rcParams["font.family"] = 'NanumGothic'
plt.rcParams["font.size"] = 14
plt.rcParams["figure.figsize"] = (10 ,10)

plt.figure()
city.plot(kind='barh')
plt.title('특별시 / 광역시 날씨')
plt.xlabel('기온/습도')
plt.ylabel('도시')
plt.grid()
plt.legend()
plt.savefig('wether.png')
plt.close()


4 Code 풀이

- Data Frame 생성

df = pd.read_csv('weather.csv', encoding='utf=8')


- Data Frame 크기 확인

print('shape:', df.shape)

shape: (95, 3)


Process finished with exit code 0


- Data Frame Head 확인
print_df(df.head())

+---+--------+-------+-------+

|   |  지역  |  기온 |  습도 |

+---+--------+-------+-------+

| 0 |  서울  |  18.1 |   45  |

| 1 | 백령도 |  20.7 |   32  |

| 2 |  인천  |  17.3 |   59  |

| 3 |  수원  |  18.6 |   57  |

| 4 | 동두천 |  19.0 |   59  |

+---+--------+-------+-------+




Process finished with exit code 0


- Data Frame Tail 확인

print_df(df.tail())

+----+------+-------+-------+

|    | 지역 |  기온 |  습도 |

+----+------+-------+-------+

| 90 | 합천 |  20.7 |   36  |

| 91 | 밀양 |  19.2 |   32  |

| 92 | 산청 |  18.8 |   45  |

| 93 | 거제 |  22.7 |   35  |

| 94 | 남해 |  21.7 |   41  |

+----+------+-------+-------+




Process finished with exit code 0


- 인덱스 정리 작업
df_list = list(df['지역'])

index_dict = {}

for i, v in enumerate(df_list):
index_dict[i] = v

df.drop('지역', axis=1, inplace=True)
df.rename(index=index_dict, inplace=True)

+--------------+-------+-------+

|              |  기온 |  습도 |

+--------------+-------+-------+

|     서울     |  18.1 |   45  |

|    백령도    |  20.7 |   32  |

|     인천     |  17.3 |   59  |

|     수원     |  18.6 |   57  |

|    동두천    |  19.0 |   59  |

|     파주     |  18.5 |   61  |

|     강화     |  19.2 |   50  |

|     양평     |  16.5 |   58  |

|     이천     |  18.0 |   51  |

|    북춘천    |  17.1 |   54  |

|    북강릉    |  23.0 |   20  |

|    울릉도    |  19.3 |   46  |

|     속초     |  23.9 |   19  |

|     철원     |  18.5 |   40  |

|    대관령    |  14.8 |   38  |

|     춘천     |  16.9 |   53  |

|     강릉     |  22.5 |   24  |

|     동해     |  22.0 |   23  |

|     원주     |  17.9 |   41  |

|     영월     |  18.1 |   48  |

|     인제     |  16.6 |   51  |

|     홍천     |  17.6 |   58  |

|     태백     |  18.5 |   23  |

|    정선군    |  16.8 |   41  |

|     서산     |  18.4 |   65  |

|     청주     |  19.2 |   55  |

|     대전     |  19.5 |   57  |

|     충주     |  17.8 |   49  |

|    추풍령    |  18.9 |   33  |

|     홍성     |  19.4 |   59  |

|     제천     |  17.3 |   43  |

|     보은     |  17.9 |   54  |

|     천안     |  18.0 |   59  |

|     보령     |  19.5 |   57  |

|     부여     |  19.3 |   60  |

|     금산     |  19.4 |   45  |

|     전주     |  20.2 |   52  |

|     광주     |  18.6 |   55  |

|     목포     |  19.3 |   51  |

|     여수     |  18.7 |   52  |

|    흑산도    |  16.8 |   68  |

|     군산     |  19.0 |   60  |

|     완도     |  18.6 |   69  |

|     고창     |  19.5 |   55  |

|     순천     |  18.3 |   56  |

| 진도(첨찰산) |  17.2 |   57  |

|     부안     |  20.7 |   48  |

|     임실     |  16.5 |   51  |

|     정읍     |  20.2 |   54  |

|     남원     |  17.2 |   47  |

|     장수     |  18.7 |   34  |

|    고창군    |  20.5 |   47  |

|    영광군    |  19.8 |   54  |

|    순창군    |  17.4 |   57  |

|    보성군    |  18.3 |   61  |

|    강진군    |  18.2 |   56  |

|     장흥     |  18.3 |   54  |

|     해남     |  19.4 |   52  |

|     고흥     |  20.1 |   41  |

|    광양시    |  20.4 |   42  |

|    진도군    |  20.4 |   52  |

|     제주     |  24.3 |   28  |

|     고산     |  19.7 |   69  |

|     성산     |  20.8 |   29  |

|    서귀포    |  23.4 |   35  |

|     안동     |  17.6 |   50  |

|     포항     |  20.9 |   33  |

|     대구     |  19.9 |   30  |

|     울산     |  21.4 |   35  |

|     창원     |  20.7 |   39  |

|     부산     |  21.2 |   33  |

|     울진     |  21.2 |   31  |

|     상주     |  19.9 |   52  |

|     통영     |  18.7 |   60  |

|     진주     |  19.2 |   51  |

|    김해시    |  22.5 |   38  |

|    북창원    |  21.5 |   37  |

|    양산시    |  20.7 |   44  |

|    의령군    |  20.1 |   40  |

|    함양군    |  18.2 |   58  |

|     봉화     |  16.6 |   46  |

|     영주     |  16.1 |   52  |

|     문경     |  18.4 |   55  |

|    청송군    |  18.6 |   46  |

|     영덕     |  21.8 |   31  |

|     의성     |  19.1 |   40  |

|     구미     |  19.9 |   43  |

|     영천     |  20.0 |   33  |

|    경주시    |  20.9 |   38  |

|     거창     |  17.5 |   49  |

|     합천     |  20.7 |   36  |

|     밀양     |  19.2 |   32  |

|     산청     |  18.8 |   45  |

|     거제     |  22.7 |   35  |

|     남해     |  21.7 |   41  |

+--------------+-------+-------+




Process finished with exit code 0


- 특별시 / 광역시 데이터만 추출(서울 / 인천 / 대전 / 대구 / 광주 / 부산 / 울산)

city = df.loc[['서울', '인천', '대전', '대구', '광주', '부산', '울산']]

+------+-------+-------+

|      |  기온 |  습도 |

+------+-------+-------+

| 서울 |  18.1 |   45  |

| 인천 |  17.3 |   59  |

| 대전 |  19.5 |   57  |

| 대구 |  19.9 |   30  |

| 광주 |  18.6 |   55  |

| 부산 |  21.2 |   33  |

| 울산 |  21.4 |   35  |

+------+-------+-------+




Process finished with exit code 0


- 그래프 시각화

plt.rcParams["font.family"] = 'NanumGothic'
plt.rcParams["font.size"] = 14
plt.rcParams["figure.figsize"] = (10 ,10)

plt.figure()
city.plot(kind='barh')
plt.title('특별시 / 광역시 날씨')
plt.xlabel('기온/습도')
plt.ylabel('도시')
plt.grid()
plt.legend()
plt.savefig('wether.png')
plt.close()


반응형