Blair  - Soul Eater [파이썬 예제] 데이터 분석 12- 가장 비가 많이 오는 월 찾기

• programming language/python

[파이썬 예제] 데이터 분석 12- 가장 비가 많이 오는 월 찾기

oujin 2022. 7. 21. 11:39
728x90

CSV예제 파일은 아래글에서 다운받아 주세요

**입력하는 코드가 있는 파일과 같은 폴더에 위치해 있어야 합니다**

 

 

[파이썬 연습문제] 데이터분석 - csv 파일로 서귀포시 1월 최저 기온 평균 구하기

● 제주, 고산, 성산, 서귀포의 네 지역에서 관 측된 자료로서, 2019년 1월 1일에서 12월 31일까지 각 지역의 일별 최저기온, 최고기온, 강수량, 상대 습도 등을 포함 ● 지점명이 서귀포이고 월이 1

oujin.tistory.com

● 제주도에서 가장 비가 많이 오는 구하는 예제 입니다.

지역이랑 상관없이 1~12월의 각 월별 강수량 합계를 구한 다음 최대 강수량을 가진 월을 구하면 됩니다.

● max() 함수 : 리스트, 튜플 등에 사용되어 최댓값을 가진 요소를 구하는 데 사용.

● 월별 강수량의 합계를 나타내는 리스트 sum_rain을 0으로 초기화

● 강수량 데이터가 누락된 경우, 즉 데이터 값이 없는 경우에는 해당 요소 line[5]에 0을 저장

관측된 데이터의 값이 없는 경우가 발생하는 경우가 종종 있습니다. 이렇게 초기화하지 않으면 float(line[5])은 float('')이 되어 NULL 문 자를 실수형으로 변환할 수 없다는 오류가 발생하게 됩니다.

●sum_rain.index() 메소드 : 리스트의 해당 요소 값을 가진 인덱스를 구하는 데 사용.

리스트의 인덱스는 0부터 시작하기 때문에 해당 인덱스에 1을 더한 값이 바로 최대 강수량을 가진 월이 된다.

 

 

 

import csv

f = open('jeju_2019.csv', 'r', encoding='utf-8')
lines = csv.reader(f)

header = next(lines)

# 월별강수량의 합을 저장하는 리스트
sum_rain = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

for line in lines:
    # 만약 강수량값이 없으면 0을 넣는 과정
    if not line[5] :             
        line[5] = 0
        
    if int(line[2][5:7]) == 1 :    # 1월 이면
        sum_rain[0] += float(line[5]) #sum_rain리스트의 0번째가 1월
    if int(line[2][5:7]) == 2 :    # 2월 이면
        sum_rain[1] += float(line[5])
    if int(line[2][5:7]) == 3 :     # 3월 이면
        sum_rain[2] += float(line[5])
    if int(line[2][5:7]) == 4 :   # 4월 이면
        sum_rain[3] += float(line[5])
    if int(line[2][5:7]) == 5 :  # 5월 이면
        sum_rain[4] += float(line[5])
    if int(line[2][5:7]) == 6 :   # 6월 이면
        sum_rain[5] += float(line[5])
    if int(line[2][5:7]) == 7 :    # 7월 이면
        sum_rain[6] += float(line[5])
    if int(line[2][5:7]) == 8 :    # 8월 이면
        sum_rain[7] += float(line[5])
    if int(line[2][5:7]) == 9 :    # 9월 이면
        sum_rain[8] += float(line[5])
    if int(line[2][5:7]) == 10 :   # 10월 이면
        sum_rain[9] += float(line[5])
    if int(line[2][5:7]) == 11 :    # 11월 이면
        sum_rain[10] += float(line[5])
    if int(line[2][5:7]) == 12 :   # 12월 이면
        sum_rain[11] += float(line[5])

# max()함수를 이용해서 최대 강수를 가진 값을 찾아 max_month_rain에 넣기
max_month_rain = max(sum_rain)
# index()함수를 이용해서 최대 강수를 가진 월을 찾아 max_month에 넣기
max_month = sum_rain.index(max_month_rain) + 1

print('(1) 최대 강수 월과 강수량 : %d월, %.1f mm\n' % (max_month, max_month_rain))
print('(2) 월별 강수량')

for i in range(1, 13) :
    print('%d월 : %.1f mm' % (i, sum_rain[i-1]))

f.close()

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

출처: 예제 중심 파이썬 입문

궁금한 부분이 있으면 댓글 부탁드립니다^^

728x90