기온 공공 데이터
1.1 기온 데이터 가져오기
- 기상청은 기상자료개방포털 홈페이지를 통해 기상 관련 데이터를 무료로 제공
1.2 기온 데이터 분석
1.2.1 CSV 파일에서 데이터 읽어 오기
- csv.reader() : CSV 파일에서 데이터 읽어오는 함수
- csv.writer() : CSV 파일에 데이터를 저장하는 함수
1행 부터 7 행까지는 실제 데이터가 아니므로 삭제
1.2.2 데이터 출력
import csv
f = open('부산.csv', 'r', encoding='cp949')
data = csv.reader(f)
for row in data:
print(row)
f.close()
['\t2023-04-21', '108', '16.7', '11.4', '22.8']
['\t2023-04-22', '108', '16.9', '12.2', '22.5']
['\t2023-04-23', '108', '16.1', '10.7', '22.1']
['\t2023-04-24', '108', '15.8', '11.5', '21.3']
['\t2023-04-25', '108', '10.9', '9', '13.2']
['\t2023-04-26', '108', '10.2', '7.4', '13.5']
['\t2023-04-27', '108', '12.9', '5.1', '20']
['\t2023-04-28', '108', '15.7', '9', '21.3']
['\t2023-04-29', '108', '13.2', '9.9', '15.8']
['\t2023-04-30', '108', '12.7', '7.9', '17.9’]
- open()함수의 두 번째 인자 'r'의 의미는 파일을 여는데 '읽기 모드'로 열겠다는 뜻, 세 번째 인자에서 cp949의 의미는 Window의 한글 인코딩 방식으로 읽어 오겠다는 뜻
- 각 행의 데이터가 대괄호([])로 둘러싸여 있음, 즉 리스트!
- 각 행, 리스트 데이터의 각 요소가 작은 따옴표로 둘러싸여 있음, 즉 문자열!
- 누락된 데이터가 있음, 1967년 2월 19일과 1973년 10월 16일 데이터를 확인
import csv
# open()함수의 일기 모드를 알리는 파라메타 'r' 생략
f = open('부산.csv', encoding='cp949')
data = csv.reader(f)
# 각 요소는 ['\\t2022-03-30', '159', '14', '9.8', '16.2'] 이런 형태
for row in data:
if row[0] == "\\t1967-02-19" or row[0] =="\\t1973-10-16":
print(row)
f.close()
['\t1967-02-19', '108', '-1.7', '', '']
['\t1973-10-16', '108', '12.3', '', '']
1.2.3 헤더 확인하기
import csv
f = open('부산.csv', encoding='cp949')
data = csv.reader(f)
# 첫번째 행을 읽어와서 header에 할당
header = next(data)
print(header)
# 그 다음 행을 읽어와서 first_row에 할당
first_row = next(data)
print(first_row)
f.close()
['날짜', '지점', '평균기온(℃)', '최저기온(℃)', '최고기온(℃)']
['\t1907-10-01', '108', '13.5', '7.9', '20.7']
1.3 가장 더웠던 날은 언제
1.3.1 문제 해결 방법 구상
- 전체 데이터 읽어 들임
- 순차적으로 데이터(행)를 읽어서 최고 기온 확인
- 최고 기온이 가장 높았던 날짜 해당 기온 데이터 저장
- 최종 저장된 날짜와 최고 기온 값 출력
1.3.2 코드
import csv
f = open('부산.csv', encoding='cp949')
data = csv.reader(f)
header = next(data) # header 제거
max_temp = -999
max_data = ''
for row in data:
if row[-1] == '': #최고 기온 정보는 행(리스트)의 맨 마지막 요소. 누락되었다면
row[-1] = -1000 # 존재 할 수 없는 최고 기온.
else:
row[-1] = float(row[-1]) # 문자열 형으로 표현된 최고 기온을 숫자형 데이터로 변환하여 저장
if max_temp < row[-1]:
max_temp = row[-1]
max_date = row[0]
f.close()
print("기상 관측 이래 부산의 최고 기온이 가장 높았던 날은 " + max_date +"일이며 "+ str(max_temp) +"도였습니다.")
기상 관측 이래 부산의 최고 기온이 가장 높았던 날은 2018-08-01일이며 39.6도였습니다.
'빅데이터 분석가 양성과정 > Python' 카테고리의 다른 글
대중교통 데이터 (0) | 2024.07.10 |
---|---|
인구 공공 데이터 (시각화) (0) | 2024.07.10 |
'한국인의 삶 파악하기' 분석 (0) | 2024.07.10 |
데이터 가공하기 (0) | 2024.07.10 |
외부 데이터 활용 (0) | 2024.07.10 |