지난번에 if문과 map함수로 파생변수 만들기를 연습해봤다면,
https://sarah0518.tistory.com/69?category=984180
if문과 map함수로 파생변수 만들기
보통 SQL에 익숙하신 분들은 파생변수 만들때 case, when, then 문이 자동으로 생각나실거에요. 파이썬에서는 간단하게는 map함수를 쓰거나, 아니면 if문으로 파생변수를 새로 만들어서 컬럼으로 활용
sarah0518.tistory.com
이번에는 apply함수로 파생변수만들기를 해볼거에요.
apply함수는 다양하게 쓰일 수 있는데,
이것도 지난번에 다뤘던 것처럼 applymap과 유사하다고 생각하면 됩니다.
가장 큰 차이점은
applymap은 dataframe에만 사용이 가능하지만,
apply는 dataframe 또는 series에 모두 사용이 가능해요.
그래서 아래와 같이 조건에 따라 return되는 값이 달라지는 함수를
미리 만들 어 준 다음에
간단히 apply함수를 적용해 주면 됩니다.
함수를 조금 더 자세히 설명해 보자면,
우선 기존에 label된 값은 2가지였어요.
정상이면 1, 불량이면 0으로요
그리고 같은 데이터셋에 predicted된 값을 pred라는 변수에 넣어줬습니다.
pred변수도 정상이면 1, 불량이면 0으로 표시되어있습니다.
1
2
3
4
5
6
7
8
9
|
def classified_result(df_name):
if df_name['target']==0 and df_name['pred']==0:
return 'TN'
elif df_name['target']==1 and df_name['pred']==1:
return 'TP'
elif df_name['target']==0 and df_name['pred']==1:
return'FP'
else:
return 'FN'
|
cs |
따라서, target=0, pred=0이면 True Negative로
불량을 불량으로 잘 맞춘 것이고
target=1, pred=1이면 True Positive로
정상을 정상으로 잘 맞춘 것,
target=0, pred=1이면 False Positive로
불량인데 정상으로 잘 못 판단한 것이고
마지막은 False Negative로 정상인데 불량으로 판단한 것입니다.
1
|
df['result']=df.apply(classified_result, axis=1)
|
cs |
이제, 위의 함수를 적용하여 만든 새로운 변수 result에
TN, TP, FP, FN값을 넣어 주기 위해 위와 같이
한 줄만 추가로 더 적어주면 끝!
혹시 궁금해 하실 분이 계실테니,
만약 apply대신 applymap을 사용하면
아래와 같은 error msg가 나오니 참고하세요.

'IT > 파이썬' 카테고리의 다른 글
[그래프]산점도에 label 추가하기 (0) | 2021.09.17 |
---|---|
[그래프] subplot 활용하기 (0) | 2021.08.12 |
[그래프] for문으로 산점도 그리기 plt.scatter 활용 (0) | 2021.08.02 |
Bayesian optimization (0) | 2021.06.29 |
[for loop 활용] 최적화된 feature set 찾기 (0) | 2021.06.25 |