# [부트캠프 #2] Visualization

스르륵·2021년 3월 9일
0

부트캠프 정리하기

목록 보기
2/12

python의 다양한 시각화 라이브러리 중 seaborn을 사용해봤다

기본적인 barplot, scatterplot, boxplot 등은 생략했다

시각화를 잘하려면 많이보고 어떤 것들이 가능한지 많이 아는 것이 중요한 것 같다.

seaborn example gallary를 참조하면서 잘 알아두자

seaborn에서 기본적으로 제공하는 tips데이터를 사용해 예시를 만들었다.

1차원 분포 플롯

rugplot

x, y축에 각 값을 작은 막대로 찍어 데이터의 분포를 보여준다.

sns.rugplot(data=df, #DataFrame for plot
            x,y,hue  # input data for plotting
           )

예시처럼 해당하는 축에 위치에 맞도록 작은 막대를 만들어준다.

당연하게도 numeric data만 된다

distplot

histogram을 그리면서 rugkde 밀도를 같이 표현할 수 있다.

sns.distplot(x, 
             kde=True, # 밀도함수 표현
             rug=True  # rug 표현
            )


kderug는 따로 만들수도 있다. seaborn에서 지원한다.

countplot

카테고리 별로 데이터가 얼마나 있는지 표시해준다

sns.countplot(x=, #column name
              data= # dataframe
             )

언뜻 보고 히스토그램과 무슨차이가 있나 싶었다. 히스토그램은 해당 범위의 모든 구간이 값이 없더라도 표시가된다. 하지만 countplot은 값이 0인 구간(카테고리)이 있으면 표시하지 않는다.

다차원 데이터

데이터 변수가 여러개인 다차원 데이터는 다음과 같은 종류가 있을 수 있다.

  • 분석하고자 하는 값이 모두 실수
  • 분석하고자 하는 값이 모두 카테고리 값
  • 분석하고자 하는 값에 실수와 카테고리가 섞여있는 경우

2차원 실수형 데이터

데이터가 모두 연속적인 실수라면 scatterplot을 사용해보자. 일반 scatterplot()을 쓸 수도 있고 jointplot을 사용하여 산포도 뿐 아니라 차트 가장자리에 각변수의 히스토그램도 그릴 수 있다.

jointplot 공식 Document 참조

sns.jointplot(x,y,    # input data for plotting
              data= , # dataframe
              kind=   # 어떤 그래프를 그릴거니?
             )

  • kind : scatter, kde, hist, hex, reg, resid
  • kind가 kde면 밀도히스토그램을 그린다

다차원 실수형 데이터

만약 3차원 이상의 데이터라면 pairplot을 통해 grid형태로 각 데이터 행열 조합에 대해 시각화를 한다. 3개 이상의 축으로 시각화를 하는 것은 특별한 경우가 아니라면 지양한다.

sns.pairplot()

  • 상세한 설정은 따로 해줘야한다(hue, palette, kind...) --> Document 보면서 참고할것
  • 위처럼 카테고리가 섞여있으면 hue를 통해 색깔 구분해주자

2차원 카테고리 데이터

모든 값이 카테고리이면 heatmap을 이용해보자

sns.heatmap(data=df,    # dataframe
			cmap=  , 	# color map
            annot=True, # 각 칸에 값 쓸건지?
            fmt=   ,    # 각 칸에 들어가는 숫자 형식
            cbar=True,  # 우측에 색깔별 값과 일치하는 바 만들건지?
			)

2차원 복합 데이터

데이터가 2차원이고 실수와 카테고리가 섞여있을때도 다양한 분포 플롯을 이용할 수 있다.

4 ~ 6은 모두 비슷하지만 다른모양으로 그려준다.

그리고 모든 플롯은 hue옵션을 통해 카테고리별로 다르게 그려준다.

  1. barplot
  2. boxplot
  3. violinplot
  4. stripplot
  5. swarmplot

stripplot() / swarmplot()

sns.stripplot(x, y, data,  # input data
              jitter=True  # 데이터 수가 많을 경우 가로축 상에서 겹치지 않도록 함
             )



stripplotswarmplot은 매우 유사하지만 jitter차이

swarmplot은 항상 겹치지 않게 옆으로 퍼지게 그려준다

violinplot()

크게 다르지않다. 바이올린 모양으로 그려준다

catplot

categorical plot의 줄임말로 보임.

scatter처럼 점을 찍는데 카테고리별로 적당한 위치에 찍어준다

import seaborn as sns
sns.catplot(data=DataFrame, # pandas df
            x,y,hue='', # inputs for plotting data
            order=list, # a list of strings
            palette=p,  # colors to use
            ...
           )

profile
기록하는 블로그

0개의 댓글