< 데이터 시각화 >
데이터 시각화(Data Visualization)란 숫자와 텍스트로 이루어진 데이터를 그래프, 차트, 맵 등을 활용하여 시각적으로 표현하는 기술
주로 사용 라이브러리
- Matplotlib: 가장 중요하고 기본적인 라이브러리, 커스터마이징 유용
n import matplotlib.pyplot as plt
u import numpy as np #이 세개는 거의 세트로 같이 씀
u import pandas as pd
n plt.plot(x, y, marker=’0’, linestyle=’-‘, color=’b’) #막대그래프 그리기
u marker : 꼭지점에 시각적 표시
u linestyle : 실선
u color : 라인 색
u plt.show() : print문과 유사 #Matplotlib 전용 프린트문
- Seaborn: 깔끔한 디자인과 강력한 기능 제공 #필수X
n import seaborn as sns
n sns.barplot(x=’카테고리’, y=’값’, data=df) #막대그래프 그리기
- Plotly: 대화형(Interactive) 그래프를 지원
n 정적 그래프보다 데이터를 동적으로 탐색하는 데 적합
n 3D 그래프, 지도 사각화, 확대/축소 등 고급 기능 제공
n import plotly.express as px
수치형(연속형) 데이터 분포 시각화 – 단변량
1. 히스토그램(Histogram) #수치형 - 연속형
A. plt.hist(data, bins=??, color=?, edgecolor=?, alpha)
#필수 #bins(구간갯수)
2. 밀도 그래프(Density Plot)
A. sns.kdeplot(data, shade=True, color=?) #shade(경계선)
3. 박스 플롯(Box Plot)
A. ○ ○ min-----------Q1---Q2---Q3----------max ○
#여기서 min, max는 이상치를 제외한 min, max # ○: 이상치
B. 중앙값 Q2 / 박스Q1~Q3, IQR / 수염(최소 최대값)
C. plt.boxplot(data, labels=[‘A’, ‘B’, ‘C’, ‘D’])
(수치형)시각화를 통한 인사이트 도출 – 이변량
1. 산점도(Scatter Plot) #연속형 – 연속형
A. plt.scatter(x, y, color=?, alpha=?, label=?)
B. 두 연속형 데이터의 관계를 확인하고 싶을 때 사용
2. 페어 플롯(Pair Plot) : 변수 간 산점도
A. 여러 변수 간의 관계를 한꺼번에 그려줌
B. df=sns.load_dataset(“iris”) #iris 데이터셋 활용
sns.pairplot(df, hue=’species’)
3. 히트맵(Heatmap – Seaborn 활용) #필수X but 범주형 가능 이점
A. corr( ) : 상관계수
sns.heatmap( )
★데이터가 1종류 숫자형★ #오늘의 핵심
n 히스토그램: plt.hist(data, bins)
n 밀도함수: sns.kdeplot(data)
n 박스: ply.boxplot(data)
★데이터가 2종류 숫자형★
n 연속 - 연속: 산점도 plt,scatter(x, y)
n (연속 - 연속)다변수 pair plot: sns.pairplot(df, hue)
★데이터가 1종류 범주형★
n 막대: plt.bar( )
n 카운트: sns.countplot( )
n 파이: plt.pie( )
★데이터가 2종류 범주형★
n 모자이크: mosaic(crosstab.stack( ))
단변량 범주형 데이터 시각화
1. 막대 그래프(Bar Chart)
A. plt.bar(x, y)
2. 카운터 플롯(Count Plot – Seaborn 활용)
A. y축은 항상 데이터 수.
B. sns.countplot(data)
3. 파이 차트(Pie Chart)
A. 전체에서 각 항목이 차지하는 비율을 표현
B. plt.pie(data)
이변량 범주형 데이터 시각화 (범주 – 범주)
1. 모자이크 플롯(Mosaic Plot – statsmodels 활용)
A. from statsmodels.graphics.mosaicplot import mosaic
B. cross_tab = pd.crosstab( ) #교차표(빈도수) 생성 필수
mosaic(cross_tab.stack( )) #안정성을 위해 stack()사용
시계열(날짜, 시간) 데이터 시각화
- plt.plot(dates) # Line Chart
클러스터 맵(Cluster Map)
데이터를 그룹화하여 계층적 군집화 결과를 보여주는 시각화 방법
3D 스캐터 플롯 (3D Scatter Plot)
세 개의 변수 간의 관계를 3차원 공간에 점으로 표시하는 그래프
< 데이터 분석 >
EDA (탐색적 데이터 분석)
수집한 데이터 안에 어떤 정보가 들어있는지 탐색하고 이해하는 과정이다. 전체적인 특성과 패턴을 파악하는 과정.
1. 단변량 분석 #단변량이라고 컬럼이 1개인게 아니라 DF에서 하나의 컬럼만 분석해도 됨
- 숫자형 변수 (히스토그램, 밀도함수, 박스)
# plt.boxplot보다 sns.boxplot을 많이 쓰게 될 것
- 범주형 변수 (막대차트, 파이차트) # 카운터플롯은 막대차트와 비슷(단 y가 필요X)
n 파이차트를 그리기 전에 value_counts 필요 #파이차트는 범주가 2~5개일 때 효과적
# 가설 검정
표본데이터를 이용해 모집단에 대한 주장의 진위 여부를 통계적으로 판단하는 절차
1. 가설 설정
A. 귀무가설(H0) : 변화 없음, 차이 없음.(기본 존재 가정).
B. 대립가설(H1) : 변화 있음, 차이있음. (나의 주장)
2. 유의수준 결정 (a)
- 귀무가설이 참일 때 “오류를 어디까지 허용할래?’’ 결정하는 것
3. 검정방법 결정
4. 검정통계량 계산
5. 채택/기각 여부 판단
A. p-value 값이 작을수록 좋다 # 유의수준보다 작으면 내 주장 채택 #
2. 이변량 분석
A. 숫자형-숫자형 # 즉 연속형-연속형
i. 산점도 # 그래프
ii. 상관계수(Correlation Coefficient): 관계의 방향성(+,-)과 강도(+1,-1,0)를 수치화
iii. 상관분석에 scipy 이용 # from scipy.stats import pearsonr
B. 범주형-숫자형
i. 막대 그래프
ii. 박스 플롯
#박스는 수치형만 가능하지만 숫자형을 범주별로 나눠서 박스를 각각 그릴 수 있다.
iii. 두 개의 집단간에 비교할 땐 (독립표본)T-검정 통계 모형을 사용
#이유 없음 그냥 정해진거임 # from scipy.stats import ttest_ind
iv. 세 개 이상의 집단 간 평균 차이 비교 : 일원분산 분석(ANOVA)
C. 범주형-범주형
i. 변수 간에 연관성이 있는지 확인하는 데 사용
ii. 누적 비율 막대 그래프
iii. 교차 # pd.crosstab( )
iv. 카이제곱 검정 #from scipy.stats import chi2_contingency
D. 숫자형-범주형 # 범주형-숫자형 과 같다. 차이X
i. 히스토그램 + KDE plot # t검정 사용?
< 데이터 수집 >
내부 데이터(Internal Data)
- ERP: 기원의 자원 관리 시스템(구매, 생산, 재고, 인사 등)
- CRM: 고객 관계 관리(고객 정보, 구매 이력, 상담 기록, 고객 반응)
- 로그 데이터: 방문자 수 클릭 데이터(보안 관리, 성능 분석, 모니터링)
외부 데이터(External Data)
- API: 인증키 같은 존재
- 오픈 데이터: 공개된 공짜 데이터
- 웹 크롤링: 인터넷 상 정보를 자동 수집
데이터 파이프라인(Data Pipeline): 데이터를 수집→처리→저장(→분석)하는 전체 과정 흐름
데이터 관리의 원칙
1. 데이터 품질 유지
2. 데이터 보안 및 개인정보 보호
3. 데이터 거버넌스
4. 실시간 데이터 처리 및 업데이트
API
공공데이터 포털(Open Data Portal): 정부 및 공공기관에서 제공하는 데이터에 누구나 접근 가능한 플랫폼
# json 파일 형식은 파이썬에서 dictionary 와 생긴 모양이 닮았다. (json은 파이썬 형식은 아님)
requests 와 json 라이브러리를 이용하여 json파일을 파이썬에서 사용할 데이터로 만듦
웹 크롤링
requests와 BeautifulSoup 라이브러리 이용 HTML을 파이썬에서 읽을 수 있게 파싱(파이썬 객체로 변환)
# .stripped 매서드: 공백 제거