[모두의 데이터분석 With 파이썬] Unit.05 리뷰 / 데이터에 맞는 시각화
2022.03.23 - [데이터 분석 학습] - [모두의 데이터분석 With 파이썬] Unit.01 리뷰 / CSV, 아나콘다, 크롬
2022.03.23 - [데이터 분석 학습] - [모두의 데이터분석 With 파이썬] Unit.02 리뷰 / 주피터, 코랩
2022.03.23 - [데이터 분석 학습] - [모두의 데이터분석 With 파이썬] Unit.03 리뷰 / 데이터 전처리
2022.03.23 - [데이터 분석 학습] - [모두의 데이터분석 With 파이썬] Unit.04 리뷰 / 기본 그래프 그리기
일단 지금까지 써왔던 데이터를 불러오는 것부터 시작하자
import csv
f = open('/content/drive/MyDrive/Python Study/모두의 데이터 분석 with 파이썬/seoul.csv', encoding='cp949')
data = csv.reader(f)
next(data)
result = [] #result 클래스를 빈 리스트 형태로 저장
for row in data:
if row[-1] != '' : # 최고 기온 데이터 값이 존재한다면
result.append(float(row[-1])) #result 리스트에 최고 기온 값(실수)을 추가
print(result)
결과값: [20.7, 22.0, 21.3, 22.0, 25.4, 21.3, 16.1, 14.9, 21.1, 24.1, 20......]
데이터를 불러오고 리스트형태로 저장하고 마지막행에 있는 최고 기온 데이터를 실수 형태로 변환하여 출력하는 코드이다. 방대한 자료의 양으로 인해 전체 개수가 몇개인지 알 수 없으므로 자료의 양을 세보자
print(len(result))
결과값: 39462
데이터의 길이를 세는 len()함수를 이용해 확인하니 무려 4만개 가량.....
이 많은 데이터 값은 어떤 방식으로 나타내는 것이 좋을까?
시계열(일정한 시간 간격에 따라 배치된 데이터 수열) 그래프는 일반적으로 꺽은선 그래프를 이용한다.
#최고 기온 데이터 시각화
import matplotlib.pyplot as plt
plt.plot(result, 'r') #'r'은 빨간색이라는 뜻
plt.show()
결과값:
음... 거의 낙서 같다. 그래프의 크기를 조금 조정해서 보기 좋게 만들어 주자
figure()함수의 figsize 속성 값을 변경하여 그래프의 크기를 조절해준다
figsize=(가로 길이, 세로 길이) 형식으로 크기를 설정할 수 있고 단위는 inch이다(1 inch는 2.54cm)
#그래프 크기 조절
plt.plot(result, 'r')
plt.figure(figsize=(10,2)) #가로 10인치, 세로 2인치로 설정
plt.show()
결과값:
오잉? 똑같이 보인다. 그러나 이건 코랩에서의 문제로 밑의 사이즈 값을 조절하며 figure size를 확인하면 해당 가로, 세로 사이즈가 변경된다는 것을 알 수 있다.
이제 날짜 데이터를 추출해야한다.
날짜 데이터 추출을 위해서는 split()함수를 이용한다. 이는 사용자가 설정하는 특정문자를 기준으로 문자열을 분리해준다. 분리하는 기본값은 공백이며 변경 가능하다.
#split() 함수 예시
s = 'hello python' #s에 문자열 저장
print(s.split()) #문자열 분리, 기본값은 공백!
결과값: ['1907', '10', '01']
날짜 데이터를 '-'으로 분리해보자
date='1907-10-01' #date에 날짜 저장
print(date.split('-')) #날짜 '-'로 분리
결과값: ['1907', '10', '01']
여기에 리스트의 인덱싱 기능 활용해서 날짜의 연, 월, 일을 각자 추출해보자.
인덱싱(indexing)은 저번에도 말했듯 문자열의 위치를 가지고 문자열을 추출하는 일이다. 0은 첫 번째, 1은 두 번째, 2는 세 번째 데이터 값의 위치를 불러온다
print(date.split('-')[0])
print(date.split('-')[1])
print(date.split('-')[2])
결과값: 1907 10 01
이제 split()함수로 1년 중 여름의 정점인 8월의 최고 기온만 추출해서 그래프로 그리고 핫핑크로 설정한다.
List of named colors — Matplotlib 3.5.1 documentation
Note Click here to download the full example code
matplotlib.org
import csv
f = open('/content/drive/MyDrive/Python Study/모두의 데이터 분석 with 파이썬/seoul.csv', encoding='cp949')
data = csv.reader(f)
next(data)
result = [] #result 클래스를 빈 리스트 형태로 저장
for row in data:
if row[-1] != '' :
if row[0].split('-')[1] == '08' : # 8월에 해당하는 값이라면
result.append(float(row[-1])) # result 리스트에 최고 기온 값을 추가하하고
plt.plot(result, 'hotpink') #result리스트에 저장된 값을 hotpink 색으로 그린다
plt.show()
결과값:
8월만 보니 조금 간결해지긴 했지만 조금 복잡하긴 하다.
이번에는 매년 같은 날의 기온데이터만 뽑아보자. (2월 14일)
import csv
f = open('/content/drive/MyDrive/Python Study/모두의 데이터 분석 with 파이썬/seoul.csv', encoding='cp949')
data = csv.reader(f)
next(data)
result = []
for row in data:
if row[-1] != '' :
if row[0].split('-')[1] == '02' and row[0].split('-')[2] == '14' : # 2월에 해당하는 값이면서(and) 14일에 해당하는 값이라면
result.append(float(row[-1])) # result 리스트에 최고 기온 값을 추가하하고
plt.plot(result, 'hotpink') #result리스트에 저장된 값을 hotpink 색으로 그린다
plt.show()
결과값:
갈수록 기온이 조금씩 증가하는 것을 볼 수 있다. 역시 온난화
high =[] # 최고 기온 값을 담을 리스트형 클래스 생성
low = [] # 최저 기온 값을 담을 리스트형 클래스 생성
for row in data:
if row[-1] !='' and row[-2] !='': # 최고 기온 값과 최저 기온 값이 존재한다면,
if 1983 <= int(row[0].split('-')[0]): # 1983년 이후 데이터라면
if row[0].split('-')[1] == '02' and row[0].split('-')[2] == '14': # 2월 14일이라면
high.append(float(row[-1]))
low.append(float(row[-2]))
plt.plot(high, 'hotpink')
plt.plot(low, 'skyblue')
plt.show()
결과값:
이제 깔끔하게 매년 동일 기간의 온도 데이터를 확인할 수 있다
(여기서 한글 폰트를 설치해 제목과 범례를 넣어주는 작업도 있는데 이건 패스...)