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

IT/빅데이터|2020. 10. 17. 08:47

 

안녕하세요 직장인 블로거입니다~ 전 당분간 그동안 제가 관심있게 공부하고 있었던 빅데이터 분석과 관련한 포스팅을 계속적으로 게재하려고 합니다. 파이썬으로 공공데이터를 분석하는 내용이기 때문에 다소 어려울 수 있습니다만 관심있으신 분들은 한번 재밌게 봐 보세요~ 소스코드 다 오픈합니다~

 


먼저 제가 분석하려고 하는 데이터는 기상청에서 제공하는 공공데이터 입니다. 오픈데이터로 누구나 무료로 사용할 수 있써요. 그리고 분석하는 툴은 원래 R을 사용해보려다가 파이썬(Python)으로 바꿧습니다. 최근에 온라인 교육을 하나 들어봤는데 거기서 파이썬을 재밌게 잘 사용하시더라구요~

 

우선 공공데이터가 무엇인지, 어떤 공공데이터가 빅데이터로 오픈하고 있는지 알아보세요~ 아래는 제가 전에 포스팅해 놨었던 내용입니다. 참고하시면 될 꺼 같아요.

 

 

한장으로 정리한 공공데이터포털에서 제공하는 데이터 목록 및 유형(국가표준, 이슈데이터 등)

어느 데이터를 제공하고 있어서 어떤 데이터를 가지고 어떤 서비스를 개발할 지는 먼저 데이터 유형이 정리가 되면 더 좋을 것 같은 취지구요 이렇게 한장으로 정리함으로서 더 많은 저와 같은

funfundata.tistory.com


저는 서울에서 그동안 관측되었던 기온 중 가장 날이 더웠던 날의 날짜와 온도를 구해보도록 하겠습니다. 파이썬을 사용해서 분석하는 것이니 물론 파이썬의 기본지식이 있어야 겠죠.

 

혹시 파이썬이 생소하시면 아래 포스팅 참고해서 한번 보고 오시면 좋습니다.

 

 

파이썬 소개 및 기본 문법 사용 방법입니다.

최근에 파이썬을 배우고 있습니다. 파이썬은 다양한 프로그래밍을 쉽고 간편하게 만들 수 있는 유용한 프로그램 언어예요. 파이썬으로 빅데이터 분석을 하고자 열심히 배우고 있는데 파이썬에

funfundata.tistory.com


 

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

 

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

 

 

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

 

그리고 기간은 19080101부터 현재 날짜로 변경 지정 하여 파일 생성(사진과 상이합니다!)합니다.

 

 

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

 

 

 

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

 

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

 

 

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


import csv

f = open('seoul.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()함수를 사용하여 출력합니다.

 

 

소스코드를 돌려보니 결과가 나왔네요. 제가 범주로 정해놓은 기간동안 서울의 가장 높았던 날은 2018년 8월 1일이며 이 당시 온도가 무려 39.6도!!! 40도에 육박했네요..

 

 

<전체 소스 코드>

import csv
f = open('seoul.csv','r',encoding='')
data = csv.reader(f, delimiter=',')
header = next(data)
#print(header) #파일의 메타데이터 확인 명령어

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, '도 입니다.')

 

댓글()