본문 바로가기
데이터분석과 AI/파이썬을 엑셀처럼 쓰기

10. 수식 (if문)

by 우공80 2022. 12. 14.
728x90

if문

기본적인 엑셀 편집은 배웠고, 이제 자주 사용하는 수식을 Python에서 어떻게 쓰는지 배워보겠습니다.

가장 먼저 배울 것은 IF문입니다.

if문은 다음과 같이 사용합니다.

if 조건:
	실행문

예제를 한번 볼까요?

x를 입력받아서 짝수인지 홀수인지 판단한다고 하겠습니다.

x에 10을 입력했고, % 는 나머지를 구하는 연산자입니다. 2로 나누어서 나머지가 0이면 짝수, 0이 아니면 홀수로 출력하였습니다.

x=10
if x%2 ==0:
    print("짝수")
else:
    print("홀수")

어렵지 않죠?

이제 이것을 응용해서 boston_data의 값에 적용하겠습니다.

boston_price 데이터는 대부분 수치형으로 되어있습니다. 조금 보기 편하게 범주로 묶어볼까 합니다.

DIS(5개의 보스턴 직업센터까지의 접근성 지수)를 범주형 데이터로 변경하여 DIS_CAT이라는 열을 추가하겠습니다.

describe()

DIS를 몇 개의 범주로 나눌지 describe() 함수로 확인해봅니다.

#우선 기술 통계를 다시 확인합니다.
boston_price['DIS'].describe()

Output:

count    506.000000
mean       3.795043
std        2.105710
min        1.129600
25%        2.100175
50%        3.207450
75%        5.188425
max       12.126500
Name: DIS, dtype: float64

최소값 1.1296에서 최댓값 12.12 65의 범위를 가지고 있습니다.

대략 3의 간격으로 "4 미만", "4 이상 7 미만", "7 이상 10 미만", "10 이상" 4개로 나누어서 범주화하겠습니다.

엑셀에서는 어떻게 할까요? 아래처럼 if문을 중첩하여 수식을 써주고 채우기 기능으로 전체 칸을 채우면 됩니다.

수식을 넣고 핸들을 드래그하면
수식으로 채워졌습니다.

Python에서도 비슷합니다. 우선 IF문을 쓰고 apply 함수로 빈칸을 채워주면 됩니다. 

lambda 식으로 if-else문을 쓸 때는 다음과 같이 사용합니다.

lambda x: "참일 때" if 조건 else "거짓일 때"

if-else문이 중첩될 때는, 다음과 같이 else 뒤의 대체하면 됩니다. 

lambda x: "참일 때" if 조건 else ("참일 때" if 조건 else "거짓일 때")

이제 위에 정한 대로 if-else 문을 lambda 식으로 작성하여 DIS_CAT에 대입하면 다음과 같습니다.

boston_price['DIS_CAT']=boston_price['DIS'].apply(lambda x: "4미만" if x<4 else ("4이상 7미만" if x<7 else ("7이상 10미만" if x <10 else ("10이상"))))

또는 lambda 식을 함수로 정의해서 사용할 수도 있습니다.

함수는 다음과 같은 형식으로 작성합니다.

def 함수이름(매개변수):
	실행문
    return 반환값

DIS의 값을 범주형으로 변경하는 함수를 작성하면 다음과 같습니다.

def dis_cat(num):
    if num<4:
        return "4미만"
    elif num<7:
        return "4이상 7미만"
    elif num < 10:
        return "7이상 10미만"
    else:
        return "10이상"

lambda  함수 대신에 별도로 정의한 dis_cat 함수를 사용하면 다음과 같습니다.

boston_price['DIS_CAT']=boston_price['DIS'].apply(dis_cat)
boston_price.head()

Output:

이렇게 IF문에 대해서 알아보았고, IF문을 lambda 식에 적용하거나 별도 함수를 작성하여 apply 문으로 컬럼을 만들어주는 것까지 배웠습니다.

728x90

댓글