LG U+ why not SW 5/python DA _ exercise

파이썬 데이터 분석 예제 _ 서울시 날씨 데이터 간단 분석 및 시각화 / 히스토그램, 박스플롯

wangatheringdata 2025. 3. 5. 17:40

 

 

 

 

파이썬

 

 

 

 

 

1.  최고 기온 추출 및 시각화

    .hist() : 자료의 분포 상태를 막대그래프로 표현, 데이터의 빈도에 따라 그래프의 높이 결정

    . boxplot() : 데이터를 박스 형태로 표현. 최댓값, 최솟값, 상위 1/4, 2/4(중앙), 3/4에 위치한 값을 표현한 그래프

 

1-1. 최고 기온 히스토그램과 박스플롯으로 각각 시각화

import csv
import matplotlib.pyplot as plt

f = open('./data/seoul.csv', 'r', encoding='cp949')
data = csv.reader(f)
next(data)

result = []
for row in data :     
    if row[-1] != '' :    #해당 행 -1번째 열에 값이 없는('') 게 아니라면
        result.append(float(row[-1]))



plt.hist(result, bins=100, color='r')     #bins=100 : 100개의 구간으로 나눔
plt.show()



plt.boxplot(result)
plt.show()

 

 

1-2. 1월과 8월 데이터만 히스토그램과 박스플롯으로 각각 시각화

f = open('./data/seoul.csv', 'r', encoding='cp949')
data = csv.reader(f)
next(data)

jan = []
aug = []
for row in data :
    month = row[0].split('-')[1]    #해당 행 0번째 열을 -단위로 나눈 값의 1번째 값 => 월
    
    if row[-1] != '' :
        if month == '01' :    #1월 데이터만 수집
            jan.append(float(row[-1]))
            
    if row[-1] != '' :
        if month == '08' :    #8월 데이터만 수집
            aug.append(float(row[-1]))



plt.hist(jan, bins=100, color='r', label='JAN')
plt.hist(aug, bins=100, color='b', label='AUG')
plt.legend()    #label 사용 시, .legend() 입력
plt.show()



plt.boxplot(jan)
plt.boxplot(aug)
plt.show()

 

 

2. 1월과 8월 최고 기온의 이상치 박스플롯으로 파악

    이상치(outlier) : 다른 수치에 비해 이상적으로 크거나 작은 값을 표현

f = open('./data/seoul.csv', 'r', encoding='cp949')
data = csv.reader(f)
next(data)

jan = []
aug = []
for row in data :
    month = row[0].split('-')[1]
    
    if row[-1] != '' :
        if month == '01' :
            jan.append(float(row[-1]))
            
    if row[-1] != '' :
        if month == '08' :
            aug.append(float(row[-1]))



plt.boxplot([jan, aug])    #두 데이터를 한꺼번에
plt.show()

 

 

 

3. 최고 기온을 월 별로 구분해 박스플롯으로 시각화

    데이터를 월 별로 분류 저장 후, 박스프롯으로 표현

f = open('./data/seoul.csv', 'r', encoding='cp949')
data = csv.reader(f)
next(data)

months = [[], [], [], [], [], [], [], [], [], [], [], []]    #12개월
for row in data :
    if row[-1] != '' :
        months[int(row[0].split('-')[1])-1].append(float(row[-1]))
'''
months[int(row[0].split('-')[1])-1] : 
	날짜를 split해 index로 사용
	월을 추출해 int로 변환 후, -1을 적용해 index가 0부터 시작할 수 있도록 맞춰 줌
'''

plt.boxplot(months)
plt.show()