빅데이터 분석 - 기상관측이래 대전이 가장 더웠던 날과 온도는?

IT/빅데이터|2020. 10. 21. 11:48

 

안녕하세요 직장인 블로거입니다. 이번 빅데이터 분석에서는 대전광역시에서 기상청 관측이례 가장 더웠던 날의 일자와 온도를 구해보고자 합니다. 물론 빅데이터 분석이라는 주제로요. 파이썬으로 공공데이터를 분석하는 내용이기 때문에 다소 어려울 수 있습니다만 관심있으신 분들은 한번 재밌게 봐 보세요. 소스코드도 포스팅 하단에 정리해 두었습니다.

 

 

 기상청공공데이터포털에 접속하여 기온데이터를 다운받습니다. 

 

파이썬으로 빅데이터 분석을 하기 위해서는 CSV파일이 필요합니다. 기상청 공공데이터 포털에서도 CSV형식으로 파일을 제공합니다. 

 

데이터를 받으려는 날짜와 지역, 지역은 대전광역시를 선택하여 파일을 다운로도 받도로 합니다. 파일의 이름은 원하는거 아무거나 적으시면 되지만 이 파일은 파이썬에서 호출하는 대상이 되니 너무 길거나 복잡하게 하지 마세요.

 

그리고 기간은 19080101부터 현재 날짜로 변경 지정 하여 파일 생성합니다.

(아래 사진과 날짜가 상이합니다.참고하셔요)

 

 

저는 daejeon로 파일명을 입력해서 저장하였습니다. 

 

 

다운로드 받은 파일을 파이썬에서 호출하여 분석을 하도록 합니다. 

 

그 전에 CSV파일을 조금 편집하도록 하세요. 분석이 용이하려면 원래 다운로드 파일에서 불필요한 부분을 삭제해야 합니다. 아래와 같이 데이터가 없는 데이터 설명 부분을 삭제하고 다시 저장합니다.

 

 

이제 이 파일을 파이썬에서 불러와 보도록하죠.

 

 

import csv

f = open('daejeon.csv','r',encoding='')

data = csv.reader(f, delimiter=',')

header = next(data)

#print(header)로 메타 데이터 내역 확인 가능

 

 

우선 import로 파이썬의 CSV함수 사용을 선언하고 파일을 불러옵니다. 그 전에 한글 파일이니 파이썬에서 깨지지 않도록 인코등도 한글로 지정하여야 합니다.

 

next()함수는 파일의 메타데이터를 삭제하는 명령어 입니다. 실제로 삭제가 아닌 제외기 때문에 메타데이터를 header로 이관한다고 보시면됩니다. 실제 데이터 분석에 메타데이터는 필요가 없거든요.

 

 

max_temp = -999

max_date = ''

 

 

가장 기온이 높았던 날짜를 구하기 위해 우선 max_temp변수를 선언하여 최저치를 입력합니다. 이 변수에 있는 값을 비교하며 최고 온도 데이터를 구하는 건데 제일 처음 비교되는 대상의 온도가 바로 max_temp로 들어가야하기 때문에 가장 낮은 온도를 입력한거예요.

 

 

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에 있는 csv내역을 전체 다 비교하면서 최고 온도를 찾는 코드입니다. 최고온도를 갖는 행이 발생하면 해당 행의 날짜와 온도를 max_date변수와 max_temp변수에 치환하도록 구성하였습니다.

 

참고로 다운파일의 구성을 보면 가장 앞열에 날짜가 있고 가장 마지막 열에 최고온도가 있습니다. 그리고 최고온도열 바로 앞열에는 최저온도 데이터가 있습니다. 이런 빅데이터를 분석할때는 가장 먼저 파일의 구성을 파악해야합니다. 

 

row[0]은 날짜를, row[-1]은 최고 온도의 위치 명령어입니다.

 

 

f.close()

print('기상관측 이래로 대전의 최고 기온이 가장 높았던 날은', max_date+'로,', max_temp, '도 입니다.')

 

 

전체 파일의 빅데이터를 쭉 비교하면서 최종적으로 나온 최고기온의 날짜와 최고기온이 남긴 변수 내용을 print()함수를 사용하여 출력합니다.

 

 

위 사진의 결과값을 확인해 보면 기상청 관측이례 대전의 최고기온은 39.4도로 2년전인 2018년 8월 15일, 광복절이었군요!

 

<전체 소스 코드>

 

import csv 
f = open('daejeon.csv','r',encoding='cp949')
data = csv.reader(f,delimiter=',')
header = next(data)

max_temp = -999
max_date = ''

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]

f.close()

print('기상관측 이래로 대전의 최고 기온이 가장 높았던 날은', max_date+'로,', max_temp, '도 입니다.')

 

이렇게 파이썬을 사용하여 공공 빅데이터를 가지고 대전에서 가장 더운 날의 날짜와 온도를 구해보았습니다. 물론 기상 공공데이터에는 최고온도외에 최저온도도 있고 날짜도 로우데이터로 모수가 충분하기 때문에 다양한 방면으로 분석하여 사용할 수 있습니다. 

 

빅데이터 분석은 분석가의 창의력에 따라 어떠한 결과가 나올지 모르는 미지의 영역입니다. 더욱 멋진 분석 영역을 공부해보면 좋을거 같아요.

댓글()