Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬으로 데이터프레임의 최소·최대 임계값 트리밍(클리핑)하기

데이터 분석을 하다 보면 특정 범위를 벗어나는 이상치(outlier)를 일괄적으로 처리해야 하는 경우가 자주 있습니다. 예를 들어, 데이터프레임의 모든 값을 최소 임계값과 최대 임계값 사이로 제한하고 싶다면 판다스(pandas)의 clip() 함수를 활용하면 됩니다.

아래는 원본 데이터프레임에 최소 임계값과 최대 임계값을 적용한 결과 예시입니다.

minimum threshold:
    Column1 Column2
0      30      30
1      34      30
2      56      30
3      78      50
4      30      90
maximum threshold:
    Column1 Column2
0      12      23
1      34      30
2      50      25
3      50      50
4      28      50
clipped dataframe is:
    Column1 Column2
0      30      30
1      34      30
2      50      30
3      50      50
4      30      50

해결 방법

이 문제는 다음 단계를 따라 해결할 수 있습니다.

  • 데이터프레임을 정의합니다.

  • df.clip(lower=30) 함수를 적용하여 최소 임계값(하한선)을 계산합니다. 30보다 작은 값은 모두 30으로 대체됩니다.

df.clip(lower=30)
  • df.clip(upper=50) 함수를 적용하여 최대 임계값(상한선)을 계산합니다. 50보다 큰 값은 모두 50으로 대체됩니다.

df.clip(upper=50)
  • 최소 임계값과 최대 임계값을 동시에 적용하여 최종 클리핑된 데이터프레임을 얻습니다.

df.clip(lower=30, upper=50)

예제 코드

아래 코드를 통해 더 쉽게 이해할 수 있습니다.

import pandas as pd

data = {"Column1":[12,34,56,78,28],
        "Column2":[23,30,25,50,90]}

df = pd.DataFrame(data)
print("DataFrame is:\n", df)
print("minimum threshold:\n", df.clip(lower=30))
print("maximum threshold:\n", df.clip(upper=50))
print("clipped dataframe is:\n", df.clip(lower=30, upper=50))

실행 결과

DataFrame is:
    Column1 Column2
0      12      23
1      34      30
2      56      25
3      78      50
4      28      90
minimum threshold:
    Column1 Column2
0      30      30
1      34      30
2      56      30
3      78      50
4      30      90
maximum threshold:
    Column1 Column2
0      12      23
1      34      30
2      50      25
3      50      50
4      28      50
clipped dataframe is:
    Column1 Column2
0      30      30
1      34      30
2      50      30
3      50      50
4      30      50

정리

pandas의 clip() 함수는 lower 인자로 하한값을, upper 인자로 상한값을 지정하여 데이터프레임의 값을 원하는 범위 안으로 손쉽게 제한할 수 있습니다. 두 인자를 함께 사용하면 이상치를 한 번에 트리밍할 수 있어 데이터 전처리 과정에서 매우 유용하게 활용됩니다.