python의 다양한 시각화 라이브러리 중 seaborn을 사용해봤다
기본적인 barplot, scatterplot, boxplot 등은 생략했다
시각화를 잘하려면 많이보고 어떤 것들이 가능한지 많이 아는 것이 중요한 것 같다.
seaborn example gallary를 참조하면서 잘 알아두자
seaborn에서 기본적으로 제공하는 tips데이터를 사용해 예시를 만들었다.
x, y축에 각 값을 작은 막대로 찍어 데이터의 분포를 보여준다.
sns.rugplot(data=df, #DataFrame for plot
x,y,hue # input data for plotting
)
예시처럼 해당하는 축에 위치에 맞도록 작은 막대를 만들어준다.
당연하게도 numeric data만 된다
histogram을 그리면서 rug
와 kde
밀도를 같이 표현할 수 있다.
sns.distplot(x,
kde=True, # 밀도함수 표현
rug=True # rug 표현
)
kde
와 rug
는 따로 만들수도 있다. seaborn에서 지원한다.
카테고리 별로 데이터가 얼마나 있는지 표시해준다
sns.countplot(x=, #column name
data= # dataframe
)
언뜻 보고 히스토그램과 무슨차이가 있나 싶었다. 히스토그램은 해당 범위의 모든 구간이 값이 없더라도 표시가된다. 하지만 countplot은 값이 0인 구간(카테고리)이 있으면 표시하지 않는다.
데이터 변수가 여러개인 다차원 데이터는 다음과 같은 종류가 있을 수 있다.
데이터가 모두 연속적인 실수라면 scatterplot을 사용해보자. 일반 scatterplot()
을 쓸 수도 있고 jointplot
을 사용하여 산포도 뿐 아니라 차트 가장자리에 각변수의 히스토그램도 그릴 수 있다.
jointplot 공식 Document 참조
sns.jointplot(x,y, # input data for plotting
data= , # dataframe
kind= # 어떤 그래프를 그릴거니?
)
만약 3차원 이상의 데이터라면 pairplot
을 통해 grid형태로 각 데이터 행열 조합에 대해 시각화를 한다. 3개 이상의 축으로 시각화를 하는 것은 특별한 경우가 아니라면 지양한다.
모든 값이 카테고리이면 heatmap
을 이용해보자
sns.heatmap(data=df, # dataframe
cmap= , # color map
annot=True, # 각 칸에 값 쓸건지?
fmt= , # 각 칸에 들어가는 숫자 형식
cbar=True, # 우측에 색깔별 값과 일치하는 바 만들건지?
)
데이터가 2차원이고 실수와 카테고리가 섞여있을때도 다양한 분포 플롯을 이용할 수 있다.
4 ~ 6은 모두 비슷하지만 다른모양으로 그려준다.
그리고 모든 플롯은 hue
옵션을 통해 카테고리별로 다르게 그려준다.
barplot
boxplot
violinplot
stripplot
swarmplot
sns.stripplot(x, y, data, # input data
jitter=True # 데이터 수가 많을 경우 가로축 상에서 겹치지 않도록 함
)
stripplot
과 swarmplot
은 매우 유사하지만 jitter
차이
swarmplot
은 항상 겹치지 않게 옆으로 퍼지게 그려준다
크게 다르지않다. 바이올린 모양으로 그려준다
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
...
)