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()