Seaborn을 사용하여 고급 통계 차트를 구현하는 방법

이 기사는 Huawei Cloud Community " Seaborn을 사용하여 상자 그림에서 다변수 관계 탐색에 이르는 고급 통계 차트 구현 ", 작성자: Lemony Hug 에서 공유되었습니다 .

데이터 과학 및 데이터 시각화 분야에서 Seaborn은 인기 있는 Python 시각화 라이브러리입니다. Matplotlib을 기반으로 구축되어 더욱 간단하고 아름다운 그래픽 인터페이스를 제공하며 일부 고급 통계 차트 기능도 갖추고 있습니다. 이 기사에서는 Seaborn을 사용하여 일부 고급 통계 차트를 구현하고 해당 코드 예제를 제공하는 방법을 소개합니다.

씨본 설치

먼저 Seaborn이 설치되어 있는지 확인하세요. pip를 사용하여 설치할 수 있습니다.

pip 설치 시본

필요한 라이브러리 가져오기

시작하기 전에 Seaborn과 기타 일반적으로 사용되는 데이터 처리 및 시각화 라이브러리를 가져와야 합니다.

seaborn을 sns로 가져오기
matplotlib.pyplot을 plt로 가져오기
numpy를 np로 가져오기
팬더를 PD로 가져오기

박스 플롯

상자 그림은 데이터 분포를 표시하는 데 일반적으로 사용되는 통계 차트입니다. Seaborn은 상자 그림을 그리기 위한 간단하고 사용하기 쉬운 인터페이스를 제공합니다.

# 무작위 데이터 생성
np.random.seed(0)
데이터 = np.random.normal(loc=0, scale=1, size=100)

# 상자 그림 그리기
sns.boxplot(데이터=데이터)
plt.title('무작위 데이터의 상자 그림')
plt.show()

이 예에서는 무작위 데이터 세트를 생성하고 함수를 사용하여 상자 그림을 그렸습니다. 이 차트를 통해 중앙값, 사분위수, 이상값 등 데이터의 분포를 직관적으로 이해할 수 있습니다. sns.boxplot() 

바이올린 플롯

바이올린 플롯은 데이터의 분포를 보다 직관적으로 표시하기 위해 상자 그림과 커널 밀도 추정을 결합한 차트입니다.

# 무작위 데이터 생성
np.random.seed(0)
data1 = np.random.normal(loc=0, 규모=1, 크기=100)
data2 = np.random.normal(loc=2, 규모=1.5, 크기=100)
데이터 = np.concatenate([데이터1, 데이터2])
labels = ['그룹 1'] * 100 + ['그룹 2'] * 100

# 바이올린 플롯 그리기
sns.violinplot(x=레이블, y=데이터)
plt.title('두 그룹의 바이올린 플롯')
plt.show()

이 예에서는 두 개의 서로 다른 무작위 데이터 세트를 생성하고 함수를 사용하여 바이올린 플롯을 그렸습니다. 이 차트를 통해 두 데이터 세트의 분포를 비교하고 차이점을 관찰할 수 있습니다. sns.violinplot() 

히트맵

히트 맵은 색상을 사용하여 데이터 매트릭스를 나타내는 차트로, 상관관계나 데이터 밀도를 표시하는 데 자주 사용됩니다.

# 무작위 데이터 생성
np.random.seed(0)
데이터 = np.random.rand(10, 10)

# 히트맵 그리기
sns.heatmap(data, annot=True, cmap='녹색')
plt.title('무작위 데이터의 히트맵')
plt.show()

이 예에서는 임의의 10x10 행렬을 생성하고 이 함수를 사용하여 히트 맵을 그렸습니다. 이 차트를 통해 데이터 간의 상관관계와 데이터 분포를 직관적으로 이해할 수 있습니다. sns.heatmap() 

커널 밀도 추정 플롯

커널 밀도 추정 플롯은 관측된 데이터를 평활화하여 연속적인 확률 밀도 곡선을 생성함으로써 데이터 밀도 함수를 추정하는 비모수적 방법입니다.

# 무작위 데이터 생성
np.random.seed(0)
데이터 = np.random.normal(loc=0, scale=1, size=100)

# 커널 밀도 추정 맵 그리기
sns.kdeplot(데이터, 그늘=True)
plt.title('무작위 데이터의 커널 밀도 추정 플롯')
plt.show()

이 예에서는 무작위 데이터 세트를 생성하고 함수를 사용하여 커널 밀도 추정치를 플로팅했습니다. 이 차트는 데이터의 확률밀도 분포를 보여주며, 데이터의 분포 특성을 더 잘 이해하는 데 도움이 됩니다. sns.kdeplot() 

쌍 도표

쌍별 관계 다이어그램은 데이터 세트의 변수 간의 관계를 시각화하는 데 사용되는 다이어그램 유형이며 탐색적 데이터 분석에 유용합니다.

# 무작위 데이터 세트 생성
np.random.seed(0)
데이터 = pd.DataFrame(np.random.randn(100, 4), 열=['A', 'B', 'C', 'D'])

# 쌍별 관계 다이어그램 그리기
sns.pairplot(데이터)
plt.suptitle('무작위 데이터의 쌍 도표', y=1.02)
plt.show()

이 예에서는 무작위 데이터 세트를 생성하고 이 함수를 사용하여 쌍별 관계를 그렸습니다. 이 차트는 산점도 및 일변량 분포도를 포함하여 데이터 세트에 있는 모든 두 변수 간의 관계를 보여 주므로 변수 간의 패턴과 상관 관계를 발견하는 데 도움이 됩니다. sns.pairplot() 

클러스터 맵

클러스터 다이어그램은 데이터 세트에 포함된 변수 간의 유사성을 표시하는 데 사용되는 다이어그램입니다. 유사한 변수는 클러스터링 알고리즘을 통해 그룹으로 표시됩니다.

# 무작위 데이터 세트 생성
np.random.seed(0)
데이터 = pd.DataFrame(np.random.rand(10, 10), columns=['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H ', '나', 'J'])

# 클러스터링 다이어그램 그리기
sns.clustermap(data, cmap='viridis')
plt.title('무작위 데이터의 클러스터 맵')
plt.show()

이 예에서는 무작위 데이터 세트를 생성하고 함수를 사용하여 클러스터를 그렸습니다. 이 차트는 데이터 세트에 포함된 변수 간의 유사성을 보여주고, 유사한 변수를 클러스터링 알고리즘을 통해 그룹으로 표시하여 변수 간의 패턴과 구조를 발견하는 데 도움을 줍니다. sns.clustermap() 

클러스터맵

클러스터링 히트맵(Clustering Heat Map)은 계층적 클러스터링 알고리즘을 기반으로 한 히트맵으로, 데이터를 클러스터링하고 클러스터링 결과에 따라 재배열하여 데이터의 구조와 상관관계를 더 잘 표시합니다.

# 무작위 데이터 생성
np.random.seed(0)
데이터 = np.random.rand(10, 10)

# 클러스터링 히트맵 그리기
sns.clustermap(data, cmap='coolwarm')
plt.title('무작위 데이터의 클러스터맵')
plt.show()

이 예에서는 임의의 10x10 행렬을 생성하고 함수를 사용하여 클러스터 히트맵을 그렸습니다. 이 차트를 통해 데이터 간의 클러스터링 관계와 서로 다른 데이터 포인트 간의 유사성을 명확하게 확인할 수 있습니다. sns.clustermap() 

분류 산점도(Pairplot)

범주형 산점도는 여러 변수 간의 관계를 동시에 표시하는 차트로, 데이터 세트에서 서로 다른 변수 간의 상관 관계를 탐색하는 데 자주 사용됩니다.

#샘플 데이터 세트 로드
아이리스 = sns.load_dataset('아이리스')

# 분류 산점도 그리기
sns.pairplot(iris,hue='species', markers=['o', 's', 'D'])
plt.title('붓꽃 데이터세트 쌍그림')
plt.show()

이 예에서는 Seaborn과 함께 제공되는 붓꽃 데이터 세트를 사용하고 이 기능을 사용하여 분류 산점도를 그립니다. 이 차트를 통해 다양한 붓꽃 종 간의 특성 차이와 다양한 특성 간의 상관 관계를 한눈에 확인할 수 있습니다. sns.pairplot() 

시계열도

시계열 차트는 시계열 데이터를 표시하는 데 사용되는 차트로, 시간에 따른 데이터의 추세와 주기성을 분석하는 데 자주 사용됩니다.

# 시계열 데이터 생성
날짜 = pd.date_range(start='2022-01-01', end='2022-12-31')
데이터 = np.random.randn(len(날짜))

# 데이터프레임 생성
df = pd.DataFrame({'날짜': 날짜, '값': 데이터})

# 시계열 그래프 그리기
sns.lineplot(x='날짜', y='값', data=df)
plt.title('무작위 데이터의 시계열 도표')
plt.xlabel('날짜')
plt.ylabel('값')
plt.show()

이 예에서는 임의의 시계열 데이터를 생성하고 함수를 사용하여 시계열을 표시했습니다. 이 차트를 통해 시간에 따른 데이터의 추세와 주기성을 명확하게 확인할 수 있습니다. sns.lineplot() 

고급 색상 팔레트

Seaborn은 사용자가 차트에서 적절한 색 구성표를 선택하여 핵심 사항을 강조하거나 시각화 효과를 향상시키는 데 도움이 되는 풍부한 팔레트 기능을 제공합니다.

# 고급 팔레트 사용
current_palette = sns.color_palette('husl', 5)

# 히스토그램 그리기
sns.barplot(x=np.arange(5), y=np.random.rand(5), 팔레트=current_palette)
plt.title('고급 색상 팔레트를 사용한 막대 그래프')
plt.show()

이 예에서는 Husl 팔레트를 선택하는 함수를 사용하여 5가지 색상의 팔레트를 생성했습니다. 그런 다음 이 팔레트를 사용하여 효과를 보여주기 위해 히스토그램을 그렸습니다. sns.color_palette() 

사용자 정의된 플롯 스타일

Seaborn을 사용하면 사용자는 개인의 요구에 맞게 다양한 스타일을 설정하여 차트 모양을 맞춤 설정할 수 있습니다.

# 사용자 정의 스타일 설정
sns.set_style('whitegrid')

# 산점도 그리기
sns.scatterplot(x=np.random.randn(100), y=np.random.randn(100))
plt.title('사용자 정의된 스타일의 산점도')
plt.show()

이 예에서는 함수를 사용하여 차트 스타일을 흰색 격자로 설정하고 산점도를 그려 그 효과를 보여줍니다. sns.set_style() 

다중 패널 도면(패싯 그리드)

Seaborn은 여러 하위 플롯을 동시에 표시하여 서로 다른 하위 집합 간의 관계를 더 잘 비교할 수 있는 다중 패널 플로팅 기능을 제공합니다.

#샘플 데이터 세트 로드
팁 = sns.load_dataset('팁')

#FacetGrid 객체 생성
g = sns.FacetGrid(tips, col='시간', row='흡연자')

# 바이올린 플롯 그리기
g.map(sns.violinplot, 'total_bill')
plt.show()

이 예에서는 함수를 사용하여 FacetGrid 개체를 만들고 다양한 하위 그래프에 바이올린 플롯을 그려 다양한 하위 집합 간의 데이터 분포를 표시합니다. sns.FacetGrid() 

데이터 분포비교(분포비교)

Seaborn은 커널 밀도 추정 또는 히스토그램을 사용하는 등 다양한 데이터 분포 간의 차이를 비교하는 여러 가지 방법을 제공합니다.

#샘플 데이터 세트 로드
아이리스 = sns.load_dataset('아이리스')

# 커널 밀도 추정 맵 그리기
sns.kdeplot(data=iris, x='sepal_length',hue='species', fill=True)
plt.title('꽃받침 길이의 분포 비교')
plt.show()

이 예에서는 붓꽃 데이터세트의 종 간 꽃받침 길이에 대한 커널 밀도 추정치를 플롯하여 분포를 비교하는 함수를 사용합니다. sns.kdeplot() 

그룹화된 시각화

Seaborn은 범주형 변수를 사용하여 데이터를 그룹화하고 시각화하는 등 데이터 그룹화를 쉽게 표시할 수 있습니다.

#샘플 데이터 세트 로드
타이타닉 = sns.load_dataset('타이타닉')

# 분류 상자 그림 그리기
sns.boxplot(data=titanic, x='class', y='age',hue='sex')
plt.title('계층 및 성별에 따른 연령 그룹화 상자 그림')
plt.show()

이 예에서는 함수를 사용하여 타이타닉 데이터세트의 다양한 객실 클래스와 성별에 대한 연령의 영향을 표시하고 분포를 비교합니다. sns.boxplot() 

다변량 관계 탐색

Seaborn은 산점도 행렬이나 쌍별 관계 도표를 사용하는 등 여러 변수 간의 관계를 탐색하는 여러 가지 방법을 제공합니다.

#샘플 데이터 세트 로드
아이리스 = sns.load_dataset('아이리스')

# 산점도 행렬을 그립니다.
sns.pairplot(data=iris,hue='종')
plt.title('다변량 관계 탐색을 위한 쌍그림')
plt.show()

이 예에서는 함수를 사용하여 붓꽃 ​​데이터세트의 다양한 기능 간의 쌍 관계를 플롯하여 이들 간의 다변량 관계를 탐색합니다. sns.pairplot() 

요약하다

이 기사에서는 Seaborn을 사용하여 고급 통계 차트를 구현하는 방법을 소개하고 풍부한 코드 예제를 제공합니다. 먼저, 데이터의 분포와 상관관계를 시각적으로 표시할 수 있는 박스 플롯, 바이올린 플롯, 히트맵 등 일반적인 통계 차트를 그리는 방법을 배웠습니다. 다음으로, 사용자가 차트 모양을 사용자 정의하고 시각화 효과를 향상시키는 데 도움이 될 수 있는 색상 팔레트, 사용자 정의 차트 스타일, 다중 패널 그림 등과 같은 고급 기능을 살펴보았습니다. 그런 다음 데이터 분포 비교, 데이터 그룹 표시, 다변수 관계 탐색 등과 같은 몇 가지 고급 애플리케이션을 도입했습니다. 이러한 방법은 사용자가 데이터 간의 관계와 패턴을 더 깊이 이해하는 데 도움이 될 수 있습니다. 이 기사를 연구함으로써 독자는 데이터 시각화를 위해 Seaborn을 사용하는 기본 기술을 습득하고 데이터 분석 및 탐색을 위해 Seaborn의 풍부한 기능과 유연한 인터페이스를 사용할 수 있습니다. Seaborn의 강력한 기능과 간단한 인터페이스는 데이터 과학자와 분석가에게 없어서는 안 될 도구 중 하나입니다.

화웨이 클라우드의 신기술에 대해 빨리 알아보고 팔로우하려면 클릭하세요~

"Celebrateing More Than Years 2"의 불법 복제 리소스가 npm에 업로드되어 npmmirror가 unpkg 서비스 를 중단해야 했습니다. Microsoft의 중국 AI 팀은 수백 명의 사람들을 모아 미국으로 떠났습니다. 프론트엔드 시각화 라이브러리와 Baidu의 유명한 오픈 소스 프로젝트 ECharts - Fish 사기꾼을 지원하기 위한 "going to the sea"는 TeamViewer를 사용하여 398만 개를 전송했습니다! 원격 데스크톱 공급업체는 무엇을 해야 합니까? Zhou Hongyi: Google은 시간이 얼마 남지 않았습니다. 모든 제품을 오픈소스로 만드는 것이 좋습니다. 한 유명 오픈소스 회사의 전직 직원이 소식을 전했습니다. 부하 직원의 도전을 받은 후 기술 리더는 분노했습니다. Google은 Android 가상 머신에서 ChromeOS를 실행하는 방법을 보여주었습니다. 여기서 time.sleep(6)은 어떤 역할을 합니까? 마이크로소프트, 중국 AI 팀이 "미국을 위해 준비 중"이라는 루머에 대응 사무용 소프트웨어의 마트료시카 같은 충전에 대한 인민일보 온라인 논평: "세트"를 적극적으로 해결해야만 미래를 가질 수 있다
{{o.이름}}
{{이름}}

추천

출처my.oschina.net/u/4526289/blog/11179361