데이터 분석 프로젝트

Chapter.3 데이터 분석 팀 과제 (2)

devjjun 2026. 4. 3. 20:44

TIL(Today I Learned)


1️⃣ISTQB 1강 

1.1 테스트가 왜 필요한가

  • 소프트웨어에는 *결함(버그)*이 존재할 수밖에 없음
  • 결함 → 실행 시 오류 → 실패로 이어질 수 있음
  • 테스트의 목적:
    • 결함을 발견
    • 품질 향상
    • 리스크 감소

1.2 테스트란 무엇인가

테스트 = 단순히 실행이 아니라 다음을 포함함

  • 요구사항 검증 (이게 맞게 만들어졌나?)
  • 결함 탐지
  • 품질 평가

핵심 개념

  • 검증(Verification): “제대로 만들었나?”
  • 확인(Validation): “올바른 걸 만들었나?”

1.3 7가지 테스트 원칙 

  1. 테스트는 결함이 있음을 보여줄 수 있다 (없음을 증명 못함)
  2. 완전 테스트는 불가능하다
  3. 조기 테스트가 중요하다
  4. 결함은 특정 부분에 집중된다 (결함 집중)
  5. 살충제 패러독스 (같은 테스트 반복하면 효과 down)
  6. 테스트는 상황에 따라 다르다
  7. 오류 부재의 궤변 (버그 없어도 쓸모없으면 의미 없음)

1.4 테스트 활동 / 프로세스

테스트 진행 단계 

  1. 테스트 계획
  2. 테스트 설계
  3. 테스트 구현
  4. 테스트 실행
  5. 평가 및 보고
  6. 종료 활동

1.5 테스트의 심리학

  • 개발자는 자신의 코드 결함을 찾기 어렵다.
  • 테스트는 “깨보려는” 관점 필요
  • 협업 중요 (갈등 X, 품질 향상 목적 O)

핵심: 테스트는 결함을 찾고, 품질을 높이며, 리스크를 줄이기 위한 활동이다


2️⃣데이터 분석 팀 과제 

데이터 전처리 및 목적별 데이터 생성 

1.컬럼 순서 재배치 및 컬럼명 변경

df = df[
    [ 'ra_report', 'start_date','age','gender','products_role',
      'products_name','products_types','Outcomes','symptoms','Age_Year']]

2.단위가 다른 나이 통일 

# 나이 단위 통일 컬럼 생성
def convert_age(x):
    age = x['age']
    unit = x['age_unit']
	
    if unit == 'Day(s)':
        result = 0
    elif unit == 'Week(s)':
        result = int(age / 52)
    elif unit == 'Month(s)':
        result = int(age / 12)
    elif unit == 'Year(s)':
        result = age
    elif unit == 'Decade(s)':
        result = age * 10
    else:
        return None  # Not Available 등 결측치 처리
# 이상치 처리(120세 초과)
    if result > 120:
        return None
    return result

df['Age_Year'] = df.apply(convert_age, axis=1)

3.문자열로 구성 된 날짜 DateTime 형식으로 변경 

# 부작용 발생 시작 날짜(03/23/17) datetime 형식으로 변환
df['start_date'] = pd.to_datetime(df['start_date'], format='%m/%d/%Y')

4.단위 통일 된 나이 구간별 분류 

# 나이를 구간 별로 나누기
bins=[0,2,12,18,65,120]
labels=['영유아(0-2)','소아(3-12)', '청소년(13-18)', '성인(19-65)', '노인(66+)']
df_Symtoms_by_age['Age_Group'] =pd.cut(df['Age_Year'],bins=bins,labels=labels)

진행 목표

2026/04/06: 분류된 데이터를 목적에 따라 시각화하고 인사이트 도출 후 가설과 비교


3️⃣Python 알고리즘 주요 문제 

문제1

  • 문제 접근: numbers 배열의 요소를 순회하고 내부의 반복문을 통해 1부터 n의 제곱근까지의 범위에서 약수를 구한 뒤 제한 범위 조건에 따라 값을 구하면 될 것이다.
  • 코드
def solution(number, limit, power):
    answer = 0
    for n in range(1, number + 1):
        count = 0
        for i in range(1, int(n**0.5)+1):
            if n % i == 0:
                if i*i == n:
                    count += 1
                else:
                    count += 2
        if count > limit:
            answer += power
        else:
            answer += count 
    return answer

💡 느낀점

자격증 공부를 시작하게 되면서 이론적으로 테스팅에 대해 학습할 수 있었다. 데이터 단위의 팀 프로젝트를 진행하며 데이터를 분석할 때 가설과 목표를 세우는 것이 많은 비중을 차지하고, 실제로 데이터를 들여다 보았을 때 다양한 형식의 결측치를 발견할 수 있었고 결측 데이터의 의미 유무를 판단하는 것 또한 중요할 것이라는 생각이 들었습니다.