파이썬에서 IF문쓰기
파이썬에서 IF문은 Boolean Masking이라고 한다
Step1. 조건문을 만든다
Step2. 조건문을 적용할 자료를 부르고 Mask함수를 적용한다.
논리연산자
and or not
관계연산자
부등호 == , !=, >, <, >=, <=
이것을 활용하여 조건을 만들어야 한다
df.mask(cond, 참일때의 값).mask(~cond. "거짓일때의 값")
Step1. 원하는 파일을 불러오고 그파일의 값을 계산한다.
여기서는 "score"컬럼이 Null값인지 확인했다.
import pandas as pd
df1 = pd.read_excel('filename.xlsx', sheet_name = 1)
cond1 = df1["score"].isnull()
Step2. 테이블에 컬럼을 하나더 만든다
컬럼을 하나더 만다는것은 df1["컬럼명"] = 컬럼에 들어갈 내용
이렇게 하면 된다 (리스트형식으로 컬럼을 추가하는것!)
df1["Yes OR Not"] = df1["score"].mask(cond1, "X").mask(~cond1, "O")
참고 _ condition = cond 그리고 dataframe = df
라고 줄여서 활용하고 cond1 의 조건에 부합한다면 X를 나타내고 그렇지 않다면 O을 나타낸다.
만약에 마지막에 .mask가 없다면 원래 점수 테이블에 있는 값이 나오게 된다.
.mask(~cond1, "X")
하는 것도 방법이지만 여기서 더 쉬운 방법은
.fillna("X")
컬럼을 만들어서 그안에 내용을 넣을 수 있지만 그렇지 않은 경우 (원래 값을 치환하는 경우도
cond1 = pdf1 >= 1
pdf1 = pdf1.mask(cond1, 'O").fillna("X")
pdf1
한번더!
성적에 따라 ABC로 학점을 주고 싶다면
여러가지 조건을 만들고 그조건에 해당하면 나타낼 표식을 설정해야한다.
cond2 = df1["score"] > 70
cond3 = df1["score"] > 90
df1["result"] = df1["score"].mask(cond2, "B").mask(cond3, "A").mask(~cond2, "C")
df1
numpy를 사용하면 .mask를 여러번쓰지 않고 np.where을 쓰면 된다
참고 자료
엑셀투 파이썬 "엑셀의 If조건문"
https://www.youtube.com/watch?v=r61OI_E6T6I