상세 컨텐츠

본문 제목

파이썬 데이터 전처리 & 시각화

카테고리 없음

by 민도리 2025. 11. 5. 22:41

본문

I. 분석가 유형 및 목표

  1. BA (비즈니스 분석가)
    • 비즈니스 문제 이해 → 요구사항 정의 → 의사결정 지원
    • 프로세스 개선, 비즈니스 모델 분석, 요구사항 관리
  2. 프로덕트 분석가 (Product Analyst)
    • 제품 성과 평가/개선, 사용자 행동 분석, A/B Testing.
    • 사용자 행동, 제품 성능 관련 데이터 분석, A/B 테스트, 사용자 경로 분석
  3. 데이터 분석가 (Data Analyst)
    • 주로 정형 데이터 분석, 데이터 추출/정제/보고서/시각화 생성
    • SQL/Excel 활용, 보고서/시각화 생성 등 기술 활용 업무 수행
  4. BI 분석가
    • 비즈니스 인텔리전스 플랫폼 도구 사용, 시각화 보고서 작성
    • 내부 데이터 시각화, BI 도구 사용, Dashboard (대시보드) 구축/작성, 의사결정 정보 제공.
  5. 데이터 사이언티스트 (Data Scientist)
    • 복잡한 비즈니스 문제 해결, 통계/ML/DL 모델 구축 → 예측/패턴 발견
    • 통계/머신러닝/딥러닝 알고리즘으로 모델 구축 (모델링-평가-해석 END-TO-END 작업)

II. 데이터 전처리 (Data Preprocessing)

  • 목적: 설득을 위한 데이터 전달이 시각화의 목표
  • 데이터 전처리: 시각화 전 목표 설정 (AS IS/TO BE), 원하는 데이터를 보기 위한 모든 활동
  • 고려사항: 무엇을 확인할지, 어떤 의사결정을 위해 필요한지, 무엇을 얻고자 하는지

Pandas (판다스) 데이터 구조

Excel 대비, 대용량 데이터 처리 및 자동화/프로그램 기능, 복잡 분석, 확장성/유연성.

 

pandas 활용 시

  • 대용량 데이터 처리 가능, 다양한 연산/빠른 처리
  • 조작 가능(정렬, 필터링, 집계, 결측값 처리 등)
  • 데이터 시각화 기능
  • 데이터 구조화/분석 가능(DataFrame 자료형 제공, 표 형태 분석 가능)

핵심 자료구조

  • DataFrame: 표 형태의 2차원 자료구조.
  • Series: 1차원 배열/단일 컬럼.
  • 컬럼: 하나의 속성을 가진 데이터 집합
  • Index: 행 식별 고유값. 데이터프레임 또는 시리즈의 각 행 요소에 대한 식별자
    • 인덱스 특징
      • 고유성 (Unique) : 각 행을 유일하게 식별 가능해야 함.
      • 불변성 (Immutable) : Index 객체 내용 자체는 수정 불가. (교체만 가능)
      • 조작 및 탐색 : 인덱스 기준으로 특정 데이터 선택/접근 가능 (loc).
      • 정렬 : 인덱스 레이블 기준으로 데이터프레임 행 전체 정렬 가능 (sort_index).
    • 인덱스 활용:
      • 새 인덱스 설정: set_index() → 특정 컬럼을 기준으로 새로운 인덱스 설정
      • 기본 인덱스 설정: reset_index() → 현재 인덱스를 컬럼으로 변환하고, 0부터 시작하는 새 정수 인덱스 부여
      • 직접 값 교체: 리스트 형태 할당 → 인덱스 값을 담은 새 리스트를 df.index직접 할당하여 인덱스 전체를 교체
# 새 인덱스 설정
df.set_index('컬럼명', inplace=True)

# 기본 인덱스 설정
df.reset_index(inplace=True)

# 직접 값 교체
df.index = ['A', 'B', 'C', ...]

 

Index 활용 및 관리

  • 확인: Pandas 설치 및 라이브러리 불러오기
  • 데이터 저장: pd.to_csv, pd.to_excel
# 라이브러리 불러오기
import pandas as pd

# 데이터 저장
df.to_csv('file.csv', index=False)

2-1. 칼럼 

  • 칼럼 (Column): 데이터프레임의 열(변수). Series 객체로 구성. 고유 라벨을 가짐 세로 방향 데이터
    • 고유 라벨, 다양한 데이터 타입 포함,
    • Series 객체로 구성 (1차원 배열 유사)
    • 데이터 조작 및 접근 인터페이스 제공
  • 칼럼명 변경하기: data.column으로 확인, 파일 불러올 때 인코딩 지정 필수

2-2. 데이터 확인

  • 데이터 확인
    • Head(n): n개의 행 보여주기
    • info(): 데이터 타입, Non-null Count (결측치 아닌 개수) 확인.
    • describe(): 기초 통계량 (수치형) 제공.
# 데이터 확인
df.head(5)
df.info()
df['컬럼명'].describe()
  • 데이터 전처리
    • 결측치 (Missing Value): isnull() / isna() 확인, dropna() 제거.
    • 중복 데이터 (Duplicates): duplicated() 확인, drop_duplicates() 제거.
    • 이상치 (Outlier): quantile 활용 (IQR/Z-score 방식), 제거/대체 처리 필요.  as upbounded/lowerbounded 확인
    • 데이터 타입 변경: astype(new_dtype) 사용, dataframe['칼럼명'] 선택 방식으로 변경
# 결측치 확인
df.isnull().sum()

# 결측치 제거
df.dropna(how='any')

# 중복 제거
df.drop_duplicates(subset=['컬럼1'])

# 데이터 타입 변경
df['컬럼명'] = df['컬럼명'].astype('int')

2-3. 데이터 선택

  • iloc[로우, 컬럼]: Integer Location (인덱스 번호)로 선택.
  • loc[로우, 컬럼]: Label Location (이름)으로 선택.
  • 선택 방식: 1개 컬럼 선택 (리스트, 슬라이싱, 순서 선택), 2개 이상 셀 선택 (리스트 형태, 특정 범위 지정 등)
# 인덱스 번호 선택 (iloc)
df.iloc[행번호, 열번호]

# 이름 선택 (loc)
df.loc['행이름', '열이름']

# 복수 컬럼 선택
df[['컬럼1', '컬럼2']]

2-4. 불리언 인덱싱 (Boolean Indexing)

  • Boolean Indexing: 조건에 따라 데이터를 선택/필터링, 조건식을 사용해 행 필터링
    1. 단일 조건 필터링 2) 여러 조건 필터링 3) 조건에 따른 특정 컬럼 필터링 4) isin() 을 활용한 필터링
# 단일 조건 필터링
df[df['컬럼명'] > 100]

# 여러 조건 필터링
df[(df['C1'] > 10) & (df['C2'] == 'A')]

# isin() 활용
df[df['지역'].isin(['서울', '부산'])]

2-5. 데이터 병합

  • concat 함수: 데이터프레임을 위아래/좌우 연결
    • axis: 연결 축 지정, ignore_index: True 시 새 인덱스 생성
# concat (위아래)
pd.concat([df1, df2], axis=0)
  • merge 함수: 데이터 좌우 합치기 (SQL Join과 유사) How (inner/outer/left/right) 방식 지정.
    • Left/Right: 병합 기준 데이터프레임
    • How: 병합 방법 (inner, outer, left, right)
    • On: 병합 기준 열 이름 지정, Left_on / Right_on: 열 이름이 다를 때 사용
# merge (SQL Join)
pd.merge(df1, df2, on='키_컬럼', how='inner')

2-6. 데이터 집계

  • groupby() : 데이터프레임을 그룹화, 그룹 단위로 분할-적용-결합 기능 제공
  • pivot_table() : 피벗 테이블, 데이터를 재구성하여 요약/집계된 정보를 보여줌
# groupby
df.groupby('그룹컬럼')['집계컬럼'].mean()

# pivot_table
pd.pivot_table(df, index='인덱스컬럼', values='값컬럼')

2-7. 데이터 정렬 

  • sort_value(): 컬럼 기준 정렬
  • sort_index(): 인덱스 기준 정렬
# 컬럼 기준 정렬
df.sort_values(by='컬럼명', ascending=False)

# 인덱스 기준 정렬
df.sort_index(ascending=True)

III. 데이터 시각화 및 통계 개념

  • 목적: 패턴 발견/이해, 의사결정 지원, 효과적인 커뮤니케이션
  • 공유: 보고서/프레젠테이션, 의사결정자와의 논의, 간결/효과적 커뮤니케이션

3-1.그래프 도구/활용

  • Matplotlib: 다양한 그래프 생성 도구, plot() 활용  plt.plot(x, y)
  • Line plot: 연속형 데이터/시간 변화 추이 시각화
  • Bar plot: 범주형 데이터/카테고리별 값 크기/빈도 비교 (막대가 분리)
  • Histogram: 연속형 데이터/데이터 분포/빈도 패턴 이해 (막대가 붙어있음)  sns.histplot(data=df, x='컬럼명')
  • Pie chart: 범주형의 비율/전체에 대한 상대적 비율 시각화
  • Box plot: 연속형 데이터의 분포 중앙값/4분위수/최소값/최대값/이상치 확인  sns.boxplot(data=df, y='컬럼명')
    • 중앙값 (Median): 정렬된 데이터의 50% 지점
    • 4분위수 (Quartile): 데이터를 4등분하는 지점
    • 이상치 (Outlier): 정상 범위 벗어난 극단값 (Box Plot 바깥 점)
  • Scatter plot : 두 변수 간 관계 확인  sns.scatterplot(x='컬럼X', y='컬럼Y', data=df)

3-2. 산점도(Scatter plot) / 상관 관계 

두 변수 간 관계/군집/이상치 확인
  • 상관 관계: 두 변수가 함께 변화하는 경향.
    • 양의 상관(오른쪽 위로 상승하는 경향)
    • 음의 상관(왼쪽 위로 상승하는 경향)
    • 무 상관(무작위 분포)
  • 상관 관계 강도: 점의 밀집 정도, 점의 방향성 (일직선에 가까울수록 강함)
  • 상관 계수 (Correlation Coefficient) : 통계적 방법으로 강도를 수치 계산
    • 피어슨 (Pearson): 선형 관계 측정 (-1~1), 공분산을 표준편차로 정교화
    • 스피어만 (Spearman): 순위 기반 관계 측정
# 상관계수 계산
df['컬럼1'].corr(df['컬럼2']) 또는 df.corr(method='pearson')

 

  • 표준편차: 데이터의 분산 정도 (작을수록 평균과 가까움)
  • 공분산 (Covariance) : 두 변수 간 관계 통계적 측정 (양수: 함께 증가/감소, 음수: 한 변수 증가 시 다른 변수 감소 경향)

3-3. 정규화 (Normalization/Standardization)

데이터 스케일 조정 (Min-Max/Z-score) 특정 범위/규격을 맞추는 과정
  • 스케일 조정 (서로 다른 범위 조정): Min-Max (최소-최대) 방식, Z-score (표준화) 방식 주로 사용
  • 이상치 영향 완화
  • 알고리즘 수렴 속도 향상 (경사 하강법 등)

IV. 시각화 라이브러리/툴

4-1. 판다스 라이브러리

Matplotlib: 파이썬 기본, 저수준 API (세밀한 제어).

  • 파이썬 기본 시각화 라이브러리
  • 다양한 그래프 생성/커스터마이징 가능
  • dataframe.plot() 가능
import matplotlib.pyplot as plt

 

Seaborn: Matplotlib 기반, 통계 데이터 시각화 특화 (히트맵, 카운트 플롯, 박스 플롯 등), 고수준 API (쉽고 통계적 플롯 특화)

import seaborn as sns

 

Plotly: 웹 기반 대화형 시각화  Interactive (인터랙티브) 그래프 생성 (상호 작용 가능) 웹 공유 용이

# Pandas.plot() 사용
df['컬럼명'].plot(kind='line')

4-2. 데이터 시각화 툴 (Tableau/Google Data Studio/ Amazon QuickSight)

공통

  • 직관적 사용자 인터페이스,
  • 다양한 시각화 차트 및 옵션 제공

차이점

  • 연동 가능 데이터 소스 (아마존은 AWS 데이터 연동),
  • 대시보드 공유/협업 (데스크톱/클라우드)
  • 확장성 (일반/구글 서비스/ AWS 생태계 내)

댓글 영역