본문 바로가기
Programming/Python

[ 모두의 데이터 분석 with python ] 1. 기온 데이터

by _S0_H2_ 2020. 5. 5.
728x90
반응형

0. 데이터 가져오기

다음의 책을 참조하였습니다.

참조한 책

 

 

기온 데이터를 다운로드 받기 위해서 https://data.kma.go.kr  에 접속하였습니다.

기후 통계분석 -> 통계분석 -> 기온분석 을 차례로 클릭하였습니다.

기간은 19040101 ~ 20190117 로 설정하였습니다.

 

 

이후, csv 다운로드를 클릭합니다.

 

 

파일을 열어 불필요한 부분을 삭제한 뒤, csv로 다시 저장하였습니다.

 

 

 

 


 

 

저는 구글 드라이브에서 실행하였습니다.

1. 데이터 살펴보기

파일을 로드하여, header에 어떤 것이 있는지 확인해봅니다.

 

import csv
f = open('/모두의 데이터 분석 with 파이썬/Unit1 기온 raw.csv', encoding='cp949')
data = csv.reader(f)
header = next(data)
print(header)
f.close()

 

 

header

요런 아이들이 있다고 합니다.

 

 


 

2. 가장 더운날이 언제였을까?

최고 기온을 확인하기 위해 row[-1] 값( row[4] )을 확인해보고자 합니다. 

 

import csv
f = open('/모두의 데이터 분석 with 파이썬/Unit1 기온 raw.csv', encoding='cp949')
data = csv.reader(f)
header = next(data)
for row in data:
    # 최고 기온을 실수로 변환
    row[-1] = float(row[-1])
    print(row)
f.close()

 

엇, 오류 발생

string to float error

 

이유는 1950년 9월 1일의 데이터에서 기온 데이터가 누락되었기 때문입니다.

 

해결하기 위해서

최고 기온 값으로 나오기 힘든 아주 작은 값인 -999를 입력하여 대체하겠습니다.

import csv
f = open('/모두의 데이터 분석 with 파이썬/Unit1 기온 raw.csv', encoding='cp949')
data = csv.reader(f)
header = next(data)
for row in data:
    if row[-1] == '':
        row[-1] = -999
    row[-1] = float(row[-1])
    print(row)
f.close()

 

이제 깨끗한 데이터가 만들어졌습니다. 

 

그렇다면, 최고 기온을 저장할 변수인 max_temp를 만들고, 최고 기온이 가장 높은 날의 날짜를 저장할 변수인 max_date를 만들겠습니다.

import csv
# 파일 열기
f = open('/모두의 데이터 분석 with 파이썬/Unit1 기온 raw.csv', encoding='cp949')
data = csv.reader(f)

# column명 확인하기
header = next(data)

# 최고온도를 저장할 변수 생성
max_temp = -999
# 최고온도의 날짜를 저장할 변수 생성
max_date = ''

# data의 한 줄 씩 돌면서
for row in data:
	# 공백은 채워줍니다
    if row[-1] == '':
        row[-1] = -999
    # 기온은 정수로 바꿔줍니다
    row[-1] = float(row[-1])

	# 만약 기온이 저장된 최고온도보다 크다면
    if max_temp < row[-1]:
    	# 최고온도의 날짜를 변경하고
        max_date = row[0]
        # 최고온도를 변경합니다
        max_temp = row[-1]

# data를 모두 살펴본 뒤의 결과값을 출력
print(max_date, max_temp)

f.close()

result


 

2-another. pandas 이용하기

 

import pandas as pd

data = pd.read_csv('/모두의 데이터 분석 with 파이썬/Unit1 기온 raw.csv', encoding='cp949')
display(data)

data_raw

 

위에서 발생했던 오류가 또 발생하는 것을 방지하기 위해, 결측치를 먼저 확인해줍니다.

# 결측치 확인
data.isnull().sum()

결측치

 

평균기온, 최저기온, 최고기온에 기온이 누락되어있는 것을 확인하였습니다 !

위와 같은 방법으로 결측치에는 -999 값으로 대체하여줍니다.

data = data.fillna(-999)
data.isnull().sum()

 

 결측치를 채워주고 다시 확인해보니? 이제 없네요!

결측치 확인

# 최고기온 중 가장 큰 값을 변수에 저장하고
a = data['최고기온(℃)'].max()

# 최고기온을 찾은 index를 mask로 저장해줍니다
mask = data['최고기온(℃)'].tolist().index(a)

# data['날짜'] 중 mask값과, 최고기온 값을 출력해줍니다
print(data['날짜'][mask], data['최고기온(℃)'].max())

result

 

위와 같은 결과가 나왔습니다! 

728x90
반응형