상세 컨텐츠

본문 제목

기온 공공 데이터 활용 데이터 분석하기

데이터분석/실습

by 2^7 2022. 4. 26. 09:35

본문

대전의 기온 데이터 분석하기

기상데이터자료 개방포털(https://data.kma.go.kr/cmmn/main.do)의 통계데이터를 활용1907년부터 2021년까지의 대전의 기온 데이터 자료(csv파일)를 다운받아 활용

1. 다운받은 파일 불러오기

import csv
f = open('daejeon.csv', encoding='cp949')   #csv 파일 불러오기 /cp949(window 한글 인코딩 방식)/
data = csv.reader(f)                        #csv 파일 열기  
for row in data :
    print(row)
f.close()

불러온 csv파일 결과 일부

1-1. 헤더파일을 제외한 데이터 출력

  • 헤더파일 별도 저장하기
import csv
f = open('daejeon.csv')
data = csv.reader(f)
header = next(data)  #헤더파일 별도로 저장하기
print(header)
f.close()

  • 데이터만 출력하기
    import csv
    f = open('daejeon.csv')
    data = csv.reader(f)
    header = next(data)
    for row in data :
    print(row)
    f.close()

데이터 출력 결과

2. 대전의 최고 기온이 가장 높았던 날 알아보기

2-1 데이터 준비하기

  • 데이터 값을 실수형(float)으로 변환하기
    • 현재 데이터들은 문자열로 되어 있어 값을 더하거나 크기를 비교할 수 없어 실수형(float)으로 변환이 필요
import csv
f = open('daejeon.csv')
data = csv.reader(f)
header = next(data)
for row in data :
    row[-1] = float(row[-1])  #실수 데이터로 변환
    print(row)
f.close()

실수 데이터로 변환한 결과

    - '-1.0'으로 되어 있던 데이터가 ' '가 제거된 -1.0으로 실수형(float)으로 변환되었다

  • 결측값 처리하기

     - 데이터 중 일부가 누락되어 있어 데이터 처리 과정에 문제가 발생할 수 있다. 그래서 일부 누락된 데이터 값을 전체

       데이터에 영향이 없도록 제거하거나 생성하여 처리한다.

import csv
f = open('daejeon.csv')
data = csv.reader(f)
header = next(data)
for row in data :
    if row[-1] == '':
        row[-1] = -999         #결측값을 -999로 대체
    row[-1] = float(row[-1])
    print(row)
f.close()

2-2 대전의 최고 기온이 높았던 날 알아보기

  • 위에서 처리한 데이터를 가지고 대전의 최고 기온이 높았던 날을 알아보자
import csv                        #csv 불러오기
f = open('daejeon.csv')            #daejeon.csv 파일 읽기
data = csv.reader(f)
header = next(data)               #윗줄을 header변수에 저장
max_temp = -999                   #최고 기온을 저장할변수 초기화
max_date = ''                     #최고 기온이었던 날짜를 저장할 변수 초기화
for row in data :
    if row[-1] == '':            #만약 데이터가 누락되었다면 -999로 대체
        row[-1] = -999         
    row[-1] = float(row[-1])      #문자열로 저장된 최고 기온값을 실수로 변환
    if max_temp < row[-1] :       #만약 지금까지 최고 기온보다 더 높다면 업데이트
        max_date = row[0]
        max_temp = row[-1]
f.close()
print('기상 관측 이래 대전의 최고 기온이 가장 높았던 날은', max_date+'로,', max_temp,'도 였습니다.')

출력 결과

 

 

참고 서적 : 모두의 데이터분석 with파이썬
728x90

관련글 더보기