바이올린 차트
- 박스플롯의 특징(중앙값, 사분위수, 이상치)과
히스토그램·밀도 곡선의 특징(데이터 분포 모양)을 합쳐 데이터의 분포와 집중 정도를 한눈에 볼 수 있게 해줌.
- 박스플롯(Boxplot)과 커널 밀도 추정(KDE)를 결합한 시각화
- 데이터의 분포 모양 + 중앙값 + 사분위수 등을 동시에 보여줌
- 데이터의 중심 경향, 이상치 유무, 밀도를 알 수 있음.
- 일변량 차트
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
# 예시 데이터 생성
np.random.seed(0)
data = pd.DataFrame({
"group": np.repeat(['A', 'B', 'C'], 100),
"value": np.concatenate([
np.random.normal(loc=0, scale=1, size=100),
np.random.normal(loc=2, scale=1.5, size=100),
np.random.normal(loc=-1, scale=0.5, size=100),
])
})
# 바이올린 플롯 그리기
plt.figure(figsize=(8, 5))
sns.violinplot(x="group", y="value", data=data, inner="box", palette="Pastel1")
plt.title("Violin Plot by Group")
plt.xlabel("Group")
plt.ylabel("Value")
plt.show()

산점도
- 두 개의 연속형 변수 간의 관계를 점(좌표)으로 나타낸 그래프
- x축은 독립변수, y축은 종속변수에 주로 배치
- 데이터의 분포, 경향, 상관관계, 이상치 등을 시각적으로 파악 가능
- 이변량 차트
import seaborn as sns
import matplotlib.pyplot as plt
# 아이리스 데이터셋
iris = sns.load_dataset("iris")
plt.figure(figsize=(8,6))
sns.scatterplot(x="sepal_length", y="petal_length", hue="species", data=iris, s=80)
plt.title("Scatter Plot - Sepal vs Petal Length")
plt.show()

줄기잎 차트
- 데이터의 분포를 정리하여 나타내는 탐색적 자료 분석(EDA) 기법
- 각 데이터를 줄기(stem)와 잎(leaf)으로 나누어 표현
- 줄기 : 큰 자릿수 (십의 자리, 백의 자리 등)
- 잎 : 작은 자릿수 (일의 자리 등)
- 일변량 차트
ex) 데이터가 23, 25, 27, 31이면
2 | 3 5 7
3 | 1
평행 좌표 그래프
- 다차원 데이터를 시각화하는 기법
- 각 차원(변수)을 평행한 축(세로선)으로 두고, 개별 데이터 포인트를 축들을 연결하는 선으로 표현
- 변수를 표시한 세로축 여러 개를 나란히 늘어놓음으로써 한 번에 많은 데이터를 비교하기에 유용한 그래프
ㄴ 많은 양의 자료를 효율적으로 표시하기 힘듦
- 다변량 데이터에서 패턴, 유사성, 이상치를 파악할 수 있음
- 변수 5개 → 축 5개를 나란히 세움
- 데이터 한 개 → 5개 축을 잇는 선 하나
- 다차원 변수 간의 패턴 (비슷한 데이터는 비슷한 궤적을 그림)
- 클래스 간 구분 가능성 (색으로 그룹 구분 가능)
- 이상치(Outlier) (패턴과 동떨어진 선)
- 변수 간 관계와 경향성 (특정 축에서 교차가 많은 경우 상관관계 시사)
- 다변량 차트
import pandas as pd
from pandas.plotting import parallel_coordinates
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
# 아이리스 데이터 불러오기
iris = load_iris()
df = pd.DataFrame(data=iris.data, columns=iris.feature_names)
df['target'] = [iris.target_names[i] for i in iris.target]
plt.figure(figsize=(10,6))
parallel_coordinates(df, 'target', cols=iris.feature_names, color=['r','g','b'])
plt.title("Parallel Coordinates Plot - Iris Dataset")
plt.show()

선 차트
- 시간 흐름에 따른 추세 분석
- 변수 간 비교
- 단변량, 다변량 차트
import matplotlib.pyplot as plt
# ==============================
# 일변량 선차트 예제
# ==============================
x = [1, 2, 3, 4, 5] # 시간이나 순서
y = [2, 3, 5, 7, 11] # 단일 변수 값
plt.figure(figsize=(10, 4))
plt.plot(x, y, marker='o', linestyle='-', color='b', label='data')
plt.title('Line Chart')
plt.xlabel('time')
plt.ylabel('value')
plt.legend()
plt.grid(True)
plt.show()
# ==============================
# 다변량 선차트 예제
# ==============================
y1 = [2, 3, 5, 7, 11]
y2 = [1, 4, 6, 8, 10]
y3 = [3, 2, 5, 6, 9]
plt.figure(figsize=(10, 4))
plt.plot(x, y1, marker='o', linestyle='-', color='r', label='A')
plt.plot(x, y2, marker='s', linestyle='--', color='g', label='B')
plt.plot(x, y3, marker='^', linestyle='-.', color='b', label='C')
plt.title('Line Chart')
plt.xlabel('time')
plt.ylabel('value')
plt.legend()
plt.grid(True)
plt.show()


Box Plot
- 데이터의 중심·분산·대칭 정도를 빠르게 파악
- 중앙값(Median), 사분위수(Q1, Q3), IQR, 최소/최대, 이상치 파악
- 여러 집단의 분포를 비교하기에 용이
- 일반적으로 IQR 밖의 데이터를 점(●)으로 표시
- 단변량, 다변량 차트

'개발 > Python' 카테고리의 다른 글
| 합성곱 신경망 (Feature Map) (0) | 2025.10.20 |
|---|---|
| 신경망 파라미터 개수 (0) | 2025.10.20 |
| Ridge, Lasso, Elastic Net (2) | 2025.10.11 |
| 스케일링 (0) | 2025.10.11 |
| Seq2Seq, 어텐션, 트랜스포머 (0) | 2025.10.09 |
댓글