지금은마라톤중

Seaborn Tutorial (2)_A high-level API for statistical graphics 본문

STUDY/seaborn Tutorial

Seaborn Tutorial (2)_A high-level API for statistical graphics

달리는중 2023. 2. 7. 22:54

 

데이터를 시각화하는 가장 좋은 방법은 없다.
seaborn은 일관된 데이터 세트 지향 API를 사용하여 다양한 시각적 표현 사이를 쉽게 전환할 수 있다.
relplot() : 다양한 통계적 관계를 시각화하도록 설계
  - relplot 함수 안에 kind 파라미터를 통해 그래프의 종류를 쉽게 바꿀 수 있다.


dots = sns.load_dataset("dots")
sns.relplot(
    data = dots, kind = "line",
    x = "time", y = "firing_rate", col = "align",
    hue = "choice", size = "coherence", style = "choice",
    facet_kws = dict(sharex=False),
)

size와 style 파라미터는 scatter와 line plot 모두에서 쓰이지만, 시각화 효과는 다르다.
scatter에서는 마커여역과 심볼을 바꾸고, line에서는 선의 너비와 그래프를 세련되게 만든다.
이런 디테일들을 기억하고 있을 필요는 없다, 전반적인 그래프의 구조와 우리가 원하는 정보에 집중해야한다.

 

 

통계 추정

fmri = sns.load_dataset("fmri")
sns.relplot(
    data = fmri, kind = "line",
    x = "timepoint", y = "signal", col = "region",
    hue= "event", style ="event",
)

 

 

 

통계적 값이 추정될 때, seaborn은 부트스트랩을 사용하여 신뢰 구간을 계산하고 추정치의 불확실성을 나타내는 오류 막대를 그릴 것이다.
seaborn의 통계적 추정은 서술적 통계를 넘어선다. 예를 들어, 선형 회귀 모델(및 불확실성)을 포함하여 산점도를 향상시킬 수 있습니다.

 

sns.lmplot(data=tips, x="total_bill", y= "tip", col = "time", hue = "smoker")

 

 

분포 표현

통계 분석은 데이터 세트의 변수 분포에 대한 지식이 필요
seaborn 함수 displot()은 분포를 시각화하는 몇 가지 접근 방식을 지원
히스토그램과 같은 고전적인 기술과 커널 밀도 추정과 같은 계산 집약적인 접근 방식이 포함

 

sns.displot(data=tips, x="total_bill", col="time", kde=True)

 

Seaborn은 또한 데이터의 경험적 누적 분포 기능을 계산하고 플로팅하는 것과 같이 강력하지만 덜 친숙한 기술을 홍보하려고 한다.

 

sns.displot(data=tips, kind="ecdf", x="total_bill", col="time", hue="smoker", rug=True)

 

범주형 데이터 플롯

seaborn의 몇 가지 전문 플롯 유형은 분류 데이터를 시각화하는 것을 지향
=> catplot() 을 통해 접근 가능
이 플롯들은 다양한 수준의 세분성을 제공
swarm plot을 통해 모든 관찰을 할 수 있다 : 겹치지 않는 카테고리별 축을 기준으로 각각 산점도가 생긴다.

 

sns.catplot(data=tips, kind="swarm", x="day", y="total_bill", hue="smoker")

 

또는 커널 밀도 추정을 사용하여 포인트가 샘플링되는 기본 분포를 나타낼 수 있다.

 

sns.catplot(data = tips, kind = "violin", x = "day", y= "total_bill", hue="smoker", split= True)

또는 각 중첩된 범주 내에서 평균값과 신뢰구간만 보여줄 수 있다.

 

sns.catplot(data=tips, kind = "bar", x="day", y="total_bill", hue = "smoker")

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Comments