데이터 분석 프로젝트

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

devjjun 2026. 4. 6. 14:50

TIL(Today I Learned)


1️⃣데이터 분석 팀 과제 

분석 목표 및 방향 

  • Outcomes 컬럼 중 특정 컬럼을 높은 심각도로 지정하고 심각한 부작용의 여부를 True/False로 반환하는 컬럼을 생성하여 산업군 별 부작용의 비율을 확인한다.
  • 산업군 별 신고 수가 높은 증상의 비율을 시각화하여 주요 증상을 한 눈에 확인할 수 있도록 한다. 
  • 연령대 별 주요 증상을 비율로 시각화한다.
  • 깊게 들어가 브랜드 별 신고 건수와 심각 부작용의 비율을 확인한다.

목표에 따른 시각화 전략

  • 산업군 별 심각 부작용 비율 그래프 → 이중막대 bar chart
  • 산업군 별 증상 비율 → stacked bar chart
  • 연령대 별 주요 증상 비율 → heatmap
  • 브랜드 별 신고 건수에 비례한 심각 부작용 비율 → scatter plot

https://colab.research.google.com/drive/11KwzIlV_Blm5btj0sXRxO_LCiIJ_gsuM?usp=sharing#scrollTo=cq9J2fdJbrCX


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

문제1

  • 문제 설명: 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 | 프로그래머스 스쿨
  • 제한 사항: 
    • lottos는 길이 6인 정수 배열입니다.
    • lottos의 모든 원소는 0 이상 45 이하인 정수입니다.
      • 0은 알아볼 수 없는 숫자를 의미합니다.
      • 0을 제외한 다른 숫자들은 lottos에 2개 이상 담겨있지 않습니다.
      • lottos의 원소들은 정렬되어 있지 않을 수도 있습니다.
    • win_nums은 길이 6인 정수 배열입니다.
    • win_nums의 모든 원소는 1 이상 45 이하인 정수입니다.
      • win_nums에는 같은 숫자가 2개 이상 담겨있지 않습니다.
      • win_nums의 원소들은 정렬되어 있지 않을 수도 있습니다.
  • 입출력 예

  • 문제 접근: 수를 담고 있는 lottos를 당첨 번호 배열인 win_nums와 비교하여 만약 겹치는 수가 있다면 변수를 증가시키고, 순위의 함수를 통해 결과를 출력하면 될 것이다. 
  • 코드: 
def solution(lottos, win_nums):
    count = lottos.count(0)
    match = 0
    for i in lottos:
        if i in win_nums:
            match += 1
    
    def rank(num):
        if num >= 2:
            return 7 - num
        else: 
            return 6
    return [rank(match + count), rank(match)]

💡 느낀점

데이터를 시각화하며 행 열을 구분하여 데이터를 처리하는 부분에서 어려움을 느꼈고, 머릿 속으로 생각한 그래프를 실제로 구현하는 과정이 막막하게 느껴졌다. 간단한 그래프부터 시작하여 직접 추출 전처리 시각화 하는 과정을 반복 숙달해야 될 것 같다. 흥미가 있을만한 데이터를 이런 과정을 거쳐 학습한다면 더욱 좋을 것 같다.