[Pandas] clip() - 이상값 방어의 핵심

2025. 5. 2. 08:50·python/Pandas | Numpy
728x90

데이터를 전처리를 하다 보면 종종 이런 일이 생긴다:

  • 나이에 200살이 들어와 있다.
  • 점수가 110점으로 입력되어 있다.
  • 상품 가격이 음수로 들어와 있다.

이런 이상값을 제거하거나, 상하한을 지정해서 데이터를 안전하게 자르는 작업이 필요하다.

이럴 때 Pandas의 clip() 은 최소값보다 작은 값은 최솟값으로, 최대값보다 큰 값은 최대값으로 잘라주는 함수다.

 

 

예제 데이터

import pandas as pd

df = pd.DataFrame({
    'score': [95, 105, 85, 70, 30],
    'age': [25, 180, 38, 200, -5]
})


기본 문법

Series.clip(lower=None, upper=None)
DataFrame.clip(lower=None, upper=None)
  • lower : 최소 허용값 (이보다 작으면 잘라냄)
  • upper : 최대 허용값 (이보다 크면 잘라냄)

 

1. 점수는 100점을 초과 불가 (예제)

df['score_clipped'] = df['score'].clip(upper=100)

 

 

2. 나이는 0 ~ 120 사이로 제한

df['age_clean'] = df['age'].clip(lower=0, upper=120)

 

 

3. DataFrame 전체에 clip 적용

df.clip(lower=0, upper=100)

 

 

4. 컬럼별 다른 기준으로 clip 

df_clipped = df.clip(lower={'score': 60, 'age': 0}, upper={'score': 100, 'age': 120})

 

 

 

주의점 설명
clip()은 원본 수정 X 결과는 새로운 객체, 원본을 수정하려면 재할당 필요
lower, upper 둘 다 없으면 효과 없음 둘 중 하나라도 지정해야 작동
범위를 넘는 값을 자동으로 바꾼다 삭제가 아닌 수정 → 통계 결과에 반영됨
컬럼별로 다르게 설정할 땐 Series 사용 dict형태도 가능하지만 Series가 더 안전

 

 

 

clip()은 Pandas에서 이상값을 자동으로 잘라주는 가장 빠른 도구다.

특히 점수, 나이, 가격 등 상하한이 명확한 데이터를 다를 때 필수적으로 사용되며,

조건 기반 삭제 없이도 데이터를 안전하게 정제할 수 있는 실무 필수 함수다.

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'python > Pandas | Numpy' 카테고리의 다른 글

[Numpy] ndarray 구조 - 배열의 모양, 차원 ,타입  (0) 2025.05.02
[Numpy] percentile() - 백분위수 구하기  (0) 2025.05.02
[Pandas] where() - 조건을 만족하는 값은 살리고, 아니면 치환  (0) 2025.04.29
[Pandas] applymap() - DataFrame 전체 셀에 함수를 적용  (0) 2025.04.29
[Pandas] map() (조건 라벨링, 값 변환, 딕셔너리 매핑까지 Series 변환의 핵심)  (0) 2025.04.24
'python/Pandas | Numpy' 카테고리의 다른 글
  • [Numpy] ndarray 구조 - 배열의 모양, 차원 ,타입
  • [Numpy] percentile() - 백분위수 구하기
  • [Pandas] where() - 조건을 만족하는 값은 살리고, 아니면 치환
  • [Pandas] applymap() - DataFrame 전체 셀에 함수를 적용
Balang
Balang
음악 전공생의 개발일지
  • Balang
    Balang
    Balang
  • 전체
    오늘
    어제
  • 반응형
    • All Post (160)
      • python (47)
        • selenium (4)
        • algorithm (10)
        • Django (6)
        • Pandas | Numpy (22)
      • SQL (9)
      • Data Engineer (36)
      • Data Scientist (3)
      • Data Analysis (11)
      • Computer Science (36)
      • Why? (16)
      • 마음가짐 (2)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
Balang
[Pandas] clip() - 이상값 방어의 핵심
상단으로

티스토리툴바