package - seaboarn 본문
++++++++++++++++++++++++++++++++++++++++++++ 문자 대응 코드 ++
import matplotlib.pyplot as plt
from matplotlib import rc # 한글깨짐 및 마이너스 기호 표시하기 위해
import seaborn as sns
plt.rcParams["axes.unicode_minus"] = False
rc("font",family="Arial Unicode MS")
get_ipython().run_line_magic("matplotlib", "inline")
++++++++++++++++++++++++++++++++++++++++++++ 문자 대응 코드 ++
** seaborn은 import 하는 것만으로도 matplotlib에 효과를 준다
** 기본 실습 ( 여러개를 그릴 때도 x,y,x1,y1,x2,y2 ... 이런식으로 지정 )
** 박스 플롯
sns.boxplot(x=data["column_name"])
sns.boxplot(x="column1", y="dependent variable", data=data,
hue = "smoker",
palette="Set3", # 많은 색상표에서 원하는 색을 검색해볼 것
)
(좌) : 전체 요금에 대한 상자수염 그림 (우) : x축(요일)별 y축 요금에 대한 상자수염 그림
왜 요일이 4개 밖에 안보이지? > 바로 데이터의 범주형 변수 확인
좌) hue = 구분할 (명목x) 범주형 변수를 설정한 후의 박스 플롯 우) 스웜프 플롯
** 스웜 플롯
sns.swarmplot(x="col1", y="dep vari", data=data, # 박스 플롯에 점을 찍어 iqr구간의 분포도를 알 수 있다
color=".25",
)
** 박스 플롯에 데이터 분포도 표시
* 박스 플롯과 스웜 플롯을 같이 그린다
** 회귀선
sns.lmplot(x="",y="",data=data,
hue= "smoker",
size=7,
ci=None, # 넓게 펴진 영역을 꺼버려라
robust = True, # 로버스트한 기준을 적용하여 시각화 한다. 이상치 있을때 바로 직관적으로 확인하기 좋음
order = n, # 데이터 셋의 차수에 맞게 적용하는 옵션
scatter_kws={"s" : 80} # 데이터 포인트의 크기 조절 옵션
)
* size 옵션이 height 옵션으로 바뀜, figsize=(,)과 동일한 역할
** hue = "시각화 기준 변수"로 그래프의 포인트들을 구분한 모습
** 히트맵
sns.heatmap(data,annot=True, fmt="d",cmap="") # annot는 annotation으로 히트맵 안의 값 , 컬러맵으로 컬러 코드 적용 가능
^%^ 주의 : 히트맵 그릴때 데이터는 피벗 테이블형으로 넣어준다!
annot : 히트맵에 수치를 표현할 것인가?
fmt : format, "f" or "d" 실수형 정수형 옵션
좌 <-> 우)는 annot 옵션 유무에 대한 차이
컬러 브루어 색상코드, 위의 블로그에 컬러셋 이나 팔레트 설명도 잘 나와있다.
** 페어플롯
sns.pairplot(data, hue="variable") # 변수 별 상관관계를 표시할 수 있음 , hue 옵션으로 변수별로 색 구분 가능, x와 y 다수 지정 가능
plt.show()
> x_vars와 y_vars= ["var1","var2"..]로 원하는 변수들의 페어플롯 출력
** 부가 옵션
sns.set_style("white") # 배경 색 (스타일)
sns.despine(offset=10) = 오프셋 옵션은 눈금 단위와 그림간의 여백
** 시각화 작업에서 유의할 점 , anscombe's quartet , 안스콤비의 4중주
> 안스콤비의 4중주라고 검색해도 결과가 많이 없어서 대충 번역하면,
> 거의 동일한 기술 통계 정보(descriptive statistics)를 가지고 있지만, 시각화 했을 경우 굉장히 다른 분포가 보이는 4개의 데이터 셋을 말한다.
> 4개의 데이터 셋이 독립/종속 변수의 평균과 분산, x와 Y의 상관계수, 선형회귀선(함수), 결정계수 값들이 매우 엄청 유사한 경우.
> 각 데이터 셋은 11개의 x,y 값의 점으로 구성되어 있다.
> 1973년 프랜시스 안스콤비라는 통계학자가 등장시킨 데이터 셋.
> 수치적 계산은 정확히지만, 그래프는 굉장히 러프하다....라고 말하기 위해서라고.
> 눈으로 속지 말자는 뜻인것 같다.
여담으로 이 사람이 어떻게 데이터 셋을 만들었는지는 알려져 있지 않은데, 발표 이후 이 자료를 토대로 만들어 보기도 한다고 한다.
실제 데이터 셋을 확인해보니 index, level, x,y로 범주별로 11개의 데이터로 이루어져 있고 ( 일치 ). 마지막 값이 위에 밝혀진 값과 같다
* ci, scatter_kws={"s"=50} , order, robust 등 여러 메쏘드를 건드려본다.
> robust 하게 그래프를 그려서 이상치의 영향을 조금 줄인 모습
* 마지막 범주에서는 시각화가 제대로 안되었는데, 그 이유를 좀 찾아봐야 할 것 같다.