파이썬 Boxplot 여러개 그리기: 데이터 분포 시각화하기

데이터 분석을 하다 보면 여러 카테고리나 그룹의 분포를 한눈에 비교해야 할 때가 많습니다. 이때 가장 효과적인 방법 중 아래와 같이 하나는 파이썬 boxplot 여러개 그리기입니다.

파이썬 boxplot 여러개 그리기 그림
( 파이썬 boxplot 여러개 그리기 시각화 )

박스플롯(Boxplot)은 데이터의 분포와 중심 경향을 요약하는 데 유용하며, Seaborn 라이브러리를 사용하면 간단하게 그릴 수 있습니다. 이번 포스트에서는 박스플롯과 스트립플롯을 결합해 데이터 분포를 시각화하는 방법을 배워보겠습니다.

Boxplot과 Stripplot이란?

1. Boxplot

  • 정의: 데이터의 분포와 중심값(중앙값, 사분위수)을 시각적으로 표현하는 상자 그림입니다.
  • 주요 특징:
    • 상자는 IQR(Interquartile Range, 사분위 범위)를 나타냅니다.
    • 수염(whisker)은 IQR 범위를 벗어나는 값을 표시합니다.
    • 이상치(outlier)는 개별 점으로 표시됩니다.
  • 활용: 데이터의 중심 경향과 분산을 파악할 때 유용합니다.

2. Stripplot

  • 정의: 데이터의 개별 값을 점으로 나타내는 산점도입니다.
  • 주요 특징:
    • Boxplot이 데이터의 분포를 보여준다면, Stripplot은 각 데이터 포인트의 위치를 정확히 나타냅니다.
    • Boxplot과 함께 사용하면 데이터 분포와 개별 값을 동시에 시각화할 수 있습니다.

파이썬 Boxplot 여러개 그리기

아래는 파이썬의 Seaborn 라이브러리를 사용해 요일별 총 금액 데이터를 박스플롯으로 시각화하는 예제입니다. 또한, Stripplot을 결합하여 각 데이터 포인트를 한눈에 볼 수 있도록 합니다.

코드 블록

import seaborn as sns  
import matplotlib.pyplot as plt  

# 데이터 로드  
tips = sns.load_dataset('tips')  

# 박스플롯과 스트립플롯 결합  
plt.figure(figsize=(10, 6))  
sns.boxplot(x='day', y='total_bill', data=tips, palette='Set2')  # 박스플롯 생성  
sns.stripplot(x='day', y='total_bill', data=tips, color='.25')   # 스트립플롯 생성  

# 그래프 스타일링  
plt.title("Drawing Multiple Boxplots in Python: Total Bill by Day", fontsize=15)  
plt.xlabel("Day of the Week", fontsize=12)  
plt.ylabel("Total Bill ($)", fontsize=12)  

# 그래프 출력  
plt.tight_layout()  
plt.show()

코드 간략 해설

  1. 데이터 로드
    • sns.load_dataset('tips')를 사용해 식당 팁 데이터를 불러옵니다.
  2. 박스플롯 생성
    • sns.boxplot()을 사용하여 각 요일의 총 금액(total_bill) 데이터를 시각화합니다.
  3. 스트립플롯 결합
    • sns.stripplot()을 사용해 개별 데이터 포인트를 박스플롯 위에 겹쳐 표현합니다.
  4. 그래프 스타일링
    • 제목과 축 레이블을 추가해 그래프를 보기 쉽게 만듭니다.

박스플롯과 스트립플롯 결합의 장점

  1. 박스플롯의 역할
    • 각 요일의 데이터 분포와 중심 경향(중앙값, IQR)을 명확히 보여줍니다.
    • 데이터의 이상치를 시각적으로 강조할 수 있습니다.
  2. 스트립플롯의 역할
    • 박스플롯이 요약한 데이터 분포를 보완하며, 개별 데이터 포인트를 확인할 수 있습니다.
    • 데이터를 더욱 정밀하게 분석할 수 있도록 돕습니다.
  3. 결합 효과
    • 두 플롯을 결합하면 데이터의 전반적인 분포와 개별 데이터 간의 관계를 동시에 시각화할 수 있습니다.

그래프에서 얻을 수 있는 인사이트

파이썬 Boxplot 여러개 그리기 결과 분석 그림
( 파이썬 Boxplot 여러개 그리기 결과 분석 )
  1. 요일별 분포 차이
    • 주말(토요일, 일요일)에는 총 금액의 중앙값이 다른 요일보다 높습니다.
  2. 이상치 확인
    • 토요일은 총 금액이 $50 이상인 극단값(outliers)이 눈에 띕니다.
  3. 개별 데이터 확인
    • 스트립플롯 덕분에 각 요일의 데이터가 실제로 어떻게 분포되어 있는지 알 수 있습니다.

마무리

이번 포스트에서는 파이썬 boxplot 여러개 그리기를 해보고, 스트립플롯을 결합해 데이터를 더욱 풍부하게 시각화하는 방법을 배웠습니다.

활용 팁

  • 박스플롯: 데이터의 전반적인 분포를 빠르게 확인할 때 사용.
  • 스트립플롯: 개별 데이터 포인트를 추가적으로 분석할 때 결합.
  • 여러 데이터셋에 적용해, 카테고리별 비교를 명확히 표현하세요.

직접 코드를 실행해보고, 여러분의 데이터에 이 방법을 적용해 새로운 인사이트를 발견해 보세요! 그리고 22년 만의 변화: 워렌버핏 채권 투자에 숨겨진 비밀(feat.파이썬 막대그래프) 포스트를 통해 파이썬 시각화 기본기를 다져보세요!

#코드 상세 해설

1. 라이브러리와 데이터 로드
import seaborn as sns  
import matplotlib.pyplot as plt  
tips = sns.load_dataset('tips')  
  • Seaborn: 박스플롯과 스트립플롯을 생성하는 라이브러리입니다.
  • Matplotlib: 그래프 스타일링과 출력을 도와줍니다.
  • tips 데이터셋: 식당의 요일별 총 금액 데이터를 포함하는 샘플 데이터입니다.
2. 박스플롯 생성
sns.boxplot(x='day', y='total_bill', data=tips, palette='Set2')  
  • x='day': X축에 요일 데이터를 설정합니다.
  • y='total_bill': Y축에 총 금액 데이터를 설정합니다.
  • palette='Set2': 그래프 색상을 Seaborn의 Set2 팔레트를 사용해 설정합니다.
3. 스트립플롯 생성
sns.stripplot(x='day', y='total_bill', data=tips, color='.25')  
  • color='.25': 점의 색상을 밝은 회색으로 설정해 박스플롯과 대비를 줍니다.
  • 박스플롯 위에 겹쳐져, 데이터 포인트를 추가적으로 시각화합니다.
4. 그래프 스타일링 및 출력
plt.title("Drawing Multiple Boxplots in Python: Total Bill by Day", fontsize=15)  
plt.xlabel("Day of the Week", fontsize=12)  
plt.ylabel("Total Bill ($)", fontsize=12)  
plt.tight_layout()  
plt.show()
  • plt.title(): 그래프 제목을 추가해 시각화의 목적을 명확히 표현합니다.
  • tight_layout(): 그래프의 여백을 자동으로 조정해 각 요소가 겹치지 않도록 합니다.

#Tips 데이터에 대한 설명

tips 데이터셋은 Seaborn 라이브러리에서 제공하는 샘플 데이터로, 식당에서 고객들이 지불한 금액과 팁, 그리고 몇 가지 관련 정보들을 포함하고 있습니다. 이 데이터는 데이터 분석과 시각화 연습에 자주 사용되고, 파이썬 boxplot 여러개 그리기에도 활용됩니다.

데이터셋 개요
컬럼 이름설명데이터 타입
total_bill총 지불 금액 (달러)수치형 (float)
tip팁 금액 (달러)수치형 (float)
sex고객의 성별 (‘Male’, ‘Female’)범주형 (string)
smoker흡연 여부 (‘Yes’, ‘No’)범주형 (string)
day방문 요일 (‘Thur’, ‘Fri’, ‘Sat’, ‘Sun’)범주형 (string)
time방문 시간 (‘Lunch’, ‘Dinner’)범주형 (string)
size식사 인원 수수치형 (int)
데이터셋 설명
1. total_bill
  • 고객이 지불한 총 금액입니다.
  • 단위는 달러($)이며, 팁과 음식, 음료의 비용을 포함합니다.
  • 박스플롯에서는 이 컬럼을 사용해 요일별 총 금액 분포를 시각화합니다.
2. tip
  • 고객이 지불한 팁의 금액입니다.
  • 총 금액 대비 팁 비율을 계산해 팁 문화를 분석하는 데 자주 사용됩니다.
3. sex
  • 고객의 성별입니다.
  • 데이터는 ‘Male'(남성)과 ‘Female'(여성)로 구분됩니다.
  • 성별에 따라 팁 금액의 차이를 비교하거나 성별별 지출 패턴을 분석할 수 있습니다.
4. smoker
  • 고객의 흡연 여부를 나타냅니다.
  • 흡연 고객(‘Yes’)과 비흡연 고객(‘No’)으로 구분되며, 흡연 여부가 팁 금액이나 지출 패턴에 영향을 미치는지 분석할 때 유용합니다.
5. day
  • 고객이 방문한 요일입니다.
  • ‘Thur'(목요일), ‘Fri'(금요일), ‘Sat'(토요일), ‘Sun'(일요일)로 표시됩니다.
  • 요일별로 총 금액이나 팁 금액의 차이를 분석할 수 있습니다.
6. time
  • 방문 시간이 ‘Lunch'(점심)인지 ‘Dinner'(저녁)인지를 나타냅니다.
  • 시간대별 지출 패턴을 비교하거나 팁 비율의 차이를 분석할 때 유용합니다.
7. size
  • 식사 인원 수입니다.
  • 그룹의 크기가 총 금액이나 팁 금액에 어떤 영향을 미치는지 분석할 때 사용됩니다.

유사한 게시물