AI Big Data/pandas

seaborn 라이브러리 사용하기

retro_blue 2020. 7. 9. 15:55
반응형

 

seaborn 라이브러리는 matplotlib 라이브러리를 기반으로 만든 라이브러리입니다
seaborn 라이브러리를 sns라는 이름으로 줄여 사용합니다


 load_dataset 메서드를 사용하여 데이터 집합을 불러올 수 있습니다.

 


- seaborn 라이브러리로 히스토그램을 그리려면 subplots, displot 메서드를 사용하면 됩니다
- subplots 메서드로 기본 틀을 만들어줍니다.
- distplot 메서드에 total_bill 열 데이터를 전달하면 히스토그램을 그릴 수 있습니다.

 

# 히스토그램 그리기

 

- distplot 메서드는 히스토그램과 밀집도 그래프를 같이 그려줍니다.

- 혹시라도 밀집도 그래프를 제외해서 그리고 싶다면 kde 인잣값을 False로 설정하면 됩니다.

* 밀집도 그래프는 주어진 데이터를 정규화시켜 넓이가 1이 되도록 그린 그래프입니다.

# 밀집도 그래프 그리기

 

- 밀집도 그래프만 나타내고 싶은 경우에는 hist 인자를 False로 지정하면 됩니다.

 

 

# 양탄자 그래프 그리기

 

- 보통 데이터 시각화를 사용할 때는 효율적으로 사용하기 위해 다양한 그래프를 한 번에 표시하곤 합니다.

- distplot 메서드에 rug 인자를 추가하여 히스토그램+밀집도+양탄자 그래프를 한 번에 그려보도록 하겠습니다.

 

* 양탄자 그래프는 그래프의 축에 동일한 길이의 직선을 붙여 데이터의 밀집 정도를 표현한 그래프입니다.

 

10~20 사이에 데이터가 많이 밀집되어 있다는 것을 알 수 있습니다

 

# count 그래프 그리기

 

- 이번에는 count 그래프를 그려보도록 하겠습니다.

 

* count 그래프는 이산값을 나타낸 그래프입니다.

 

countplot 메서드에 tips 데이터프레임의 day 열 데이터를 넣었습니다

 

 

 

# 산점도 그래프 그리기

 

- matploblib 라이브러리에서도 산점도 그래프를 그릴 수 있지만, seaborn 라이브러리를 사용하면 더욱 다양한 방법으로 산점도 그래프를 그릴 수 있습니다.

 

- seaborn 라이브러리의 regplot 메서드를 사용합니다. regplot 메서드를 사용하면 회귀선을 함께 그릴 수 있습니다.

 

회귀선을 제거하고 싶다면 fit_reg 인자를 False로 지정해주면 됩니다.

 

 

 

# 산점도 그래프와 히스토그램을 함께 그리기

 

- jointplot 메서드를 사용하면 산점도와 히스토그램을 함께 그릴 수 있습니다.

- x, y 인자에 원하는 열 이름을 지정하고 data 인잣값으로 데이터프레임을 지정하면 됩니다.

- joinplot 메서드도 그래프 이름과 x, y축 이름을 추가할 수 있습니다.

 

 

# 육각 그래프 그리기

 

- 산점도 그래프에서 점이 겹쳐 보일 경우 점을 구분하기 어렵다는 단점을 보완하기 위해 사용되는 그래프

- 2차원 표면에 육각형으로 데이터를 쌓아 표현합니다. 2차원 표면을 덮을 때 육각형이 가장 효과적이기 때문입니다.

- 특정 데이터의 개수가 많아지면 점점 진한 색으로 표현됩니다.

- joinplot 메서드를 그대로 사용하지만, kind 인잣값을 hex로 지정합니다.

 

# 이차원 밀집도 그리기

 

- 이차원 밀집도는 kdeplot 메서드로 만들 수 있습니다.

- shade 인잣값을 True로 지정하면 그래프에 음영 효과를 줄 수 있습니다.

 

 

 

 

# 바 그래프 그리기

 

- 바 그래프는 지정한 변수의 평균을 계산하여 그릴 수 있습니다.
- 시간에 따라 지불한 비용의 평균을 바 그래프로 나타내보았습니다.

 

 

 

# 박스 그래프 그리기

 

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

 

# 바이올린 그래프

- 데이터 분산이 모호하게 표현되는 박스 그래프를 보완하기 위해 사용합니다.

- 박스 그래프에 커널 밀도를 추정한 그래프, 바이올린의 형상과 비슷해 바이올린 그래프라고 부릅니다.

- violinplot 메서드를 사용해서 그립니다.

 

 

# 관계 그래프 그리기

 

- 다양한 그래프를 종합한 그래프

- pairplot 메서드에 데이터프레임을 넣는 방법으로 간단하게 구현할 수 있습니다.

- 관계 그래프는 중복된 정보가 표현된다는 단점이 있습니다

- 중복되는 정보를 피하기 위해 중복된 그래프가 그려지는 위치를 직접 지정하여 원하는 그래프로 교체할 수 있습니다.

 

대각선을 기준으로 절반 정도가 중복된 그래

이번에는 중복된 그래프들을 다른 그래프로 바꾸어 보겠습니다

 

- map_upper 메서드를 사용하여 대각선을 기준으로 위쪽에 그릴 그래프를 지정합니다.
- map_lower 메서드는 대각선을 기준으로 아래쪽에 그릴 그래프를 지정합니다.
- map_diag는 대각선을 중심으로 그래프를 그릴 수 있습니다.

- regplot 산점도, kdeplot 이차원 밀집도, distplot 히스토그램/밀집도, rug 양탄자 그래프

 

 

 

1. seaborn 라이브러리를 이용하여 색상이 추가된 바이올린 그래프 그리기

 

- violinplot 메서드에 hue 인잣값을 넣어 색상에 사용할 열 이름을 추가하면 됩니다.

- split은 데이터를 분리할 것인가의 유무를 지정합니다.
- split을 True로 적용 시, 남녀별 그래프가 합쳐져서 나옵니다.


- split을 False로 적용 시, 각 lunch, dinner 별 남, 녀 그래프가 따로 표시됩니다.

 

 

 

2. 산점도, 관계 그래프를 색상을 넣어 그리기

 

- 색상 추가는 hue 인잣값에 색상을 넣고 싶은 열을 선택하면 됩니다.

- fit_reg를 False로 적용하면 회귀선이 제거됩니다.

 

 

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

- 산점도 그래프의 점 크기를 조절하려면 scatter_kws딕셔너리 형태로 인잣값을 전달하면 됩니다.
- 여기서는 크기만 조절하기 위해 's':tips['size']를 딕셔너리에 담아 전달했습니다.


- 산점도 그래프의 점을 다른 기호로 표현하고 싶다면 markers 인잣값에 표현하고자 하는 기호를 리스트에 담아 전달하면 됩니다.
- markers : 점의 표시(marking) 방법을 list 형식으로 지정

 

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

 

- fit_reg 인자는 회귀선의 유무를 지정하는 값입니다.
- x와 y 인자에는 앤스콤 데이터 집합의 x, y 열을 전달하고 data 인자에는 데이터프레임(anscombe)을 전달했습니다.
- 4개의 데이터 그룹이 한꺼번에 산점도 그래프로 그려진 것을 알 수 있습니다.

 

- 그룹별로 그래프를 나누어 그리려면 lmplot 메서드에 추가로 col, col_warp 인자를 설정해야합니다.

- col_wrap 인자에는 그래프를 그릴 열의 최댓값을 지정하고 col 인자에는 데이터 그룹을 구분할 열(dataset)을 지정해줍니다.

- col_wrap : 데이터 그룹을 그릴 열의 최대 수 지정. 그룹 수의 약수여야 됩니다.

 

 

 

★ FacetGrid 클래스를 이용하여 그룹별 그래프 그리기

- FacetGrid : 멀티 plot을 그리드 형식으로 그려주는 클래스

- rug 인자는 양탄자 그래프의 유무를 지정하는 값입니다.

 

 

이번엔 다변량 그래프를 그려보도록 하겠습니다.

산점도 그래프를 그리기 위해 scatter를 첫 번째 인자에 전달했습니다.

tips 데이터 집합의 day 열로 그룹을 구분하여 그래프를 그렸습니다.

- time, smoker 열을 사용하여 그래프를 그려보겠습니다.

- time과 smoker 열은 각각 2개의 값을 가지고 있습니다.  Dinner / Lunch, Yes / No의 2행 2열의 격자가 만들어집니다.
- col, row 인잣값에 따라 smoker = Yes | time = Lunch 와 같은 방법으로 그래프를 구분합니다.

 

 


[참고자료]

(Data) seaborn (https://seaborn.pydata.org/)

 

seaborn: statistical data visualization — seaborn 0.10.1 documentation

Seaborn is a Python data visualization library based on matplotlib. It provides a high-level interface for drawing attractive and informative statistical graphics. For a brief introduction to the ideas behind the library, you can read the introductory note

seaborn.pydata.org

(Book) Do it! 데이터 분석을 위한 판다스 입문 (Chen. Daniel Y 저) - 이지스퍼블리싱

Do it! 데이터 분석을 위한 판다스 입문
국내도서
저자 : 다니엘 첸(Chen, Daniel Y.) / 김영하역
출판 : 이지스퍼블리싱 2018.10.11
상세보기
반응형