본문 바로가기
데이터분석/Matplotlib &Seaborn

seaborn으로 다변량 그래프 그리기

by ADELA_J 2023. 6. 19.

다변량 그래프 무엇인지 모르겠다? 다시 보고와라.

https://dev-adela.tistory.com/96

 

pandas / matplotlib 그래프 그리기(종류)

- seaborn 라이브러리의 tips 데이터 집합 > 어떤 식당에서 팁을 지불한 손님의 정보를 모아둔 것 1. 히스토그램 : 데이터프레임의 열 데이터 분포와 빈도를 살펴보는 용도로 자주 사용하는 그래프

dev-adela.tistory.com

 

1. 바이올린 그래프 그리기 - 색상 추가

violinplot 메서드에 hue 인잣값으로 색상에 사용할 열 이름을 추가 

와따 이쁘네 뿌듯하구만

▶ 그래프 중앙에 하얀색 점이 중앙값. 값을 길게 뽑아서 최소값, 최대값이 그려져 있다. 

 

2. 산점도, 관계 그래프 그리기 - 색상 추가 

와아아ㅏ 훨씬 보기 좋구만
와따 쏘 어메이징ㅠ

3. 산점도 그래프의 크기와 모양 조절하기

크기를 다르게 해서 그리는건 버블차트(Bubble chart)라고 한다.

>> 2차원 그래프이지만 2차원 이상의 것을 표현할 수 있음

 

scatter_kws 에 딕셔너리 형태로 인잣값 전달.  스칼라값을 넣어줘야한다는데...!

책에는 scatter_kws = {'s' : tips['size']*10} 이라고 나와있는데....... 아니자꾸 스칼렛값이나 x랑 y랑 유사한값을 주라는데..............................................

<ValueError: s must be a scalar, or float array-like with the same size as x and y  > 

이런 밸류에러..! 

그래서 하 대체 x랑 y랑 같은 사이즈의 배열이 먼데 ㅎ 대체 책에서 언급한 tips['size']에는 뭐가 있는데 ㅎ

싶어서 뽑아봤는데

음 정수인데 스칼렛 아닌가ㅎ... 근데 왜 ... x랑 y랑 같은 사이즈가 아닌가 하다가 그냥 숫자를 줘버렸다

10으로 줬더니 너무 째깐해서 100으로 줬더니 엄청 커짐

크게보고 좋구만 ㅎ

그래서 알아본 markers 와 컬러 등등 옵션들이 뭐가 있을까 분명 matplotlib처럼 있겠지 싶어 알아봤다

https://seaborn.pydata.org/tutorial/properties.html?highlight=marker 

 

Properties of Mark objects — seaborn 0.12.2 documentation

Properties of Mark objects Coordinate properties x, y, xmin, xmax, ymin, ymax Coordinate properties determine where a mark is drawn on a plot. Canonically, the x coordinate is the horizontal positon and the y coordinate is the vertical position. Some marks

seaborn.pydata.org

구래,,,  더 이쁘게 만들고 싶을때 사용하자

 

 

< 추가로 교수님과 수업시간에 한거>  

-  이런식으로 size도 넣을 수 있다. scatter_kws 랑 뭐가 다른걸까,,! 

 

5. Impolt 메서드로 4개의 데이터 그룹에 대한 그래프 한번에 그리기

fit_reg 는 회귀선의 유무를 지정..!

>>> 자 다시 기억해보자 remember............................. 앤서콤은 어쩌구블라블라 해서 4개의 데이터를 가지고 있지만 평균이나 기타 등등 뭐시깽이는 비슷하지만 그래프를 그렸을때는 각기 다르게 나오고 그러므로 통계적인 내용들이 동일하다고해도 어쩌구저쩌구 .. 자세한건 여기서 https://dev-adela.tistory.com/95

 

▼ 그래프 자세히 보면 4개의 데이터가 같이 붙어있다 어떻게 나눌까

- 바로바로 impolt 메서드에 추가로 col이랑 col_wrap 인자를 설정하면 됨.

col_wrap 에는 그릴 열의 최대값, col에는 데이터 그룹을 구분할 열을 지정함!

(col_warp 숫자 조절하면 한줄로 쭉 으로도 나오고 길게 쫙 도 나오고 한다 )

다시한번 살펴보면... 앤스콤에는 이런 데이터가 되어있다

dataset에 I 와 II , III , IV 이렇게 4개로 나누어져있다..!

그래서 dataset 을 기준으로 col을 나눈 다음에 나눠지는 분류에 따라 그래프 수가 나오기 때문에 col_wrap을 통해 적절하게 그래프 정리

anscombe_plot = sns.lmplot(x='x', y='y', data=anscombe, fit_reg=False, col='dataset', col_wrap=2)

자 맷플롯립으로 그렸던거랑 비슷한 그래프들이 나왔따 (모양만 같으면돼따) 

6. 히트맵 :

여러가지 변수를 한 번에 비교하고 싶을때, 사용하는 시각화 방법, 격자를 나누는 형태이기 때문에 x축과 y축에 설정되는 값이 실수형 데이터는 사용되지 않는다. 

▶ 일단 데이터 가공하고(피벗시킨다)

▷ 그런데 소수점과 NaN도 있어서 값 연산을 변경하고 싶다면 aggfunc 속성을 사용하면 됨.

그리고 그려본 히트맵.

그런데 NaN(결측치)는 흰색으로 나온다. 결측치를 제외하고 size가 클수록 큰값을 갖는다.

그래서 NaN을 0으로 해주고 (검정색으로나올것) 그려봄

▶ annot = True로 하게 되면 데이터의 값도 함께 나온다 (annotation 의 약자)

▷ 데이터 내용 바꿔서 다시 그릴수도 있음(그래프는 생략)

▷ 데이터를 좀 수정해서 만들어야할수도있기 때문에 다시한번 복습하자 피벗테이블

https://dev-adela.tistory.com/114