기상자료개방포털에 가면 기후통계분석 - 기온분석에서 기간별로 각 지역의 기온 데이터를 csv파일로 받을 수 있다.
거기서 받은 자료를 바탕으로 데이터를 가져와보자
import csv
f = open('seoul.csv')
data = csv.reader(f)
for row in data :
print(row)
f.close()
이렇게 for문을 써서 데이터를 가져오면
['날짜', '지점', '평균기온(℃)', '최저기온(℃)', '최고기온(℃)']['2002-06-01', '108', '20.2', '17.1', '24.8']
['2002-06-02', '108', '22.9', '15.3', '30']['2002-06-03', '108', '23.4', '17.6', '29.1']
['2002-06-04', '108', '22.4', '18.2', '27.6']['2002-06-05', '108', '25.2', '19.1', '31.4']
['2002-06-06', '108', '25.9', '21.2', '31.2']['2002-06-07', '108', '25.2', '19.6', '30.6']
['2002-06-08', '108', '22.1', '19.4', '27.1']['2002-06-09', '108', '22.8', '18.3', '28']
['2002-06-10', '108', '22.4', '20', '26.6']['2002-06-11', '108', '21.9', '19', '26.8']
['2002-06-12', '108', '18.6', '16.6', '22.9']['2002-06-13', '108', '19.7', '16', '24.4']
['2002-06-14', '108', '20.4', '16.4', '25']['2002-06-15', '108', '20.6', '17.4', '24.8']
['2002-06-16', '108', '22.4', '15.7', '28.6']['2002-06-17', '108', '23.2', '17.9', '28.4']
['2002-06-18', '108', '23.4', '19', '28.9']['2002-06-19', '108', '22.3', '20.2', '26.2']
['2002-06-20', '108', '22.2', '19.2', '26.1']['2002-06-21', '108', '23.6', '18.8', '28.4']
['2002-06-22', '108', '23.7', '18.9', '29.2']['2002-06-23', '108', '18.1', '16.9', '21.3']
['2002-06-24', '108', '16.4', '15.3', '17.7']['2002-06-25', '108', '19.8', '15.5', '25']
['2002-06-26', '108', '20.9', '14.5', '27.7']['2002-06-27', '108', '21.6', '16.5', '27.5']
['2002-06-28', '108', '23.6', '17.4', '30']['2002-06-29', '108', '25.8', '18.9', '32']
['2002-06-30', '108', '26.3', '22.4', '31.5']
대충 이런 식으로 결과값이 나온다.
import csv
f = open('seoul.csv')
data = csv.reader(f)
header = next(data)
print(header)
f.close()
이렇게 header를 가져올 수 있다.
['날짜', '지점', '평균기온(℃)', '최저기온(℃)', '최고기온(℃)']
이를 이용해서
import csv
f = open('seoul.csv')
data = csv.reader(f)
header = next(data)
for row in data :
print(row)
f.close()
이렇게 header = next(data)
를 추가하면 header를 제외한 순수 데이터만 출력이 된다.
일단 최고 기온이 가장 높았던 날을 찾기 위해서 각 날짜의 최고 기온을 실수로 변환하자
import csv
f = open('seoul.csv')
data = csv.reader(f)
header = next(data)
for row in data :
if row[-1] == '':
row[-1] = -9999
else:
row[-1] = float(row[-1]) # 최고 기온을 실수로 변환
print(row)
f.close()
최고 기온은 각 row의 마지막값이므로 row[-1]값을 float으로 변환하면 된다.
if문으로 최고 기온의 값이 비어있을 때를 대비해 값이 비어있을 때는 -9999를 넣어줬다.
import csv
max_temp = -999
max_date = ''
f = open('seoul.csv')
data = csv.reader(f)
header = next(data)
for row in data :
if row[-1] == '':
row[-1] = -9999
else:
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)
max_temp
는 가장 높았던 최고 기온이고,
max_date
는 최고 기온이 가장 높았던 날이다.
반복문 안에서 최고 기온 값을 비교해 넣어준 후 출력하면 된다.
2018-08-01 39.6
기상 관측 이래 서울의 최고 기온이 가장 높았던 날은 2018-08-01
이고, 39.6
도였다.
모두의 데이터 분석 with 파이썬