[데이터 분석] 데이터 오픈 + matplotlib 그래프 컨트롤 | dasfef

2023.04.24

개인 기록용 입니다 :) 오타, 수정 등 피드백 환영


1. 데이터 오픈
DATA : 국가기후데이터

import csv

f = open('C:\work\BigData\day01\seoul.csv', 'r', encoding = 'cp949')
data = csv.reader(f, delimiter = ',')
header = next(data)
print(header)
print("-----------------------------")
for row in data:
    print(row)

f.close() next(data) 를 통해 가장 첫 줄의 헤더부분(ex.열 이름) 건너뜀

// print(header) - next(data) 출력 결과 [‘날짜’, ‘지점’, ‘평균기온(℃)’, ‘최저기온(℃)’, ‘최고기온(℃)’]

// 반복문 내 한 줄씩 출력 결과 [‘\t1907-10-01’, ‘108’, ‘13.5’, ‘7.9’, ‘20.7’] [‘\t1907-10-02’, ‘108’, ‘16.2’, ‘7.9’, ‘22’] [‘\t1907-10-03’, ‘108’, ‘16.2’, ‘13.1’, ‘21.3’] … ​
2. matplotlib 그래프 컨트롤

1) 그래프 색 바꾸기
// 그래프   바꾸기
import matplotlib.pyplot as plt

plt.title("legend")
plt.plot([10, 20, 30, 40], color = "skyblue", label = "skyblue")
plt.plot([40, 30, 20, 10], "pink", label = "pink")
plt.legend()
plt.show()

color = 색상 옵션으로 색상을 변경할 수 있다
혹은 “pink” 등과 같이 옵션에 알맞는 색상 값을 넣어주면 해당 색상으로 색을 변경할 수 있다
color 속성에는 수많은 색상값이 있는데 이럴때 원문을 참조하면 좋다

matplotlib colors


2) 그래프 선 모양 바꾸기
// 그래프  모양 바꾸기
plt.title("linestyle")
plt.plot([10, 20, 30, 40], color="r", linestyle="--", label="dashed")
plt.plot([40, 30, 20, 10], color="g", ls=":", label="dotted")
plt.legend()
plt.show()

linestyle 속성으로 선 모양을 바꿀 수 있다 줄여서 ls 속성으로 쓸 수도 있으며 옵션 값은 아래 링크 참조
matplotlib linestyle


3) 마커모양 바꾸기
// 마커 모양 바꾸기
plt.title("marker")
plt.plot([10, 20, 30, 40], 'r.--', label = 'circle')
plt.plot([40, 30, 20, 10], 'g^:', label = 'triangle up')
plt.legend()
plt.show()

‘r.–’ / ‘g^:’ 등으로 표기된 옵션은 각각 color = red marker = . linestyle = –
color = green marker = ^ linestyle = : 를 뜻한다
matplotlib marker

example_1)

import csv

f = open('C:\work\ML\day01\seoul.csv', 'r', encoding = 'cp949')
data = csv.reader(f, delimiter = ',')
header = next(data)
result = []

for row in data :
    if row[-1] != '':
        if row[0].split('-')[1] == '02' and row[0].split('-')[2] == '14':
            result.append(float(row[-1]))
f.close()

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


example_2)

import csv

f = open('C:\work\ML\day01\seoul.csv', 'r', encoding = 'cp949')
data = csv.reader(f, delimiter = ',')
header = next(data)
result = []
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]))
f.close()
plt.rc('font', family = 'Malgun Gothic')            # 맑은고딕 폰트 사용 및 한글 사용 가능
plt.title('내 생일의 기온 변화 그래프')
plt.rcParams['axes.unicode_minus'] = False          # 마이너스 기호 깨짐 방지
plt.plot(high, 'r--')
plt.plot(low, 'b:')
plt.show()