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()
요런 아이들이 있다고 합니다.
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()
엇, 오류 발생
이유는 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()
2-another. pandas 이용하기
import pandas as pd
data = pd.read_csv('/모두의 데이터 분석 with 파이썬/Unit1 기온 raw.csv', encoding='cp949')
display(data)
위에서 발생했던 오류가 또 발생하는 것을 방지하기 위해, 결측치를 먼저 확인해줍니다.
# 결측치 확인
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())
위와 같은 결과가 나왔습니다!
728x90
반응형
'Programming > Python' 카테고리의 다른 글
f-string (0) | 2021.05.31 |
---|---|
통계분석_성별/혼인/피부/가격/재사용 등 (0) | 2020.05.24 |
[ 데이터 분석 실무 with python ] 1. 사드 배치의 영향으로 중국인 관광객이 얼마나 줄었을까? (0) | 2020.05.23 |
[ 모두의 데이터 분석 with python ] 3.지하철 데이터 (0) | 2020.05.08 |
[ 모두의 데이터 분석 with python ] 2. 인구 데이터 (0) | 2020.05.05 |