CCTV 2편 요약
- 그래프를 그릴 수 있는 능력 [Matplotlib]
- 전체적인 경향을 파악할 수 있는 능력 [Regression using Numpy]
- 그 경향에서 벗어난 데이터를 강조하는 능력 [Insight and Visualization]
파이썬의 대표 시각화 도구
matplotlib
실행
import matplotlib.pyplot as plt
from matplotlib import rc
한글설정
rc("font", family="Malgun Gothic")
%matplotlib inline
또는
get_ipython().run_line_magic("matplotlib","inline")
plt.rcParmas["axes.unicode_minus"] = False
★★ 그래프에서 마이너스로 깨짐현상 잡기
matplotlib 그래프 기본형태
plt.figure(figsize=(10,6)) plt.plot(x,y) plt.show()
figure는 그래프를 그리기 위한 도화지
figsize 도화지 사이즈
plt.plot(X축,Y축)
그릴 표 데이터 X축, Y축
삼각함수 그리기
- np.arange(a,b,s) : a부터 b까지 s의 간격으로 만듦
- np.sin(value)
**import numpy as np**
t = np.arange(0, 12, 0.01)
y = np.sin(t)
plt.figure(figsize=(10,6))
plt.plot(t, np.sin(t))
plt.plot(t, np.cos(t))
plt.show()
- 격자무늬 추가
plt.grid(True)
격자무늬 생성plt.grid(False)
격자무늬 없앰
- 그래프 제목 추가
plt.title("Example of sinwave")
- x축,y축 제목 추가
plt.xlabel("time")
plt.ylabel("Amlitude")
- 주황색, 파랑색 선 데이터 의미구분
plt.legend(labels=["sin","cos"])
또는
plt.plot(t, np.sin(t), label="sin")
plt.plot(t, np.cos(t), label="cos")
plt.legend()
덤)
라벨 위치 바꾸기
plt.legend(loc="upper left")위치 : upper left/ upper right/ lower left / lower right
위 4가지 추가하여 완성한 그래프
t = [0,1,2,3,4,5,6] t = list(range(0,7)) y = [1,4,5,8,9,5,3] plt.figure(figsize=(10,6)) plt.plot( t, y, color="green", linestyle="--", # - 실선 -- 점선 marker= "o", # ^, s,d ... markerfacecolor="blue", markersize=15, ) plt.xlim([ -0.5, 6.5]) plt.ylim([ 0.5, 9.5]) plt.show()
plt.Xlim 과 plt.Ylim은 데이터 크기에 맞춰 도화지 사이즈 좀 조정한 코드.
t = np.array(range(0,10)) y = np.array([9,8,7,9,8,3,2,4,3,4]) colormap = t def drawGraph(): plt.figure(figsize=(15,6)) plt.scatter(t,y, s=100, c=colormap, marker=">") plt.colorbar() plt.show() drawGraph()
data_result.head()
data_result["인구수"].plot(kind="bar",figsize=(10,10))
세로 막대기
data_result["인구수"].plot(kind="barh",figsize=(10,10))
가로 막대기
data_result["소계"].plot(kind="barh", grid=True, figsize=(10,10))
데이터 정렬
data_result["소계"].sort_values().plot(kind="barh", grid=True, figsize=(10,10))
plot 안에 표 데이터 정보를 추가
title="제목"
def drawGraph(): plt.figure(figsize=(14,10)) plt.scatter(data_result["인구수"], data_result["소계"], s = 50) plt.xlabel("인구수") plt.ylabel("CCTV") plt.grid(True) plt.show() drawGraph()
- np.polyfit(): 직선을 구성하기 위한 계수를 계산
- np.poly1d() : polyfit으로 찾은 계수로 파이썬에서 사용할 수 있는 함수로 만들어주는 기능
import numpy as np fp1 = np.polyfit(data_result["인구수"], data_result["소계"], 1) fp1 f1 = np.poly1d(fp1) f1 f1(400000)
fx = np.linspace(100000,700000,100)
fx
- 경향선을 그리기 위한 x 데이터 생성
- np.linspace(a,b,n) : a부터 b까지 n개의 등간격 데이터 생성
그 경향에서 벗어난 데이터를 강조하는 능력
Insight and vIsualization
경향선과 실제값 같으면 오차율 0
그 외에는 오차값,오차가 벗어난 데이터 = 경향에서 벗어난 데이터
그걸 찾자오차 = 실제값 - 예측값
내림차, 오름차로 정리
내림차 - 오차가 가장 많은 것부터 순으로
재밌지만 강사님 말씀처럼 배울 양은 방대하고 시간은 없고,
그렇기에 효율있게 가벼운 이론과 실습위주로 가서 어버버 하고있다.
시간 부족하단 얘길 달고 살 줄이야.. 현재로썬 계속 친숙해지는 수 밖에!