[데이터 분석] 기온 변화 그래프 그리기 / 기온 데이터 다양하게 시각화하기

2024. 1. 29. 21:13·데이터 분석

- 데이터 리스트에 저장하기

import csv
f = open('jinju.csv', 'r', encoding='cp949')
data = csv.reader(f)
header = next(data)
result=[]

for row in data:
  if row[-1]!='':
    result.append(float(row[-1]))
print(result)
[3.0, 7.9, 8.5, 7.0, 6.3, 9.3, 11.9, 14.6, 14.9, ...]

 

 

- 데이터 시각화하기

import csv
import matplotlib.pyplot as plt
f = open('jinju.csv', 'r', encoding='cp949')
data = csv.reader(f)
header = next(data)
result=[]

for row in data:
  if row[-1]!='':
    result.append(float(row[-1]))

plt.plot(result, 'r')
plt.show()

+) 그래프 크기 조절하기

plt.figure(figsize = (10, 2)) #가로로 10인치, 세로로 2인치로 설정

 

- 날짜 데이터 추출하기

import csv
import matplotlib.pyplot as plt
f = open('jinju.csv', 'r', encoding='cp949')
data = csv.reader(f)
header = next(data)
result=[]

for row in data:
  if row[-1]!='':
    if row[0].split('-')[1] =='08': #8월에 해당하는 값이라면
      result.append(float(row[-1]))

plt.plot(result, 'r')
plt.show()

 

 1983년 이후 1월 29일의 최고 기온과 최저 기온 데이터 출력하기

import csv
import matplotlib.pyplot as plt
f = open('jinju.csv', 'r', encoding='cp949')
data = csv.reader(f)
next(data)
high=[]
low=[]

for row in data:
  if row[-1]!='' and row[-2]!='':
    if 1983 <= int(row[0].split('-')[0]):
      if row[0].split('-')[1] =='01' and row[0].split('-')[2] =='29': 
        high.append(float(row[-1]))
        low.append(float(row[-2]))
plt.plot(high, 'r')
plt.plot(low, 'b')
plt.show()

 

오늘 날짜의 기온 변화를 그래프로 그리기

import csv
import matplotlib.pyplot as plt
f = open('jinju.csv', 'r', encoding='cp949')
data = csv.reader(f)
next(data)
high=[]
low=[]

for row in data:
  if row[-1]!='' and row[-2]!='':
    if 1983 <= int(row[0].split('-')[0]):
      if row[0].split('-')[1] =='02' and row[0].split('-')[2] =='14': 
        high.append(float(row[-1]))
        low.append(float(row[-2]))

plt.rc('font', family='NanumBarunGothic')        
plt.rcParams['axes.unicode_minus'] = False
plt.title('1월 29일의 기온 변화 그래프')
plt.plot(high, 'r')
plt.plot(low, 'b')
plt.show()


기온 데이터 다양하게 시각화하기

 

히스토그램

- hist() 함수 : 데이터로 히스토그램을 그릴 수 있음

import matplotlib.pyplot as plt
plt.hist([1,1,2,3,4,5,6,6,7,8,10])
plt.show()


-  주사위 시뮬레이션

5개의 숫자가 저장된 dice 리스트를 히스토그램으로 표현

bins 옵션: 가로축의 구간 개수를 설정하는 속성

import matplotlib.pyplot as plt
import random
dice=[]

for i in range(5):
  dice.append(random.randint(1, 6))

plt.hist(dice, bins=6)
plt.show()


기온 데이터를 히스토그램으로 표현하기

import csv
import matplotlib.pyplot as plt

f = open('jinju.csv', encoding='cp949')
data = csv.reader(f)
next(data)
result=[]

for row in data:
  if row[-1] != '':
    result.append(float(row[-1]))

plt.hist(result, bins=100, color='r')
plt.show()


기온 데이터를 상자 그림으로 표현하기

상자 그림: 가공하지 않은 자료를 그대로 이용하는 것이 아닌, 자료에서 얻어낸 최댓값, 최솟값, 상위 1/4, 2/4, 3/4에 위치한 값을 보여주는 그래프

 

boxplot(): 상자 그림으로 데이터를 표현

 

import matplotlib.pyplot as plt
import random
result=[]
for i in range(13):
  result.append(random.randint(1, 1000))
print(sorted(result))

plt.boxplot(result)
plt.show()

 

실행 결과

[88, 199, 210, 229, 302, 328, 360, 439, 496, 624, 669, 728, 797]

 

1월과 8월의 상자 그림

import csv
f = open('jinju_1.csv','r', encoding='cp949')
data = csv.reader(f)
next(data)
aug = []
jan = []

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

import matplotlib.pyplot as plt
plt.boxplot(aug)
plt.boxplot(jan)
plt.show()


최고 기온 데이터를 월별로 구분하여 표현하기

 

1. 데이터를 월별로 분류해 저장한다.

2. 월별 데이터를 상자 그림으로 그린다.

import matplotlib.pyplot as plt
import csv
 
f = open('jinju_1.csv')
data = csv.reader(f)
next(data)
 
# 월별 데이터를 저장할 리스트 month 생성(12개)
month = [[],[],[],[],[],[],[],[],[],[],[],[]]
 
for row in data :
    if row[-1] != '' :
        # 월과 같은 번호의 인덱스에 월별 데이터 저장(예:1월→month[0] )
        month[int(row[0].split('-')[1])-1].append(float(row[-1]))

plt.boxplot(month)
plt.show()


8월 일별 기온 데이터를 상자 그림으로 표현하기

import matplotlib.pyplot as plt
import csv
 
f = open('jinju_1.csv')
data = csv.reader(f)
next(data)

day = []                # ➊ 일별 데이터를 저장할 리스트 day 생성
for i in range(31) :
    day.append([])      # ➋ day 리스트 내 31개 리스트 생성

for row in data :
    if row[-1] != '' :
        if row[0].split('-')[1] == '08':    # 8월이라면
           # 최고 기온 값 저장
           day[int(row[0].split('-')[2])-1].append(float(row[-1]))

plt.style.use('ggplot')   # ➌ 그래프 스타일 지정
plt.figure(figsize=(10,5), dpi=300)  # ➍ 그래프 크기 수정
plt.boxplot(day, showfliers=False)   # ➎ 아웃라이어 값 생략
 
plt.show()

 

plt.style.use('ggplot') : 그래프의 스타일을 지정

 

plt.boxplot(day, showfliers=False) / showfliers = False : 이상치 값이 보이지 않게 설정함

 

 

참고서적

모두의 데이터 분석 with 파이썬

 

 

'데이터 분석' 카테고리의 다른 글

[데이터 분석] 다양한 형태로 시각화하기 (막대 그래프, 항아리 그래프)  (0) 2024.01.31
[데이터 분석] 우리 동네 인구 구조 시각화하기  (2) 2024.01.29
[데이터 분석] A열의 한글이 깨져 보일 때 해결 방법  (1) 2024.01.29
[데이터 분석] 데이터 시각화 - 그래프 그리기, 옵션 추가하기  (1) 2024.01.28
[데이터 분석] 데이터 분석 기초 개념  (1) 2024.01.28
'데이터 분석' 카테고리의 다른 글
  • [데이터 분석] 우리 동네 인구 구조 시각화하기
  • [데이터 분석] A열의 한글이 깨져 보일 때 해결 방법
  • [데이터 분석] 데이터 시각화 - 그래프 그리기, 옵션 추가하기
  • [데이터 분석] 데이터 분석 기초 개념
seulll
seulll
개인 공부 / 정리 블로그입니다
  • seulll
    seulll
    seulll
  • 전체
    오늘
    어제
    • 분류 전체보기 (328) N
      • 코딩테스트 (224)
        • programmers (python) (156)
        • 백준 (python) (66)
      • 자료구조 | 알고리즘 (14)
      • 개발 | 프로젝트 (40) N
        • Python (4)
        • Java | Spring (7)
        • Android (4) N
        • Unity (3)
        • API (4) N
      • CS (15)
        • Network (5)
        • SQL (2)
        • OS (4)
      • 데이터 분석 (14)
      • 기타 (12)
  • 블로그 메뉴

    • 홈
    • 태그
    • 글쓰기
    • 설정
  • 링크

    • GitHub
  • 인기 글

  • 태그

    야근 지수
    티스토리챌린지
    백엔드 개발자
    그리디 알고리즘
    2 x n 타일링
    대입 표현식
    API
    confusion matrix
    Boxplot
    박스플롯
    카카오맵 api
    데이터분석
    오차행렬
    웹크롤링
    카카오맵
    asterisk
    백엔드 개발자 역량
    백엔드
    오블완
    프렌즈4블록
    solving environment
    모델 성능 평가
    코딩테스트
    train_test_split
    바다코끼리
    kakao map api
    파이썬
    프로그래머스
    Greedy
    Python
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
seulll
[데이터 분석] 기온 변화 그래프 그리기 / 기온 데이터 다양하게 시각화하기
상단으로

티스토리툴바