반응형

05-03. 임계값 적용 (clip)

DataFrame.clip(lower=None, upper=None, axis=None, inplace=False, args, kwargs)

 

개요


clip 메서드는 Series나 DataFrame에 대해서 요소들의 범위를 제한하는 메서드입니다
즉, 상한선과 하한선을 임계값으로 정해서 임계값 밖의 값을 임계값으로 변경합니다.
NA의 경우 변경하지 않습니다.

 

사용법


기본 사용법
df.clip(lower=None, upper=None, axis=None, inplace=False, args, kwargs)
lower : 하한값입니다. 이 이하의 값은 이 값으로 변경됩니다.
upper : 상한값입니다. 이 이상의 값은 이 값으로 변경됩니다.
axis : 계산할 기준이되는 레이블입니다.
inplace : 제자리에서 계산할지 여부 입니다.

inplace의 개념은 간단합니다. 우리가 만약 print(df.dropna())로 df에서 NA를 제거한다고 가정해봅니다.
그럼 NA가 사라진 데이터가 출력되겠지만, 다시 print(df)할 경우 df는 변경되어있지 않을 것입니다.
이때 print(df.dropna(inplace=True))를 수행한다면 print(df) 실행 시 df에도 NA가 삭제되어있는것을
확인할 수 있습니다. 물론 dropna뿐만 아니라 clip처럼 inplace 인수를 가진 모든 함수에서 동일합니다.
즉, df.dropna(inplace=True)는 df = df.dropna( )와 같은 효과를 가집니다.

반응형

 

예시


먼저 간단한 3x3짜리 데이터를 만들어보겠습니다.

col  = ['col1','col2','col3']
row  = ['row1','row2','row3']
data = [[-7,3,9],
        [6,-8,1],
        [-3,0,-7]]
df = pd.DataFrame(data,row,col)
print(df)
>>
      col1  col2  col3
row1    -7     3     9
row2     6    -8     1
row3    -3     0    -7

일반적인 사용법
하한선을 -4로 상한선을 5로 clip메서드를 적용시켜보겠습니다.
즉, -4보다 작은수는 -4로. 5보다 큰 수 는 5로 변경되며 그 안의 수는 변경되지 않습니다.

print(df.clip(-4,5))
>>
      col1  col2  col3
row1    -4     3     5 #-7이 -4로 변경, 9가 5로 변경
row2     5    -4     1 # 6이 5로 변경 -8이 -4로 변겅
row3    -3     0    -4 # -7이 -4로 변경


임계값을 Series로 설정
임계값을 Series형태로 설정하여 각행이나 열마다 원하는 임계값의 지정이 가능합니다.
row1에는 -1~1, row2에는 -2~2, row3에는 -3~3으로 임계값을 지정해보겠습니다.
먼저 Series인 s를 설정해보겠습니다.

s = pd.Series(data=[1,2,3],index=row)
print(s)
>>
row1    1
row2    2
row3    3
dtype: int64

이제 임계값을 -s  s로 설정하여 clip메서드를 적용해보겠습니다.

print(df.clip(-s,s,axis=0))
>>
      col1  col2  col3
row1    -1     1     1 # -1~1 으로 변경
row2     2    -2     1 # -2~2 로 변경
row3    -3     0    -3 # -3~3 으로 변경
반응형

+ 최근 글