데이터 시각화
Python 데이터 시각화
- 데이터 시각화: 데이터를 그래프나 차트 등 시각적 형태로 표현하는 과정
- matplotlib: Python의 대표적인 표준 시각화 라이브러리, 다양한 종류의 정적, 애니메이션, 인터랙티브 시각화 생성 가능
- seaborn: matplotlib을 기반으로 하며, 더 아름답고 통계적으로 의미 있는 고급 시각화 기능을 간편하게 제공
- 임포트:
import matplotlib.pyplot as plt # matplotlib의 pyplot 모듈
import seaborn as sns # seaborn 라이브러리
히스토그램 histogram
- 데이터를 구간별로 나눠, 각 구간의 사례 수를 막대그래프로 그린 것
- Python에서 데이터 시각화를 위한 라이브러리 "시본"을 임포트
import seaborn as sns
- histplot 함수를 이용해서 히스토그램 그리기
- 데이터는 df로 지정
- x축(가로)은 price로 지정
- 'price'는 변수가 아닌 df의 한 열 이름이므로 따옴표를 쳐서 문자열로 표시
sns.histplot(x='price', data=df)
커널 밀도 추정 kernel density estimation
- 데이터 밀도 추정 기법
sns.kdeplot(x='price', data=df)
데이터 포인트 눈금으로 표시
- 아래 두 코드를 한 셀에서 실행
sns.kdeplot(x='price', data=df)
sns.rugplot(x='price', data=df)
히스토그램 + 커널 밀도 추정
- kde=True로 설정하면 데이터의 밀도를 추정하여 표시
sns.histplot(x='price', data=df, kde=True)
ECDF
- ECDF(Empirical Cumulative Distribution Function), 즉 '경험적 누적 분포 함수'
- 히스토그램과 달리 구간 설정 필요 X
- 커널 밀도 추정과 달리 추정치가 아님(경험적)
- 데이터의 분위수를 쉽게 파악 가능
sns.ecdfplot(data=df, x="price")
비교
- 모델별로 색상(hue)을 달리해서 그림
sns.kdeplot(data=df, x="price", hue="model") # 왼쪽
sns.ecdfplot(data=df, x="price", hue="model") # 오른쪽
상자-수염 그림 (Box Plot)
sns.boxplot(x='범주형열', y='숫자형열', data=데이터프레임)또는sns.boxplot(data=데이터프레임의_숫자형열):- 데이터의 사분위수, 중앙값, 이상치 등을 상자 그림으로 표현
- 범주별 데이터 분포 비교에 유용
sns.boxplot(data=df, y='price') # 가격 분포
sns.boxplot(data=df, x='model', y='price') # 모델별 가격 분포
산점도
- 각각의 사례를 점으로 표시
sns.scatterplot(x='mileage', y='price', data=df)
연식을 점의 크기로
sns.scatterplot(x='mileage', y='price', size='year', data=df)
추세선 추가
sns.lmplot(x='mileage', y='price', data=df)
등고선 추가
- 두 줄을 한 셀에
sns.scatterplot(x='mileage', y='price', data=df)
sns.kdeplot(x='mileage', y='price', data=df, color='lightgray', alpha=0.5)
선 그래프
sns.lineplot(x='x축_열이름', y='y축_열이름', data=데이터프레임)- 용도: 시간의 흐름에 따른 데이터 변화, 연속적인 값들의 추세 시각화
- 주요 인자:
x: x축에 해당하는 데이터프레임의 열 이름y: y축에 해당하는 데이터프레임의 열 이름data: 사용할 데이터프레임 객체hue: 특정 열의 값에 따라 선 색상 구분estimator: y값의 집계 방법 (기본값은 평균)
sns.lineplot(data=df, x='year', y='price') # 연도별 가격
sns.lineplot(data=df, x='year', y='price', hue='model') # 연도별 모델별 가격
sns.lineplot(data=df, x='year', y='price', estimator='std') # 연도별 표준편차
막대 그래프
sns.barplot(x='x축_범주형열', y='y축_수치형열', data=데이터프레임):- 범주형 데이터에 따른 수치형 데이터의 크기(예: 평균, 합계 등) 비교
sns.barplot(data=df, x='model', y='price') # 모델별 가격 평균
sns.countplot(x='x축_범주형열', data=데이터프레임):- 범주형 데이터의 각 항목별 빈도수(개수) 시각화 (y축 별도 지정 불필요)
sns.countplot(data=df, x='model') # 모델별 개수
퀴즈
사용자 정보 입력
퀴즈를 시작하기 전에 이름과 소속을 입력해주세요.