파이썬(Python)/Basic & Data analyze

파이썬에서 IF문쓰기

DA Damla 2022. 12. 4. 21:34

파이썬에서 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