단변량 분석
개별 특성을 이해하기 위해 분포 그래프, 히스토그램, 상자수염 그래프, 개수 그래프를 사용합니다.
단변량 분석은(는) CoddyKit의 무료 Learn AI with Python 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Learn AI with Python 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
단변량 분석이란 무엇인가요?
단변량 분석은 한 번에 하나의 변수를 살펴보며 분포의 중심, 퍼짐, 형태, 특이한 값을 이해하는 방법입니다.
적절한 그래프는 변수의 자료형에 따라 달라집니다.
- 수치형 → 히스토그램, KDE, 상자 그림, 바이올린 그림
- 범주형 → 개수 그래프(빈도를 나타내는 막대 그래프)
그래프 작성 라이브러리 설정
매트플롯립(plt)과 시본(sns)을 사용합니다. 시본은 매트플롯립을 기반으로 하며 통계 그래프에 더 보기 좋은 기본 설정을 제공합니다.
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
sns.set_theme(style="whitegrid")
df = pd.read_csv("data.csv")plt.hist로 히스토그램 그리기
히스토그램은 수치형 값을 구간으로 나누고 각 구간에 속하는 값의 개수를 셉니다. 이를 통해 분포의 전반적인 형태를 확인할 수 있습니다.
bins 인수는 해상도를 조절합니다. 구간이 너무 적으면 구조가 가려지고, 너무 많으면 잡음이 늘어납니다.
plt.hist(df["age"], bins=30, edgecolor="black")
plt.xlabel("Age")
plt.ylabel("Count")
plt.title("Age Distribution")
plt.show()KDE 그래프 — 부드러운 밀도
커널 밀도 추정(sns.kdeplot)은 분포를 근사하는 부드러운 곡선을 그립니다. 들쭉날쭉한 히스토그램 막대보다 읽기 쉬울 수 있습니다.
sns.histplot(..., kde=True)를 사용하면 두 그래프를 함께 그려 막대 위에 부드러운 곡선을 겹쳐 표시할 수 있습니다.
sns.kdeplot(df["age"], fill=True)
plt.show()
sns.histplot(df["age"], bins=30, kde=True)
plt.show()Skew 찾기
Skew는 비대칭성을 측정합니다. 오른쪽으로 긴 꼬리는 오른쪽(양의) skew이고, 왼쪽으로 긴 꼬리는 왼쪽(음의) skew입니다.
소득, 가격, 개수 데이터는 대개 오른쪽으로 치우쳐 있습니다. df[col].skew()로 수치화할 수 있으며, 0에서 크게 벗어난 값은 skew가 있음을 나타냅니다.
print(df["income"].skew()) # e.g. 2.3 -> strong right skew
sns.histplot(df["income"], bins=40, kde=True)
plt.show()이봉성 찾기
이봉형 분포에는 두 개의 봉우리가 있습니다. 이는 서로 다른 두 집단이 섞여 있다는 신호인 경우가 많습니다(예: 하나의 가격 열에 두 종류의 제품이 섞여 있는 경우).
KDE 그래프를 사용하면 이봉성이 뚜렷하게 보입니다. 두 개의 봉우리가 있는지 살펴보세요. 숨겨진 범주형 변수가 이러한 분리를 설명할 수 있다는 단서입니다.
sns.kdeplot(df["price"], fill=True)
plt.title("Two peaks suggest two subpopulations")
plt.show()sns.boxplot으로 상자 그림 그리기
상자 그림은 중앙값(가운데 선), 사분위 범위(IQR, 상자), 그리고 약 1.5배 IQR까지 뻗은 수염을 보여 줍니다. 수염을 벗어난 점은 이상치로 표시됩니다.
sns.boxplot(x=df["income"])
plt.title("Income — box plot")
plt.show()이상치와 IQR 규칙
상자 그림은 IQR 규칙을 사용합니다. 어떤 점이 Q1 - 1.5*IQR보다 작거나 Q3 + 1.5*IQR보다 크면 이상치입니다.
경계값을 직접 계산하여 극단적인 값을 필터링하거나 상한·하한으로 제한할 수 있습니다.
q1 = df["income"].quantile(0.25)
q3 = df["income"].quantile(0.75)
iqr = q3 - q1
low, high = q1 - 1.5*iqr, q3 + 1.5*iqr
outliers = df[(df["income"] < low) | (df["income"] > high)]
print(len(outliers), "outliers")sns.violinplot으로 바이올린 그림 그리기
바이올린 그림은 상자 그림과 좌우가 대칭인 KDE를 결합한 것입니다. 각 높이에서의 폭이 밀도를 나타내므로, 형태와 요약 통계를 한 번에 확인할 수 있습니다.
바이올린 그림은 단순한 상자 그림으로는 드러나지 않는 왜도나 이봉성을 보여 주는 데 유용합니다.
sns.violinplot(x=df["age"])
plt.title("Age — violin plot")
plt.show()범주형 변수의 개수 그래프
범주형 열에는 sns.countplot을 사용하세요. 이는 범주별 빈도를 나타내는 막대 그래프이며, value_counts()를 시각적으로 표현한 것입니다.
order 인수를 사용하면 읽기 쉽도록 빈도순으로 막대를 정렬할 수 있습니다.
order = df["city"].value_counts().index
sns.countplot(y="city", data=df, order=order)
plt.title("Records per city")
plt.show()적절한 단변량 그래프 선택하기
빠른 선택 가이드:
- 수치형 열의 형태 → 히스토그램 또는 KDE
- 이상치와 사분위수 → 상자 그림
- 형태와 요약 정보를 함께 확인 → 바이올린 그림
- 범주별 빈도 → 개수 그래프
빠른 확인: 그래프 선택
하나의 수치형 열에서 중앙값, 사분위수, 이상치를 확인하려고 합니다.
복습: 단변량 분석
이제 한 번에 하나의 변수를 살펴보는 방법을 배웠습니다.
- 분포의 형태를 확인하는
plt.hist및sns.kdeplot - 비대칭성을 수치화하는
.skew()와 이봉성을 확인하는 KDE 봉우리 - 이상치를 확인하는
sns.boxplot및 IQR 규칙 - 형태와 요약 정보를 함께 확인하는
sns.violinplot - 범주별 빈도를 확인하는
sns.countplot
다음에는 두 개 이상의 변수 사이의 관계를 살펴봅니다.
자주 묻는 질문
“단변량 분석” 강의는 무료인가요?
네 — “단변량 분석” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Learn AI with Python 강의 전체를 잠금 해제할 수 있습니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
“단변량 분석”에서 뭘 배우나요?
개별 특성을 이해하기 위해 분포 그래프, 히스토그램, 상자수염 그래프, 개수 그래프를 사용합니다. 브라우저에서 직접 실행하는 실습 코드로 Learn AI with Python을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Learn AI with Python을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Learn AI with Python은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“단변량 분석” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Learn AI with Python 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Learn AI with Python 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.