'matplotlib 라이브러리'
파이썬으로 데이터를 시각화할 때 가장 많이 사용하는 라이브러리
2D 형태의 그래프, 이미지 등을 그릴 때 사용
matplotlib
^ 데이터만 있으면 코드보고 쉽게 차트 그릴 수 있음.
방법:
1. colab 오픈
2. pyplot 모듈을 'plt' 별명으로 부르기(as,alias)
1-1. y값만 주어졌을 때
1-2. x,y값 주어졌을 때
1-3. 형태 바꾸기
1-4. 타이틀 넣어주기
2-1. 여러개 plot 그리기
2-2. 각 선의 범례
2-3. 범례 위치 변경
plt.legend() 혹은 plt.legend(loc=0)이 기본값
^위의 그래프는 loc=6 의 위치에 위치해있다.
3-1. 그래프 색 변경
color 혹은 c로 입력 가능
3-2. 기본색 5가지는 약자 사용
1) r, g, b, k, y 2) 사실상 color='r' 이렇게 공식적으로 안쓰고 'r' 이렇게만 써도 입력됨.
4-1. 선모양 변경
linestyle ex) -- , : , 등
4-2. 마커 사용**
**수식 섞어쓸 때 오류나는데 각각 써주고 싶으면 각각 입력해주면 됨.
5-1) 데이터 준비시키고 데이터 확인 작업
5-2) 데이터 개수 확인
5-3) 최고 기온 데이터 빨간색으로 시각화
5-4) 그래프 크기 및 해상도 조절
5-5) 그래프 기간 설정 (날짜)**
format을 기준으로 "datetime 형변환". 1) 2022-08-01 %Y-%m-%d 2) 2022/08/01 %Y/%m/%d
cf) format datetime
방법1)
방법2)
^ 그래프 중간에 데이터가 없는 부분, 결측지 (6.25전쟁 때 데이터 없음)
^ dot형태로 변경 (r.)
5-6) 날짜 데이터 추출하기
split한 전체 리스트
8월 데이터 추출
5-7) 특정 월, 일 데이터들 년도별로 뽑기
2002년의 8월 데이터
^위의 코드 잘 안보이면 아래꺼 확대본
2월 14일의 최고기온 데이터 (년도별로)
^위의 코드 입력하면 아래와 같은 결과 도출
if row[0].split('-')[1] == '02' and row[0].split('-')[2] =='14': 해석) 아래 파일의 Notepad++를 봐야함. row[0] = 날짜 / split[1] = 월 / row[0] = 날짜 / split[2] = 일
5-8) 특정 데이터들 여러 기준으로 뽑기
스스로 해보기 ..^^**
문제: 서울의 기온 데이터에서 내 생일 기준으로 최저 기온, 평균 기온, 최고 기온을 하나의 차트(그래프)로 시각화하기.
(1) 아래 코드와 그래프는 02월 14일 년도별 최고.최저.평균 기온을 나타냄.
^위의 코드 입력하면 아래와 같은 그래프 도출
(2) 10월 4일 w/ prof.
5-9) 특정 날짜(기간) 이후로만 데이터 도출하기
^위의 코드 입력했을 때 아래와 같은 값 도출
5-10) 한국어 글꼴 설정하기
^위의 코드 복붙해서 새로 넣어줘.(글꼴 NanumBarunGothic)
^ 위에서 설정한 한국어 1) 글꼴 설정해주고 2) 제목입력 3) 마이너스 기호깨짐 방지 해주기
^위의 두 코드 입력해주면 이 그래프 도출 가능
(1) 사용자가 년도 설정하여 그래프 보여주기
(2) (미완성) start_year 와 end_year 사용자가 설정하기
^미완성된 이유: 사용자가 년도 설정된 것과 그래프가 보여주는 년도가 다름 그래서 month와 date를 없애줌. year 기준이니까 year만 남겨줌.
(2-1) start_year와 end_year 완성
^ 위와 같이 사용자가 년도 입력하게 할 수 있음
흠.... 사용자가 몇 년도부터 몇 년도까지 설정할 수 있는지 알 수 있도록
표시해주는 방법...도 궁금한데 내 머릿속이 과부화가 올 것 같다... ㅎㅎ
책 모두의 데이터 분석 파이썬 77p
hist() 함수.
빈도수에 따라 차트 그리기.
cf) p.82 주사위 1,000,000 시행하면 1-6 주사위 번호 나올 확률이 거의 비슷해짐.
^ 먼저
1)한글깨짐 방지 코드 복붙해주고
2)실행시키고
3)런타임 다시 시작 및 모두 실행
import matplotlib as mpl
import matplotlib.pyplot as plt
%config InlineBackend.figure_format = 'retina'
!apt -qq -y install fonts-nanum
import matplotlib.font_manager as fm
fontpath = '/usr/share/fonts/truetype/nanum/NanumBarunGothic.ttf'
font = fm.FontProperties(fname=fontpath, size=9)
plt.rc('font', family='NanumBarunGothic')
mpl.font_manager._rebuild()
(6-1-1)
+ bins
(6-1-2) 8월달 히스토그램
(6-1-3)
(6-1-4)
(6-1-5) 1월, 6월, 8월달 히스토그램
(6-1-6)
수치형 데이터의 유효성 확인할 때 사용
6-2-1) 1월과 8월 boxplot
6-2-2) 1월과 8월달 boxplot list로 묶어줌
aug와 jan의 boxplot을 []로 묶어써줌
6-2-3) 1월부터 12월까지 최고 기온 데이터 상자 그림으로 표현
1) 12달 온도를 담을 수 있는 변수(리스트에 리스트를 담자)
month=[[0],[1],[2],...,[11]]
첫번째: [0]안에 month[0].append('01')
두번째: [1]안에 month[1].append
.
.
.
month 데이터 상자 그림
+(1) 아래 사진은 위의 코드를 1월, 9월로 예를 든 추가 설명
1) split 잘라 문자형 -> 숫자로 int()형변환시켜준거다. 2) -1을 해준 이유는 컴퓨터 언어는 0시작이니 숫자로 된 거에서 빼준다(?)
+(2) 코드 추가 설명
^ 위의 사진에 대한 설명: 검은색인 <month ....> 와 아래 초록색 두 줄 <temp...> <month...> 똑같은 코드이다. 다른 방법으로 입력한 것일 뿐.
day 데이터 상자 그림
사용자가 몇 년도부터 몇 년도까지 설정할 수 있는지 알 수 있도록 하는 방법은
for row in data: 구문에서 날짜 데이터 수집하잖아요?
날짜 수집한 list(아마도 date_list) 에서 첫 번째 날짜(date_list[0])와 마지막 날짜(date_list[-1]를 추출해서 print문으로 표시 해 주면 되겠네요