DataAnalysis 완벽 마스터
DataAnalysis의 핵심 개념과 실전 활용법
학습 항목
이미지 로딩 중...
Data Analysis 테스트 전략 완벽 가이드
데이터 분석 코드의 품질을 보장하기 위한 효과적인 테스트 전략을 학습합니다. 단위 테스트부터 데이터 품질 검증까지 실전 예제로 배워봅니다.
들어가며
이 글에서는 Data Analysis 테스트 전략 완벽 가이드에 대해 상세히 알아보겠습니다. 총 10가지 주요 개념을 다루며, 각각의 개념에 대한 설명과 실제 코드 예제를 함께 제공합니다.
목차
- 기본_단위_테스트
- 데이터프레임_테스트
- 결측값_처리_테스트
- 이상값_탐지_테스트
- 데이터_필터링_테스트
- 데이터_집계_테스트
- 데이터_정규화_테스트
- Mock_데이터_테스트
- 예외_처리_테스트
- 데이터_품질_검증
1. 기본_단위_테스트
개요
데이터 분석 함수의 기본 단위 테스트를 작성하여 함수의 정확성을 검증합니다.
코드 예제
import pytest
def calculate_mean(data):
return sum(data) / len(data)
def test_calculate_mean():
assert calculate_mean([1, 2, 3, 4, 5]) == 3.0
assert calculate_mean([10, 20]) == 15.0
설명
pytest를 사용하여 평균 계산 함수가 올바르게 작동하는지 검증합니다. assert 문으로 예상 결과와 실제 결과를 비교합니다.
2. 데이터프레임_테스트
개요
pandas DataFrame의 구조와 내용을 검증하여 데이터 처리 로직의 정확성을 확인합니다.
코드 예제
import pandas as pd
def test_dataframe_structure():
df = pd.DataFrame({'name': ['Alice', 'Bob'], 'age': [25, 30]})
assert list(df.columns) == ['name', 'age']
assert len(df) == 2
assert df['age'].dtype == 'int64'
설명
DataFrame의 컬럼명, 행 개수, 데이터 타입을 검증하여 데이터 구조가 예상과 일치하는지 확인합니다.
3. 결측값_처리_테스트
개요
결측값 처리 로직이 올바르게 작동하는지 검증하여 데이터 정제 과정의 신뢰성을 보장합니다.
코드 예제
def handle_missing_values(df):
return df.fillna(0)
def test_missing_values():
df = pd.DataFrame({'value': [1, None, 3]})
result = handle_missing_values(df)
assert result['value'].isna().sum() == 0
설명
결측값을 0으로 채우는 함수를 테스트하여 모든 결측값이 제거되었는지 확인합니다.
4. 이상값_탐지_테스트
개요
통계적 방법으로 이상값을 탐지하는 함수의 정확성을 검증합니다.
코드 예제
def detect_outliers(data):
mean = sum(data) / len(data)
std = (sum((x - mean) ** 2 for x in data) / len(data)) ** 0.5
return [x for x in data if abs(x - mean) > 2 * std]
def test_outliers():
assert detect_outliers([1, 2, 3, 100]) == [100]
설명
평균에서 2 표준편차 이상 벗어난 값을 이상값으로 탐지하는 로직을 테스트합니다.
5. 데이터_필터링_테스트
개요
조건에 맞는 데이터를 필터링하는 함수가 올바르게 작동하는지 검증합니다.
코드 예제
def filter_adults(df):
return df[df['age'] >= 18]
def test_filter_adults():
df = pd.DataFrame({'name': ['Alice', 'Bob'], 'age': [15, 25]})
result = filter_adults(df)
assert len(result) == 1
assert result.iloc[0]['name'] == 'Bob'
설명
성인만 필터링하는 함수를 테스트하여 조건에 맞는 데이터만 반환되는지 확인합니다.
6. 데이터_집계_테스트
개요
그룹별 집계 함수가 정확한 결과를 반환하는지 검증합니다.
코드 예제
def group_by_category(df):
return df.groupby('category')['value'].sum()
def test_aggregation():
df = pd.DataFrame({'category': ['A', 'A', 'B'], 'value': [10, 20, 30]})
result = group_by_category(df)
assert result['A'] == 30
assert result['B'] == 30
설명
카테고리별로 값을 합산하는 함수를 테스트하여 집계 로직이 정확한지 확인합니다.
7. 데이터_정규화_테스트
개요
데이터 정규화 함수가 올바른 범위로 값을 변환하는지 검증합니다.
코드 예제
def normalize_data(data):
min_val, max_val = min(data), max(data)
return [(x - min_val) / (max_val - min_val) for x in data]
def test_normalize():
result = normalize_data([0, 50, 100])
assert result == [0.0, 0.5, 1.0]
설명
Min-Max 정규화로 데이터를 0-1 범위로 변환하는 함수를 테스트합니다.
8. Mock_데이터_테스트
개요
외부 데이터 소스를 Mock으로 대체하여 독립적인 테스트를 수행합니다.
코드 예제
from unittest.mock import Mock
def test_data_loading():
mock_db = Mock()
mock_db.fetch_data.return_value = [{'id': 1, 'value': 100}]
result = mock_db.fetch_data()
assert len(result) == 1
assert result[0]['value'] == 100
설명
Mock 객체를 사용하여 실제 데이터베이스 없이도 데이터 로딩 로직을 테스트할 수 있습니다.
9. 예외_처리_테스트
개요
잘못된 입력에 대한 예외 처리가 올바르게 작동하는지 검증합니다.
코드 예제
def safe_divide(a, b):
if b == 0:
raise ValueError("0으로 나눌 수 없습니다")
return a / b
def test_exception():
with pytest.raises(ValueError):
safe_divide(10, 0)
설명
pytest.raises를 사용하여 0으로 나누기 시도 시 적절한 예외가 발생하는지 확인합니다.
10. 데이터_품질_검증
개요
데이터의 품질 기준을 설정하고 자동으로 검증하여 데이터 신뢰성을 보장합니다.
코드 예제
def validate_data_quality(df):
checks = {
'no_nulls': df.isna().sum().sum() == 0,
'positive_values': (df['age'] > 0).all()
}
return all(checks.values())
def test_data_quality():
df = pd.DataFrame({'age': [25, 30, 35]})
assert validate_data_quality(df) == True
설명
결측값이 없고 나이가 양수인지 확인하여 데이터 품질 기준을 만족하는지 검증합니다.
마치며
이번 글에서는 Data Analysis 테스트 전략 완벽 가이드에 대해 알아보았습니다. 총 10가지 개념을 다루었으며, 각각의 사용법과 예제를 살펴보았습니다.
관련 태그
#Python #Testing #DataAnalysis #Pytest #DataValidation