티스토리 뷰
📅 작성일: 2026-03-03
🔖 오늘 작업: EDA · 변수/피처 정의
- 데이터 기본 현황
- 중복 데이터 처리
- 이상치 처리 — High_Velocity == 0
- 파생 변수 생성
- 클래스 불균형 확인
- 중복 제거 전후 불량률 비교
- 다음 단계
1. 📊 데이터 기본 현황
| 항목 | 값 |
| 전체 데이터 건수 | 7,535건 |
| 양품 | 5,842건 (77.6%) |
| 불량 | 1,689건 (22.4%) |
| 제품 타입 | Product_Type 1 / 2 (별도 분석 예정) |
중복 현황
| 중복 기준 | 건수 |
| 전체 행 기준 중복 | 0건 |
| ID 기준 중복 | 0건 |
| ID 제외 행 중복 | 2,918건 (x 2 = 5,836건) |
| 단일 기록 | 1,699건 |
Shot 1번당 Cavity 1, 2의 불량 데이터가 모두 기록되는 구조에서, 데이터 수집 과정에 일부 행이 중복 저장되어 동일 Shot이 2개씩 존재하는 행이 다수 발생.
중복 제거 전후 불량률 차이가 크지 않아 (0.2243 → 0.2325) 중복 행 제거 후 분석 진행.
df_dedup = df.drop_duplicates(subset=df.columns.drop('Id'))
# 원본: 7,531건 → 중복 제거 후: 4,615건
df.describe()에서 High_Velocity의 Min 값이 0 → 이상치 의심
| 항목 | 값 |
| 0 값 개수 | 4건 |
| 전체 대비 비율 | 0.05% |
High_Velocity == 0인 4개 행의 Time 관련 컬럼도 모두 0이었으며, 해당 행의 불량 컬럼 26개 전체가 0 (불량 없음).
Velocity_1, Velocity_2, Velocity_3, Rapid_Rise_Time, Pressure_Rise_Time 모두 0
불량도 없음 (Short_Shot ~ Inclusions 전 항목 = 0)
공정 중간에 중단된 샷(Aborted Shot) 으로 판단 → 4개 행 삭제
불량 컬럼 26개 중 하나라도 불량이 있으면 1, 없으면 0.
defect_cols = [c for c in df.columns
if any(x in c for x in [
'Short_Shot', 'Bubble', 'Exfoliation', 'Blow_Hole',
'Stain', 'Dent', 'Deformation', 'Contamination',
'Impurity', 'Crack', 'Scratch', 'Buring_Mark', 'Inclusions'
])]
df['Any_Defect'] = (df[defect_cols].sum(axis=1) > 0).astype(int)
df['Vel_1_2_Diff'] = df['Velocity_2'] - df['Velocity_1']
df['Vel_2_3_Diff'] = df['Velocity_3'] - df['Velocity_2']
df['Vel_Total_Range'] = df['High_Velocity'] - df[['Velocity_1','Velocity_2','Velocity_3']].min(axis=1)
💡 속도가 급격히 변하는 구간에서 불량 발생 가능성이 높을 것으로 가설 설정
5. ⚖️ 클래스 불균형 확인
| 클래스 | 건수 | 비율 |
| 양품 (0) | 5,842건 | 77.6% |
| 불량 (1) | 1,689건 | 22.4% |
⚠️ 약 4:1 불균형 — 모델링 시 오버샘플링(SMOTE 등) 또는 class_weight 조정 고려 필요
6. 📉 중복 제거 전후 불량률 비교
| 구분 | 행 수 | 불량률 |
| 원본 | 7,531건 | 22.43% |
| 중복 제거 후 | 4,615건 | 23.25% |
불량률 변화 미미 (+0.82%p) → 중복 제거가 전체 분포에 큰 영향 없음을 확인
- Product_Type 1 / Product_Type 2 분리하여 각각 EDA 추가 진행
- 피처별 불량률 분포 시각화 (Cylinder_Pressure, Casting_Pressure 등)
- 속도 변화량 컬럼과 불량의 상관관계 확인
- 전처리 파이프라인 정의 후 모델링 시작
📝 오늘의 핵심 인사이트
중복 데이터는 수집 구조상 발생한 것으로, 제거 후에도 불량률 변화 미미
High_Velocity == 0 행은 중단된 샷으로 판단하여 제거
Product_Type별로 데이터 특성이 다를 수 있어 분리 분석 예정
'내일배움캠프 데이터 분석' 카테고리의 다른 글
| 53일차) 내일배움캠프 데이터 분석 TIL - Tableau(1), AI 활용 텍스트 데이터 분석(1) (0) | 2026.03.12 |
|---|---|
| 47일차) 내일배움캠프 데이터 분석 TIL - 심화 프로젝트(3) (0) | 2026.03.04 |
| 45일차) 내일배움캠프 데이터 분석 TIL - 머신러닝(10), 심화 프로젝트(1) (0) | 2026.02.27 |
| 44일차) 내일배움캠프 데이터 분석 TIL - 머신러닝(9) (0) | 2026.02.26 |
| 43일차) 내일배움캠프 데이터 분석 TIL - 머신러닝(8) (0) | 2026.02.25 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 태블로
- 내일배움캠프
- git
- 데이터분석
- 텍스트분석
- 머신러닝
- Tableau
- 통계
- 비전공자코딩
- 코드카타
- github
- GoogleColab
- 코딩처음
- 코딩기초
- 파이썬
- Python
- Til
- SQL
- 파이썬입문
- 프로그래밍입문
- 데이터시각화
- 구글코랩
- 데이터분석입문
- 판다스
- 중학생코딩
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
글 보관함
