기본적인 엑셀 편집은 배웠고, 이제 자주 사용하는 수식을 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이라는 열을 추가하겠습니다.
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 문으로 컬럼을 만들어주는 것까지 배웠습니다.
'데이터분석과 AI > 파이썬을 엑셀처럼 쓰기' 카테고리의 다른 글
9. 채우기 (apply문) (4) | 2022.12.14 |
---|---|
8. 채우기(for문) (2) | 2022.12.13 |
7. 컬럼을 추가하고 삭제하기(drop) (4) | 2022.12.01 |
6. DataFrame에 필터 걸기(loc, iloc) (0) | 2022.09.25 |
5. 데이터의 기본 개요 확인 방법 (info, describe) (0) | 2022.09.16 |
댓글