1. 고급 시각화: 파이 차트, 선 그래프, 산점도
파이 차트 (Pie Chart)
특징
- 범주형 데이터의 비율 시각화
- 범주 5개 이하일 때 가독성 최고
- Seaborn 미지원, Matplotlib만 지원
# 기본 파이 차트
plt.pie(
grp.values,
labels=grp.index,
colors=my_palette,
autopct='%.1f%%', # 백분율 표시
explode=[0, 0, 0.1], # 특정 조각 강조
startangle=90, # 시작 각도
counterclock=False, # 시계방향
wedgeprops={ # 조각 스타일
'edgecolor': 'white',
'linewidth': 2
}
)
선 그래프 (Line Plot)
용도: 시간 흐름에 따른 변화 추세 파악
# 기본 선 그래프
sns.lineplot(data=df, x='계약월', y='거래금액')
# X축 눈금 처리 (전체 월 표시)
plt.xticks(range(1, 13))
# 다중 선 그래프
sns.lineplot(
data=df,
x='계약월',
y='거래금액',
hue='계약연도', # 연도별 구분
style='계약연도', # 선 모양 다르게
markers=True, # 점 표시
dashes=True # 선 스타일 자동 설정
)
범례(Legend) 위치 조정
# 그래프 오른쪽에 배치
plt.legend(
bbox_to_anchor=(1, 0.5),
loc='center left'
)
# 그래프 위쪽에 배치
plt.legend(
bbox_to_anchor=(0.5, 1),
loc='lower center',
ncol=3 # 가로로 3열
)
산점도 (Scatter Plot)
용도: 두 연속형 변수 간 선형 관계 확인
# 기본 산점도
sns.scatterplot(
data=df,
x='전용면적',
y='거래금액',
s=50, # 점 크기
alpha=0.3 # 투명도 (밀집도 표현)
)
# 연속형 변수로 색상 구분
sns.scatterplot(
data=df.sort_values('세대수'), # 중요 데이터가 위에 오도록 정렬
x='전용면적',
y='거래금액',
hue='q세대수', # 그라데이션 효과 ('q' 붙이기)
palette='viridis'
)
고급 기법
얕은 복사 vs 깊은 복사
# 얕은 복사 (메모리 주소 공유)
df1 = df # df 수정 시 df1도 변경됨
# 깊은 복사 (독립된 객체)
df2 = df.copy() # df 수정해도 df2는 영향 없음
이중 Y축 그래프
# 서로 다른 스케일의 두 그래프
ax1 = plt.gca()
ax2 = ax1.twinx() # 두 번째 Y축 생성
2. 산점도 심화와 상관관계 분석
회귀선(Regression Line) 추가
# 산점도 + 회귀선
sns.lmplot(
data=df,
x='전용면적',
y='거래금액',
ci=None, # 신뢰구간 제거
scatter_kws={ # 점 스타일
'color': 'gray',
'alpha': 0.3
},
line_kws={ # 선 스타일
'color': 'red',
'linewidth': 2
}
)
산점도 행렬(Pair Plot)
# 여러 변수 조합 한 번에
sns.pairplot(
data=df,
x_vars=['전용면적', '세대수', '주차대수'], # 독립변수
y_vars=['거래금액'], # 종속변수
kind='reg', # 회귀선 추가
plot_kws={
'scatter_kws': {'alpha': 0.3},
'line_kws': {'color': 'red'}
}
)
히트맵(Heatmap)과 상관관계
상관계수 행렬 생성
# 수치형 변수만 상관계수 계산
corr_matrix = df.corr(numeric_only=True)
히트맵 시각화
sns.heatmap(
corr_matrix,
cmap='RdYlBu', # 발산형 팔레트 (양수/음수 구분)
annot=True, # 상관계수 값 표시
fmt='.2f', # 소수점 둘째자리
annot_kws={
'size': 10,
'fontweight': 'bold'
}
)
히트맵 해석 전략
1. 목표 변수(Y)와의 관계 파악
- 거래금액과 상관계수 절댓값이 큰 변수 → 주요 예측 변수
- 예: 전용면적(0.85), 주차대수(0.72)
- 상관계수 0에 가까운 변수(계약월, 계약일) → 영향력 적음
2. 독립 변수(X) 간 관계 파악 (다중 공선성)
- 독립 변수끼리 상관계수 절댓값이 매우 높으면 문제
- 예: 경과년수 vs 입주년도 (-1.0)
- 둘 중 하나를 모델에서 제거 고려
상관계수 종류
피어슨(Pearson)
- 두 연속형 변수의 선형 관계 측정
- 정규분포 가정 필요
- 기본값
스피어만(Spearman)
- 데이터 순위 기반 상관관계
- 정규분포 가정 불필요
- 비선형 관계도 감지 가능
3. 대화형 시각화: Plotly
Plotly의 장점
정적 vs 대화형
- 정적: 이미지로 고정된 결과
- 대화형: 사용자와 상호작용 가능
주요 기능
- 툴팁(Tooltip): 마우스 올리면 상세 정보
- 필터링: 범례 클릭으로 표시/숨김
- 줌, 팬, 선택: 영역 확대/이동/선택
Plotly 실습
import plotly.express as px
# 산점도 생성
fig = px.scatter(
df,
x='전용면적',
y='거래금액',
size='세대수', # 점 크기
color='시군구', # 색상 구분
hover_data=['단지명'], # 툴팁 추가 정보
title='아파트 거래 분석'
)
fig.show()
Streamlit과의 결합
# 웹 기반 대시보드 구축
import streamlit as st
st.title('데이터 분석 대시보드')
st.plotly_chart(fig)
활용: 사용자가 직접 데이터 업로드하고 분석하는 서비스 제작 가능
4. 데이터 분석 이론과 비즈니스 사례
DIKW 피라미드
데이터 → 정보 → 지식 → 지혜
- 데이터(Data): 가공되지 않은 사실
- 예: 일별 판매량
- 정보(Information): 데이터 가공, 패턴 도출
- 예: 상품별 매출 합계
- 지식(Knowledge): 정보 + 경험, 의사결정 활용
- 예: 판매 비중 높은 상품 강화
- 지혜(Wisdom): 지식 융합, 새 가치 창출
- 예: 교차 판매 전략
4가지 분석 유형
복잡성과 가치가 높아지는 순서:
- 기술 분석 (Descriptive): 과거에 무슨 일이 있었나?
- 진단 분석 (Diagnostic): 왜 일어났나?
- 예측 분석 (Predictive): 앞으로 어떻게 될까?
- 처방 분석 (Prescriptive): 무엇을 해야 하나?
금융권 사례: 리스크 관리 모델링
배경
- 은행이 기업 고객 부도 가능성 예측 모델 요청
- 목표: 3년 이내 경제적 디폴트 예측
모델 논쟁
로지스틱 회귀 (채택됨)
- 화이트박스 모델
- 각 변수 영향 명확히 설명 가능
- 예측 정확도 다소 낮음
- 설명 가능성 중요한 금융권에 적합
머신러닝 (부결됨)
- 블랙박스 모델
- 예측 성능 높음
- 내부 동작 설명 어려움
- 규제 환경에서 채택 어려움
시사점
- 금융권: 예측 정확도보다 설명 가능성 우선
- 최근: XAI(설명 가능한 AI) 기술로 한계 보완
데이터 거버넌스
핵심 요소
- 데이터 표준화
- 메타데이터 관리
- 데이터 품질 관리
- CDO(Chief Data Officer) 역할
- 데이터 스튜어드 지정
사일로(Silo) 현상
- 부서 간 데이터 공유 안 됨
- 원인: 상대평가, 부서 간 경쟁
- 해결: 전사적 데이터 거버넌스 확립
5. 산업별 빅데이터 활용 사례
유통/이커머스
자라(Zara)
- PDA, RFID로 실시간 판매 데이터 수집
- 스페인 데이터 센터에서 전 세계 데이터 분석
- 지역별 맞춤 상품 기획·공급
아마존
- 과거 주문/검색 기록 분석
- 구매 예측 상품을 근처 창고에 미리 배치
- '예측 배송' 특허 보유
RFM 고객 세분화
- Recency(최근성): 마지막 구매일
- Frequency(빈도): 구매 횟수
- Monetary(금액): 구매 금액
- 3가지 기준으로 우수/이탈 고객 식별
금융
신용 평가 고도화
- 비금융 정보 활용 (통신 이력 등)
- Thin-filer 고객의 상환 능력 예측
- 예: 하나카드 × SKT
FDS (사기 탐지)
- 실시간 거래 패턴 분석
- 심야 결제, 급격한 위치 변경 감지
- 국민카드: 사고 차단율 13.8%p 증가
고객 이탈 예측
- 거래 내역, 불만 이력 분석
- 이탈 가능 고객 식별
- 선제적 방어 마케팅 (추가 혜택 제공)
제조/스마트 팩토리
예지 보전 (Predictive Maintenance)
- 센서 데이터 실시간 분석 (온도, 압력, 진동)
- 고장 전 예측 → 정비
- 삼성SDS: 불량 검출률 3.5배 향상
공급망 관리(SCM)
- 원자재 가격, 물류 경로 데이터 분석
- 비용 최소화, 리스크 관리
GE
- 산업 클라우드 기반 빅데이터 플랫폼
- 개발→제조→판매→서비스 전 과정 통합 분석
기타 산업
구글 데이터 센터
- 딥마인드 AI로 냉각 시스템 최적화
- 전력 사용량 40% 절감
후지쯔 농업
- 기후 데이터, 작물 이미지 클라우드 분석
- 최적 파종/수확 시기 예측
- 수확량 20-30% 증가
6. 프로젝트 기획 방법론
프로젝트 기획 5단계
1. 문제 선정
↓
2. 목표 변수(Y) 설정
↓
3. 가설 수립
↓
4. 필요 데이터 목록화
↓
5. 데이터 수집처 탐색
(확보 어려우면 1단계로 회귀)
실전 사례: 항공 마일리지 카드 캠페인
1. 분석 주제
- 할인/포인트 카드 사용자에게 마일리지 카드 추가 발급
- 목표: 전체 카드 이용 금액 증대
2. 목표 변수 & 가설
- Y: 추가 발급 동의(1) vs 거절(0)
- 가설: 여성, 30-40대, 고소득, 해외 결제 경험자
3. 데이터 준비
- BSS(Behavior Scoring System)가 가장 영향력 높은 변수
- 로지스틱 회귀로 반응 확률 예측
- 의사결정나무로 타겟 그룹 특징 파악
4. 결과
- 타겟 그룹: 무작위 대비 3배 이상 높은 반응률
- 적은 비용으로 높은 효율 달성
성공 사례의 공통점
- 새로운 데이터 확보: 과거 미활용 데이터 수집
- 패턴 발견과 예측: 잠재 패턴 도출, 미래 예측 모델
- 의사결정 활용: 수익 증대 or 비용 감소 → 이익 극대화
프로젝트 기획 예시: 직원 퇴사율 분석
주제: 직원 퇴사율 영향 요인
목표 변수(Y): 퇴사율 (최근 12개월 퇴사자/총 직원)
가설
- 만족도↓ → 퇴사율↑
- 평균 연봉↓ → 퇴사율↑
- 당기순이익 증가율↑ → 퇴사율↓
데이터 수집처
- 잡플래닛: 만족도
- 원티드: 평균 연봉
- 금융감독원: 당기순이익
추천 데이터 소스
공공 데이터
- 공공 데이터 포털
- 서울 열린 데이터 광장
산업별
- 금융 빅데이터 플랫폼
- 해양수산 빅데이터 거래소
- 환경 빅데이터 플랫폼
- 보건의료 빅데이터 플랫폼
- 문화 빅데이터 플랫폼
경진대회 플랫폼
- Kaggle (글로벌)
- 데이콘 DACON (국내)
학습 요약 및 실무 인사이트
시각화 핵심
그래프 선택 가이드
- 비율: 파이 차트 (5개 이하)
- 추세: 선 그래프
- 관계: 산점도 + 회귀선
- 상관: 히트맵
- 대화형: Plotly
범례 배치 원칙
- 그래프 영역 방해 금지
- bbox_to_anchor로 외부 배치
- ncol로 가로 정렬
분석 프로세스
CRISP-DM 강조점
- 비즈니스 목표 이해 (가장 중요)
- 문제 정의 명확화
- 데이터 확보 가능성 검토
- 분석 수행
- 결과 활용 → 성과 창출
모델 선택 기준
- 예측 정확도 vs 설명 가능성
- 산업/규제 환경 고려
- 금융: 화이트박스 선호
- 일반: 블랙박스도 활용
실전 팁
데이터 확보 전략
- 공공 데이터 포털 활용
- 경진대회 플랫폼(Kaggle, 데이콘)
- 웹 스크레이핑 (주의: 법적 검토)
- 리뷰 데이터 대안 활용
프로젝트 성공 요소
- 명확한 문제 정의
- 현실적 데이터 확보 계획
- 도메인 전문성
- 비즈니스 가치 창출 지향
'공부' 카테고리의 다른 글
| [웅진씽크빅X러닝스푼즈]데이터 분석 부트캠프 2기 1회차(3) (2) | 2025.12.21 |
|---|---|
| [웅진씽크빅X러닝스푼즈]데이터 분석 부트캠프 2기 1회차(2) (0) | 2025.12.21 |
| [웅진씽크빅X러닝스푼즈]데이터 분석 부트캠프 2기 1회차(1) (0) | 2025.12.21 |