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 으로 변경
'파이썬완전정복-Pandas DataFrame > 05. 비교 & 필터링' 카테고리의 다른 글
Pandas DataFrame 05-05. 샘플 추출 (sample) (0) | 2022.01.17 |
---|---|
Pandas DataFrame 05-04. 레이블 필터링 (filter) (0) | 2022.01.17 |
Pandas DataFrame 05-02. dtype기반 열 선택 (select_dtyps) (0) | 2022.01.17 |