본문 바로가기

DATA STUDY/모두의 데이터분석 with 파이썬

둘째 마당 - 내 생일 기온 그래프 그리기(인코딩) UNIT 05

익숙해질때까지 데이터 불러오는 것을 반복해서 연습하겠습니다.

 

import csv
f = open('seoul.csv')
data = csv.reader(f)

for row in data:
	print(row)

 

우선 csv 모듈을 import 하여 csv 파일을 읽을 수 있게 합니다.

 

혹시나 저처럼 헷갈리실 분이 있을까봐 미리 적어두는데 csv 모듈을 사용하는 것이 csv 파일을 사용하기 위한 유일한 길은 아닙니다.

 

Pandas의 read_csv 함수를 이용해서 DataFrame으로도 불러올 수 있습니다.

 

단지, csv 모듈이 파이썬 표준 라이브러리에 속해 있기 때문에 대표적으로 사용되고 있습니다.

 

다시 코드로 돌아오면 for문을 통해서 data 파일에 있는 내용을 한 줄씩 출력할 수 있게 됐습니다.

 

여기서 한 가지 더 말씀드리면 맥 혹은 리눅스 운영체제를 사용하시는 분은 encoding = 'cp949'를 반드시 추가해주셔야 합니다. f = open('seoul.csv', encdoing = 'cp949')

 

studyforus.tistory.com/167

 

한글 인코딩 종류 및 문제점 파악하기 (UTF-8 vs. EUC-KR)

인코딩 방식 이해하기 한글 인코딩 종류 윈도우를 기본 운영체제로 사용하였을 때는 전혀 느끼지 못했던 인코딩 방식이 웹서버를 운영하면서 인코딩 표준을 따라가다 보니 여러 문제점이 생겼

studyforus.tistory.com

인코딩에 대해 좀더 알아보고 싶은 분들은 한번 확인해보시면 좋을 것 같습니다.

 

import csv
f = open('seoul.csv')
data = csv.reader(f)
next(data) # 헤더 부분 제외시키고
result = [] # result라는 리스트를 생성합니다.

for row in data:
	if row[-1] != '': # 만약 데이터의 마지막 요소가 비어있지 않다면
    	result.append(float(row[-1])) # 마지막 부분을 float(실수)화 해서 result 리스트에 추가

 

이제 각 날짜별 최고 기온을 한 리스트 안에 담았습니다.

 

시각화를 통해 비교해볼까요?

데이터 시각화하기

 

import csv
import matplotlib.pyplot as plt
(위와 동일)
plt.plot(result, 'r')
plt.show()

 

matplotlib의 pyplot을 가져와 꺾은선 그래프로 그려봤습니다.

 

그래프 크기를 조절하고 싶다면 plt.figure() 함수를 이용하면 됩니다.

 

plt.figure(figsize = (10, 2))

 

가로 10인치, 세로 2인치로 설정해봤습니다.

 

기온 데이터는 추출해봤으니 날짜 데이터를 추출해보겠습니다.

날짜 데이터 추출하기

split()을 통해 문자열을 분리해보겠습니다.

 

date = '1907-10-01'
print(date.split('-'))

 

split 뒤에 있는 ()에 아무것도 넣지 않으면 '공백'을 기준으로 분리합니다.

 

여기서는 date라는 문자열을 짝대기(-)를 기준으로 분리하여 리스트를 출력했습니다. 혹시 문자열에 다른 기준(@#$$%% 등등)이 있으면 () 안에 그걸 넣으면 되겠죠?

 

결과값은 ['1907', '10', '01'] 입니다.

 

print(date.split('-')[0])

 

프린트를 하면 '1997'이 나오겠죠?

 

for row in data:
    if row[-1] != '': 
    	if row[0].split('-')[1] == '08':
        	result.append(float(row[-1]))
            
plt.plot(result, 'hotpink')
plt.show()	

 

약간 복잡해 보이는데 3번째 줄에 있는 if부터 보겠습니다.

 

데이터를 한 줄씩 뽑았을때 0번째 인덱스, 즉 날짜 부분을 '-'를 기준으로 분리해주세요.

 

분리했을때 1번째 인덱스인 '월(month)'이 8월이라면 최고기온 값을 실수화하여 result 리스트에 추가해주세요

 

plot하는데 그래프 색상은 hotpink로 해주세요

 

한 줄씩 나눠보니 훨씬 편하죠?

 

codetorial.net/matplotlib/set_color.html

 

Matplotlib 색상 지정하기 - Codetorial

1) 포맷 문자열 사용하기 plot() 함수에 아래와 같이 입력하면 각각 파란색, 녹색, 빨간색 선의 그래프가 그려집니다. 예제 import matplotlib.pyplot as plt plt.plot([1, 2, 3, 4], [2.0, 2.5, 3.3, 4.5], 'r') plt.plot([1, 2

codetorial.net

더 많은 그래프 색상은 링크에서 확인해주세요!!

 

추가적으로 하다보면 한글 폰트가 깨지거나 특정 부호가 깨지거나 하는 일이 있는데 그럴때마다 구글링을 통해서 알아가는 것을 추천드립니다!!