TIL/내일배움캠프

'matplotlib'의 강력한 시각화 기능

Kou_ 2026. 5. 12. 11:37

[내일배움캠프] QA/QC_6기 - 2일차

  • TIL
    • 파이썬으로 데이터 분석하고 시각화
  • To-Do List
    1. 데이터 분석 종합반 2~3강 수강
    2. 아티클 스터디 : 데이터 기반 의사결정의 장점
    3. 커리어 스터디 (Day 1~3)
    4. ADsP 공부

데이터 분석 종합반

2강. 파이썬 데이터 분석 기초 다지기

    • 데이터 준비하기
      • 데이터 가져오기
        # 데이터 불러오기
        diabetes = pd.read_csv('F:/Projects/data_set/diabetes.csv')
         
    • 데이터 전처리
      • 결측치 제거
        # 모든 열 보이게 설정
        pd.set_option('display.max_columns', None)
        
        # 데이터 전처리 - 결측치 제거 (혈압, 피부두께, BMI가 0인 사람 없음)
        filtered = diabetes[(diabetes['BloodPressure']!=0)&
            (diabetes['BMI']!= 0)&
            (diabetes['SkinThickness']!=0)]
        print(filtered.head())
        
        # 결측치 제거 데이터 수 조회
        removed_rows = len(diabetes) - len(filtered)
        print("제거된 행 수:", removed_rows)
         
      • 데이터 통계치 요약 결과
        # 데이터 통계치 요약 결과
        print(filtered.describe())
         
      •  상관관계 분석
        # 상관관계 분석
        corr=filtered.corr(method='pearson')
        corr=corr[corr.Outcome!=1]
        print(corr)
      • 시각화
        # 상관관계 시각화
        ax=corr['Outcome'].plot.bar()
         
        •  시각화 세부 설정
          # Y=0 기준선 추가
          plt.axhline(y=0)
          # 각 막대의 상관관계 값 표기
          # 플롯 안의 막대 객체 하나씩 지정 반복
          for bar in ax.patches:
              # 막대 높이
              y = bar.get_height()
              # 텍스트 출력
              ax.text(
                  # 막대의 가운데 위치 계산 (시작위치 + 너비 / 2)
                  bar.get_x() + bar.get_width() / 2,
                  # y 위치
                  y+0.02,
                  # 소수점 둘째자리까지 표기
                  f'{y:.2f}',
                  # 글자 가로 중앙 정렬
                  ha='center'
              )
          # x축 틱라벨 길이 및 출력 형식
          short_labels = [
              col[:6] + '...' if len(col) > 6 else col
              for col in corr.index
          ]
          # x축 틱 설정
          plt.xticks(
              ticks=range(len(short_labels)),
              labels=short_labels,
              rotation=45
          )
          # 그래프 Y방향 테두리 크기 조절
          plt.ylim(0, max(corr['Outcome']) + 0.1)
          # 그래프 여백 자동 조절
          plt.tight_layout()
          # 그래프 출력
          plt.show()
           
    • 분석 결과

→ Glucose가 상관관계 계수 0.46으로 당뇨병 발병에 영향을 줄 가능성이 크다.  (양의 상관계수)

추가 학습 - 나이에 따른 당뇨병 발병 추세

 

 

  • 전체 코드 
    import pandas as pd
    import matplotlib.pyplot as plt
    import numpy as np
    import seaborn as sns
    
    # 한글 폰트 설정 및 깨짐 방지
    plt.rcParams['font.family'] = 'Malgun Gothic'
    plt.rcParams['axes.unicode_minus'] = False
    
    # 데이터 불러오기
    diabetes = pd.read_csv('F:/Projects/data_set/diabetes.csv')
    
    # 모든 열 보이게 설정
    pd.set_option('display.max_columns', None)
    
    # 데이터 전처리 - 결측치 제거 (혈압, 피부두께, BMI가 0인 사람 없음)
    filtered = diabetes[(diabetes['BloodPressure']!=0)&
        (diabetes['BMI']!= 0)&
        (diabetes['SkinThickness']!=0)]
    print(filtered.head())
    
    # 결측치 제거 데이터 수 조회
    removed_rows = len(diabetes) - len(filtered)
    print("제거된 행 수:", removed_rows)
    
    # 데이터 통계치 요약 결과
    print(filtered.describe())
    
    # 연령대 설정
    filtered['Age_cat']=pd.cut(filtered['Age'],
                               bins=[20,30,40,50,60,70,80,90],
                               labels=['20대','30대','40대','50대','60대','70대','80대'])
    
    # 연령대 기준 평균 값
    print(filtered.groupby('Age_cat').mean())
    
    #연령대 별 데이터 수
    print(filtered['Age_cat'].value_counts())
    
    # 당뇨병 발병 사람 수
    print((filtered['Outcome'] == 1).sum())
    
    # 연령대 별 당뇨병 발병 사람 수
    print(
        filtered[filtered['Outcome'] == 1]
        .groupby('Age_cat')
        .size()
    )
    
    # 시각화 (바 그래프)
    sns.barplot(x='Age_cat',y='Outcome',data=filtered)
    
    # 그래프 여백 자동 조절
    plt.tight_layout()
    # 그래프 출력
    plt.show()
     
  •  시각화
  • 분석
    • 50대가 당뇨병 발병 확률이 가장 높다
    • 20대 이후로 점차 증가하다 60대에서 다시 급격히 감소한 이유는 50대 이전에 당뇨병이 이미 대부분 발병했기 때문이라고 생각할 수 있다.
      Age_cat 표본 수 당뇨병 환자 수
      20대 324 66
      30대 103 49
      40대 69 39
      50대 32 23
      60대 8 2
      70대 0 0
      80대 1 0
      → 실제로 전체 발병자 중 60대 이상은 1.12%로 매우 소수이다.
    • 나이가 증가할 수록 표본 수가 적어 신뢰도는 낮다.

3강. 데이터 분석 집중 훈련하기

요일별, 시간별 수강생 시청 수를 분석하고, 어떤 요일의 어떤 시간에 알람 발송을 하는게 가장 효과적일까?

  • 코드
    import pandas as pd
    import matplotlib.pyplot as plt
    import numpy as np
    
    #한글 폰트 설정
    plt.rcParams['font.family'] = 'Malgun Gothic'
    plt.rcParams['axes.unicode_minus'] = False
    
    #csv파일 가져오기
    access = pd.read_csv('F:/Projects/data_set/access_detail.csv')
    
    #날짜 및 시간 형태 자동 변환
    access['access_date_time'] = pd.to_datetime(
        access['access_date'],
        format='mixed',
        errors='coerce'
    )
    
    print(access.head())
    
    #요일별 수강생 수 조회
    access['access_date_time_weekday']=access['access_date_time'].dt.day_name()
    weeks=['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
    weekdata=access.groupby('access_date_time_weekday')['user_id'].count()
    weekdata = weekdata.reindex(weeks)
    print(weekdata)
    
    #시간 별 수강생 수 조회
    access['access_date_time_hour'] = access['access_date_time'].dt.hour
    hourdata = access.groupby('access_date_time_hour')['user_id'].count()
    hourdata = hourdata.sort_index()
    print(hourdata)
    
    # 원하는 형식으로 표기 통일
    access['access_date_time'] \
        = access['access_date_time'].dt.strftime('%Y-%m-%d %H:%M:%S')
    
    #요일-수강생 그래프
    #그래프 사이즈
    plt.figure(figsize=(10,7))
    #그래프 x축 y축
    plt.bar(weekdata.index, weekdata)
    #그래프 명
    plt.title('요일별 수강 완료 수강생 수')
    #그래프 x축 레이블
    plt.xlabel('요일')
    #그래프 y축 레이블
    plt.ylabel('수강생(명)')
    #x축 레이블을 0도로 변환
    plt.xticks(rotation=0)
    #그래프 자동 맞춤
    plt.tight_layout()
    #그래프 출력
    plt.show()
    
    #시간-수강생 그래프
    #그래프 사이즈 변경
    plt.figure(figsize=(10,5))
    #그래프 x축 y축
    plt.plot(hourdata.index, hourdata)
    #그래프 명
    plt.title('시간별 수강 완료 사용자 수')
    #그래프 x축 레이블
    plt.xlabel('시간')
    #그래프 y축 레이블
    plt.ylabel('사용자(명)')
    #x축 눈금 표시 하기
    plt.xticks(np.arange(24))
    #그래프 자동 맞춤
    plt.tight_layout()
    #그래프 출력
    plt.show()
    
    #피벗테이블 만들기
    #columns : 열에 들어 가는 부분
    #index : 행에 들어가는 부분
    #aggfunc : 데이터 축약 시 사용할 함수
    access_pivot_table = pd.pivot_table(
        access,
        values='user_id',
        index=['access_date_time_weekday'],
        columns=['access_date_time_hour'],
        aggfunc='count'
    )
    
    # 요일 순서 재정렬
    access_pivot_table = access_pivot_table.reindex(weeks)
    print(access_pivot_table.head())
    
    #그래프 사이즈 변경
    plt.figure(figsize=(14,4))
    #pcolor를 이용하여 heatmap 그리기
    plt.pcolor(access_pivot_table)
    
    #히트맵에서의 x축
    #np.arrange(m,n,l) m부터 n 까지 l 칸씩 나열
    plt.xticks(np.arange(0.5, len(access_pivot_table.columns), 1), access_pivot_table.columns)
    
    #히트맵에서의 y축
    plt.yticks(np.arange(0.5, len(access_pivot_table.index), 1), access_pivot_table.index)
    
    #그래프 명
    plt.title('요일별 종료 시간 히트맵')
    #그래프 x축 레이블
    plt.xlabel('시간')
    #그래프 y축 레이블
    plt.ylabel('요일')
    #plt.colorbar() 명령어를 추가하면 그래프 옆에 숫자별 색상값을 나타내는 컬러바를 보여 줍니다
    plt.colorbar()
    #그래프 자동 맞춤
    plt.tight_layout()
    #그래프 출력
    plt.show()
     
  •  시각화 자료
  • 분석
    • 화요일 18시에 가장 많은 수강생이 강의 시청을 종료 → 해당 시간에 알람을 보낼 때 가장 많은 학생이 볼 것이다. 

제품 수요가 많은 지역을 찾아라

  • 코드
    import pandas as pd
    import matplotlib.pyplot as plt
    import numpy as np
    
    #한글 폰트 설정
    plt.rcParams['font.family'] = 'Malgun Gothic'
    plt.rcParams['axes.unicode_minus'] = False
    
    # 데이터 불러오기
    students = pd.read_csv('F:/Projects/data_set/students_area_detail.csv')
    
    #지역 분류하기 (set = 중복값 제거)
    category_range = set(students['area'])
    print(category_range, len(category_range))
    
    #새로운 테이블을 만들고자 할 땐 기존의 테이블에서 필요한 "열의 이름"을 대괄호에 넣어 변수에 지정해 주면 됩니다
    area_info=students[['area','latitude','longitude']]
    
    #drop_duplicates()을 이용해 area의 중복 데이터를 처리
    area_info=area_info.drop_duplicates(['area'])
    
    #.reset_index()를 이용해 인덱스를 재정렬
    area_info = area_info.sort_values(by=["area"], ascending=[True])
    
    #index 초기화
    area_info= area_info.reset_index()
    
    number_of_students=pd.DataFrame(students.groupby('area')['user_id'].count())
    print(number_of_students)
    
    #merge()를 이용해 두 테이블을 병합
    result = pd.merge(area_info, number_of_students, on="area")
    
    print(result)
    
    #그래프 사이즈 변경
    plt.figure(figsize=(10,5))
    #그래프 x축 y축
    plt.plot(result['area'], result['user_id'])
    #그래프 명
    plt.title('지역별 사용자 수')
    #그래프 x축 레이블
    plt.xlabel('지역')
    #그래프 y축 레이블
    plt.ylabel('사용자(명)')
    #x축 눈금 수
    plt.xticks(np.arange(13))
    #그래프 크기 자동 조절
    plt.tight_layout()
    #그래프 출력
    plt.show()
    
    # 필요한 라이브러리 사용 선언하기
    import folium
    from folium.plugins import MarkerCluster
    m = folium.Map(location=[37.5536067,126.9674308],
                   zoom_start=11)
    
    #loc[n,"열 이름"] → loc[]를 활용하여 n번째의 열을 조회 (즉, n번째 user의 수를 가져올 수 있음)
    for n in result.index:
      radius = result.loc[n,'user_id']
      folium.CircleMarker([result['latitude'][n],result['longitude'][n]],
                          # .add_to(m)를 활용해 지정해 두었던 우리나라의 지도를 가져오기
                            radius = radius/50, fill=True).add_to(m)
    
    # 지도 저장
    m.save('F:/Projects/data_set/map.html')
     
  • 시각화 자료
  • 분석 결과
    • 서울이 가장 많은 사용자 수가 존재한다.
    • 소모성 제품의 경우 서울에서 광고하는 것이 효과가 좋을 것이다

과제 '최적의 즉문즉답 시간대를 찾아라'

  • 코드
    import pandas as pd
    import matplotlib.pyplot as plt
    import numpy as np
    
    #한글 폰트 설정
    plt.rcParams['font.family'] = 'Malgun Gothic'
    plt.rcParams['axes.unicode_minus'] = False
    
    #데이터 불러오기
    done = pd.read_csv('F:/Projects/data_set/done_detail.csv')
    
    #날짜 및 시간 형태 자동 변화
    done['done_date_time']=pd.to_datetime(
        done['done_date'],
        format='mixed',
        errors='coerce'
    )
    
    #시간 별 수강생 수 조회
    done['done_date_time_hour']=done['done_date_time'].dt.hour
    hourdata=done.groupby('done_date_time_hour')['user_id'].count()
    hourdata=hourdata.sort_index()
    print(hourdata)
    
    #원하는 형식으로 표기 통일
    done['done_date_time']=done['done_date_time'].dt.strftime('%Y-%m-%d %H:%M:%S')
    
    #시간-수강생 그래프
    #그래프 사이즈 변경
    plt.figure(figsize=(10,5))
    #그래프 x축 y축
    plt.plot(hourdata.index, hourdata)
    #그래프 명
    plt.title('시간별 수강 완료 사용자 수')
    #그래프 x축 레이블
    plt.xlabel('시간')
    #그래프 y축 레이블
    plt.ylabel('사용자(명)')
    #x축 눈금 표시 하기
    plt.xticks(np.arange(24))
    #그래프 자동 맞춤
    plt.tight_layout()
    #그래프 출력
    plt.show()
     
  •  시각화
  • 분석
    • 18시에 가장 많은 수강생이 강의 종료 → 18시 이후부터 즉문즉답 시간을 진행하는 것이 가장 효율적

아티클 스크럼

데이터 기반 의사결정의 장점

  • 요약
    이 아티클은 조직 또는 개인이 의사결정을 내릴 때 직관에 의존하지 않고 데이터를 기반으로 더 합리적인 결정을 내리는 방식인 DDDM (Data-Driven Decision Making, 데이터 기반 의사결정)의 중요성을 설명한다. 특히 데이터 기반의 접근 방식은 다음과 같은 장점을 가지며, 이를 바탕으로 데이터 간 패턴을 발견하고 시각화를 통해 의미를 해석해 실제 행동으로 연결하는 과정이 중요하다고 설명한다.
    • 위험 요소의 조기 발견
    • 비용 절감
    • 경쟁사 대비 빠른 대응
  • 주요 포인트
    1. 직관보다 검증 가능한 판단이 중요
      경험과 감각도 중요하지만, 실제 데이터로 검증함으로써 선택 및 결정의 안정성 향상된다.
    2. 데이터는 미래 예측의 근거
      과거 데이터를 분석하여 추세·흐름·경향을 파악하고 미래 예측 도구로 활용 가능하다.
    3. 데이터 시각화 능력이 중요
      단순히 숫자, 텍스트의 나열은 의미 파악이 어렵기 때문에 그래프, 히트맵, 대시보드와 같은 시각화를 활용하면 데이터 파악, 추세 분석, 의사결정 속도 향상에 큰 이점이 있다.
    4. 데이터 활용 문화가 조직 경쟁력
      데이터 활용이 정착된 조직은 조기에 문제를 발견하고 적은 시행횟수로 개선하며, 실패 비용 절감의 가능성이 높다.
  • 핵심 개념
    • 분석적 사고 : 문제를 구성 요소로 나누고 데이터를 기반으로 원인과 해결책을 논리적으로 도출하는 사고 방식
  • 용어 정리
    • DDDM : 의사결정 이전 데이터를 활용하여 방향성 및 위험성을 검토하는 방식
    • 빅데이터 : 디지털 환경에서 생성되는 방대한 규모, 빠른 생성 주기, 다양한 형태를 포함하는 데이터 (3V)
    • 데이터 시각화 : 복잡한 데이터를 그래프·차트 등의 형태로 표현해 쉽게 이해하도록 하는 것
    • 데이터 포인트 : 도표에서 그래프가 지나가는 각 점 또는 측정값의 쌍
  • 실무 적용 사례
    • 실무 적용
      제조업 품질관리에서 공정 데이터를 기반으로 불량 발생 조건을 분석하고 시각화를 통해 이상 발생 패턴을 확인한 뒤 원인 후보를 도출하여 개선을 진행
    • 관련 사례
      • 넷플릭스의 콘텐츠 추천 시스템
        : 이용자의 시청 데이터를 분석하여 콘텐츠를 추천 제공해 사용자 이탈을 감소시키고, 시청 시간의 증가를 유도 
  • 나의 인사이트
    1. 분석적 사고를 직무에 활용할 수 있다.
      품질관리와 같은 직무는 데이터를 활용해서 결함의 원인을 추적하고 개선 방향을 제시하는 등의 업무를 수행하기 때문에 분석적 사고를 함양한다면 실제 직무에 활용될 수 있다. 
    2. 단순히 데이터를 수집·정리하는 것이 아니라 의사결정으로 이어져야 한다.
      어떤 이상이 왜 발생해서 어떤 조치를 취해야 하는지 논리적으로 설명할 수 있어야 한다.
    3. 데이터 분석 능력은 이러한 문제들을 해결하는 핵심 역량이다.
      AI의 급격한 발전으로 현재 데이터 사이언티스트의 하드스킬보다 소프트스킬의 중요도가 더욱 높아진다고 생각하는데, 이같은 흐름에서 데이터 시각화와 같은 능력은 소프트스킬을 뒷받침하는 가장 기초적인 역량이라고 생각된다.

커리어 스터디 - 직무 확장형

Day 1. 기존 JD 분석 복기 및 확장 탐구 방향 정하기

  • 기존 JD에서 발견한 핵심 역량 정리
    구분 기존 JD에서 발견한 역량 키워드
    직무 역량 불량 분석, 원인 규명, 수율 개선, 공정 최적화, ISO9001, 품질 기준 수립 및 검증 등
    데이터 역량 데이터 기반 문제 해결, 빅데이터 분석, 품질 모니터링, 검사/계측 데이터 해석, 데이터 시각화 및 분석, 파이썬 활용, R 활용, 자동화 툴 활용 등
    도메인 역량 반도체 8대 공정 이해, 반도체 공정/소자 이해, 검사/계측 장비 이해, 품질관리 시스템 이해 등
    협업 / 태도 역량 반도체 8대 공정 이해, 반도체 공정/소자 이해, 검사/계측 장비 이해, 품질관리 시스템 이해 등
  • 이번 주 확장 탐구 도메인 선택
    항목 작성
    이번 주 확장 탐구 도메인 반도체
    이 도메인을 선택한 이유 앞으로는 AI가 핵심인 사회가 다가올 것으로 보이고 AI 기술의 가장 기초는 반도체라고 생각하기 때문에 향후 산업 전망이 매우 밝을 것으로 예측되고, 초미세 정밀 공정이 주로 사용되어 사람이 직접 손을 대는 것보다 데이터로 분석하여 수치적인 조절을 하는 경우가 많을 것으로 생각됨
    이 도메인과 연결되는 직무 품질관리 엔지니어
    기존 JD 분석과 연결되는 부분 품질 모니터링, 파이썬 활용, 빅데이터, 자동화 툴 활용 등이 연결된다고 생각
  • Day1. 한 줄 정리
    저는 기존 JD에서 품질 관리 엔지니어와 품질 보증에서 공통적으로 등장하는 품질 모니터링 및 관리가 어떻게 데이터를 기반하여 공정 개선과 수율 개선으로 이어지는지 더 깊게 탐색해보려고 합니다.

Day 2. 도메인 주요 제품과 공정 확장 조사

  • 선택 도메인의 주요 제품 정리
    항목 작성
    선택 도메인 반도체
    주요 제품 시스템 반도체
    이 제품을 선택한 이유 반도체 최종 생성물이기 때문에 공정 이해에 도움이 될 것 같아서
    이 제품에서 품질관리가 중요한 이유 매우 미세한 공정으로 제조되기 때문에 발생할 수 있는 불량도 매우 미세하다. 그렇지만 이 미세한 불량이 전체 반도체 칩의 성능 저하(불량)으로 이어지고, 반도체 특성상 불량 비용이 매우 크다. 또한 대부분이 B2B인 반도체 시장에서 불량으로 인한 고객 신뢰성 저하는 큰 문제이고, 이는 기업의 수익에도 직결한다. 또한 반도체는 제조 공정 자체가 매우 복잡하기 때문에 원인 파악이 쉽지 않기 때문에 공정 단계마다 매우 철저한 품질관리가 요구된다.
  • 제품이 만들어지는 공정 흐름
    공정 단계 과정 관리 품질 포인트 발생 가능한 데이터
    1단계 Wafer 표면 결함, 평탄도 Wafer thick., Particle count, Warp, etc.
    2단계 Oxidation 산화막 균일도 Oxide thick., Furnace temp., Gas flow rate, process time, humidity, etc.
    3단계 Photolithography 패턴 정밀도 CD(Critical dimension), Overlay, etc.
    4단계 Etching 식각 깊이 및 형상 Etch rate, Chamber Pressure, Gas ratio, etc.
    5단계 Deposition 박막 균일성 Film thick., Uniformity, Deposition rate, Chamber temp., etc.
    6단계 Ion Implantation 도핑 농도 implant dose & energy, Wafer temp., Sheet resistance, etc.
    7단계 Metalization 배선 저항 Line resistance, Electromigration test, CMP thick., etc.
    8단계 Packaging & Test 접합 신뢰성 Bond strength, Yield, Defect rate, Crack detection, etc.
  • 기존 JD 역량과 공정 연결하기
    기존 JD에서 발견한 역량 연결 공정 역량이 필요한 이유
    공정 이해도 8대 공정 전체 반도체는 그 특성상 제조 공정 자체가 매우 복잡하고, 각 단계에서 발생 가능한 불량의 종류·원인·데이터양 방대하기 때문에 공정 이해도가 떨어지면 품질 관리가 어렵다.
    데이터 분석 8대 공정 전체 수 나노 미터 단위의 매우 미세한 공정을 통해 제품이 제조되기 때문에 사람이 육안으로 확인할 수 있는 결함은 거의 없다. 때문에 센서, 카메라 등의 여러 정형·비정형 데이터를 바탕으로 품질 관리를 해야하는데, 방대한 데이터를 다루기 위해서는 데이터 분석 역량이 필수적이라고 할 수 있다.
    AI 및 자동화 툴 사용 8대 공정 전체 앞서 말했듯 공정 전체에서 얻을 수 있는 방대한 데이터에는 SEM, TEM과 같은 초정밀 촬영 기기로 얻은 이미지와 같은 비정형 데이터도 존재한다. 표면 결함에 매우 민감한 반도체의 경우 이를 정밀하게 검사해야 하는데 사람이 표본을 뽑아 조사하는 것으로는 완전하지 못하다. 때문에 AI 머신러닝을 활용한 머신비전과 컴퓨터 비전을 결합한 분석 시스템이 자리를 잡고있다. 이제 제조 공정의 자동화뿐 아니라 품질을 관리하는데도 AI와 자동화 툴 역량은 필수적이다.
  • Day 2. 한 줄 정리
    반도체 공정 데이터는 초미세 제조 과정에서 발생하는 미세한 이상과 불량 원인을 조기에 탐지하고, 수율·신뢰성·고객 품질을 안정적으로 확보하기 위해 필수적이다.

Day 3. 공정에서 발생할 수 있는 문제 정의하기

  • 공정에서 발생할 수 있는 품질 문제 찾기
    공정 단계 발생 가능한
    품질 문제
    원인 가설 확인 가능한 데이터
    Oxidation 산화막 두께 불균일 Furnace 온도 편차, 가스 유량 불균형,
    공정 시간 오차 등
    Oxide thick., Furnace temp., Gas flow rate, process time, etc.
    Photolithography CD(Critical dimension) 편차 PR 도포 불균일, Focus 이상,
    노광 에너지 변화
    CD value, PR thick., Focus, Exposure dose, etc.
    Metalization 쇼트 배선 간격 부족, 잔여 금속 혼재 등 Short test, Defect inspection, Cia resistance, etc.
    Packaging 패키지 크랙 발생 열스트레스, Warpage(뒤틀림) 증가,
    재료 열팽창 계수 차이 등
    Crack detection, Thermal Cycle Result,
    Warpage, etc.
  • 내가 선택한 핵심 품질 문제
    항목 작성
    선택한 공정 Photolithography
    정의한 품질 문제 CD 편차
    이 문제가 중요한 이유 CD는 반도체 회로 선폭의 크기를 의미하며, 목표값에서 벗어나면 회로 저항·전류·소비 전력 등의 전기적 특성이 달라질 수 있다. 특히 초미세 공정에서는 1nm 수준의 작은 편차도 성능 저하, 누설전류 증가, 쇼트 및 단선과 같은 치명적인 불량으로 이어질 수 있기 때문에 매우 중요한 품질 요소이다.
    원인 가설 PR(Photoresist) 도포 불균일, 노광 에너지 변화, Focus 오차, 웨이퍼 정렬 불량, 장비 온도 및 진동 변화 등
    확인할 수 있는 데이터 CD 측정값, PR 두께, Exposure dose (노출선량), Focus 값, 정렬오류, 웨이퍼 온도, 장비 로그 데이터, Defect inspection count 등
    데이터를 분석하면 알 수 있는 것 특정 공정 변수와 CD 편차 간의 상관관계를 파악할 수 있으며, 어떤 조건에서 불량률이 증가하는 지 확인할 수 있다. 또한 SPC(Statistical Process Control, 통계적 공정 관리) 및 트렌드 분석을 통해 공정 drift를 조기에 감지하고, 불량 원인의 우선순위를 도찰해 공정 조건 최적화 및 수율 개선에 활용할 수 있다.
  • 문제 정의 문장 만들기
    Photolithography 공정에서 CD 편차 문제가 발생할 수 있다. 이 문제는 CD 측정값, PR 두께, 노출선량, 초점, 정렬오차 값 등의 데이터를 분석해서 원인을 파악할 수 있다.
  • 기존 JD 역량과 품질 문제 연결하기
    기존 JD에서 발견한 역량내가 정의한 품질 문제와의 연결
    기존 JD에서
    발견한 역량
    내가 정의한 품질 문제와의 연결
    공정 이해 Photolithography 공정의 노광, PR 도포, Focus 및 Overlay 과정에 대한 이해가 있어야 CD 편차가 어떤 원인으로 발생했는지 가설을 세울 수 있다.
    데이터 분석 CD 측정값, Exposure Dose, PR Thickness, Overlay Error 등의 데이터를 비교·분석하여 특정 공정 변수와 CD 편차 사이의 상관관계를 파악하는 데 필요하다.
    AI 역량 머신비전 및 컴퓨터 비전 기반의 이미지 분석 기술을 활용하면 미세 패턴 이상이나 CD 편차를 자동으로 검출하고, 이상 패턴을 조기에 탐지하는 데 활용할 수 있다.
  •  Day 3. 한 줄 정리
    반도체 품질관리는 초미세 공정에서 발생하는 매우 작은 이상도 데이터와 AI 기반 분석을 통해 조기에 탐지하고, 공정 이해를 바탕으로 수율과 신뢰성을 안정적으로 확보하는 과정이라는 것을 이해했다.

출처
내일배움캠프 교육 자료