Seaborn의 바이올린 플롯(Violin Plot)은 박스플롯(boxplot)과 커널 밀도 추정(kernel density estimate)을 하나의 그래프로 결합하여 데이터 분포를 시각화하는 강력한 도구입니다. 이 플롯은 seaborn.violinplot() 함수를 사용해 손쉽게 그릴 수 있으며, inner 파라미터에 "stick" 값을 지정하면 각 관찰값을 막대(스틱) 형태로 바이올린 내부에 표시할 수 있습니다.
1. 필요한 라이브러리 불러오기
먼저 시각화와 데이터 처리에 필요한 라이브러리들을 임포트합니다.
import seaborn as sb import pandas as pd import matplotlib.pyplot as plt
2. CSV 파일에서 데이터 불러오기
Pandas의 read_csv() 함수를 사용해 CSV 파일을 DataFrame으로 읽어옵니다. 여기서는 크리켓 선수 정보가 담긴 Cricketers.csv 파일을 사용합니다.
dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\Cricketers.csv")3. 명시적 순서를 지정한 바이올린 플롯 그리기
x축에는 Academy(소속 아카데미), y축에는 Age(나이)를 배치하여 바이올린 플롯을 그립니다. order 파라미터에 원하는 카테고리 순서를 리스트로 전달하면, 기본 정렬 대신 지정한 순서대로 x축 항목이 배치됩니다. 또한 inner="stick" 옵션을 적용해 개별 관찰값을 막대 형태로 함께 보여줍니다.
sb.violinplot(x = 'Academy', y = "Age", order=["Western Australia", "Tasmania", "South Australia"], data = dataFrame, inner="stick")
전체 예제 코드
import seaborn as sb
import pandas as pd
import matplotlib.pyplot as plt
# CSV 파일에서 데이터를 Pandas DataFrame으로 불러오기
dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\Cricketers.csv")
# Academy와 Age로 바이올린 플롯 그리기
# order 파라미터로 명시적인 순서를 지정하여 "Academy" 기준으로 정렬
# inner="stick" 옵션으로 관찰값을 막대(스틱) 형태로 표시
sb.violinplot(x = 'Academy', y = "Age", order=["Western Australia", "Tasmania", "South Australia"], data = dataFrame, inner="stick")
# 그래프 화면에 출력
plt.show()실행 결과
위 코드를 실행하면 Western Australia, Tasmania, South Australia 순서로 아카데미별 나이 분포가 바이올린 형태로 표현되며, 각 바이올린 안쪽에 개별 선수 데이터가 얇은 막대(stick) 모양으로 나타납니다. 이를 통해 데이터의 전체적인 분포와 개별 관찰값을 동시에 확인할 수 있습니다.