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

seaborn 활용해 그래프 그리기

by ADELA_J 2023. 6. 19.

- seaborn 활용하면 더 화려한 그래프를 그릴 수 있음.

(이거 자체가 matplotlib 라이브러리를 기반으로 만든거)

 

1. 히스토그램

>> 넘 많아서..ㅎ.. 

 

2. 막대 그래프 

    *** count 그래프 : 이산값을 나타낸 그래프.  x축 변수의 개수를 표시하는,

             y축은 변수의 개수를 표시하기 때문에 x 축에 설정할 변수만 지정함.

           정량적인 데이터보다는 카테고리컬한(범주형) 데이터가 좀 더 알맞음

 

  - countplot 메서드에 tips 데이터프레임의  day열 데이터를 넣어 그림

  - countplot 메서드 자세히 알아보기 > https://steadiness-193.tistory.com/192

https://seaborn.pydata.org/generated/seaborn.countplot.html?highlight=countplot 

2-1. barplot(x,y hue, orient=막대방향(vertical, horizontal), ci = 신뢰구간(기본95) False하면 없어짐, data=)

2명은 큰 차이가 없는데 5명일때 팁의 적은값과 큰값이 매우 크게 차이가 난다.

(바그래프 위에 줄 그려져있는게 신뢰구간)

 

 

3. 산점도 그래프 그리기 : regplot 메서드 사용 ( 산점도 + 회귀선 함께 그릴 수 있음)

 - 회귀선 제거하려면 fit_reg = False

 - 회귀선 : 개별 데이터 분포를 대표할 수 있는 하나의 선인 회귀선(regression)을 표시

- 회귀선 주변의 연한 영역은 회귀선의 신뢰구간을 의미  

   > 기존에 데이터 분포가 회귀선을 기준으로 얼마나 퍼져 있는지 확인하는데 도움됨

     (scatter = Flase) 하면 회귀선만 남음

중심선에(약15~20사이) 값들이 모여있고 (일정한 팁이 왔다는 예측가능)

total_bill이 커질수록 tip과의 상관관계가 퍼져있다(예측하기 어렵다)

 

만약 신뢰구간을 없애려면 ci = None

이건 scatter=False, ci=None 한거

 

4. jointplot : 산점도 + 히스토그램 그래프 같이 그려주는 메서드

x, y에 원하는 열이름 지정  / data에 데이터프레임 지정

▲ 점이 겹쳐보일 경우 구분하기 어려울 수 있음. 구분 쉽게하려면 주로 육각 그래프(hexbin)을 사용하면됨

- 육각그래프 : 2차원 표면에 육각형으로 데이터를 쌓아 표현하는거, 갯수 많아 지면 진해짐

- kind 인자값 hex로 지정하면됨. 

5. kdeplot : 이차원 밀집도 그리기 shade 인잣값을 True 하면 음영 효과를 줄 수 있음. 히스토그램보다 부드러운 형태의 분포 곡선으로 보여주는 그래프..!

엉엉 돌아버리겠네 AttributeError: PolyCollection.set() got an unexpected keyword argument 

이거 에러 잡는다 내가 ㅠㅠㅠㅠㅠㅠ

108행을 data, data2  로 안하고 x , y 로 잡아서 하니까 이렇게 나오긴하는데..! 맞는건가,,,?

-이차원 밀집도 kdeplot은 위에서 했던 jointplot에서도 구할 수 있는데.......

kind 를 kde로 바꿔주면 ㄱㄴ

ValueError: `kind` must be one of ['scatter', 'hist', 'hex', 'kde', 'reg', 'resid']

참고로 바꿔줄 수 있는 그래프 형태 목록.

 

 

 

6. 바 그래프 : 지정한 변수의 평균을 계산하여 그릴 수 있음.

7. 박스 그래프. 최솟값, 1분위수, 중간값, 3분위수, 최댓값, 이상치 등 다양한 통계량을 한 번에 표현하는 그래프

(위나 아래로 쏠려있다면 데이터가) 중앙값은 중간에 없을 수도 있다.

출처 : https://hsm-edu.tistory.com/1542

=> https://hsm-edu.tistory.com/1542 여기 좀 더 자세히 읽어봐야지.

 

▶ 그래프로 그려보았을때 이렇다. 

▷ sns.boxplot(x,y, hue=색상, orient=막대방향(vertical or horizontal), data)

▶ 데이터가 위쪽으로 쏠려있으면 중앙선이 위쪽으로 가 있고, 아래쪽에 쏠려있으면 아래 쪽으로 가 있고. 그리고 수치를 길이로 표현함. 박스가 신뢰구간 / 그 외에 줄 그어져 있는 부분은 특이한 부분이라는 것

 >> 다양한 통계 수치를 확인하기 위해 자주 사용되지만 분산이 모호하게 표현됨. 

 >>  박스플롯은 데이터 분포의 중앙값을 파악하기 쉽고, 바이올린 플룻은 최대/최소값을 확인하기 쉽다.

  >>>> 그럴 때는 커널 밀도를 추정한 바이올린 그래프를 사용하면 됨.(뭔소리지)

▲ 바로 위 그래프의 형태를 바이올린 형태로 바꾸면 바이올린 그래프라고 함. violinplot 메서드 사용

더 자세히는 여기 ▶ https://dev-adela.tistory.com/98

8. 관계 그래프 : 이제까지 설명한 그래프를 종합한 그래프. pairplot 메서드에 데이터프레임을 넣는 방법으로 가능

> 아무런 옵션 없이 넣었을때

▲ 대각선을 중심으로 절반과 절반이 같기 때문에 중복된 그래프가 그려지는 위치를 직접 지정해 그래프를 교체가능

대각선 위쪽에는 map_upper

대각선 아래쪽에는 map_lower

대각선 중심으로는 map_diag