데이터 가져오기
import pandas as pd
customers = pd.read_csv('marketing_campaign.csv', sep='\t', index_col='ID')
customers
아래의 사진을 보면 업데이트는 2021년8월23일 기준으로 되었다.

즉, 2021에서 탄생년도를 빼면 나이가 나온다.
# 나이 계산 - 데이터셋이 2021.08.23임
2021-customers['Year_Birth']
이를 insert 메소드로 새로운 컬럼 추가.
customers.insert(loc=1, column='Age', value= 2021-customers['Year_Birth'])
| 구분 | 나이 범위 | 설명 |
|---|---|---|
| 아동 | 0세부터 만 12세까지 | 0세부터 12세까지의 나이를 아동으로 분류. |
| 청소년 | 만 13세부터 만 19세까지 | 13세부터 19세까지의 나이를 청소년으로 분류. |
| 청년 | 만 20세부터 39세까지 | 20세부터 39세까지의 나이를 청년으로 분류. 청년은 취업, 결혼, 주택 구입 등의 중요한 이벤트가 발생하는 시기입니다. |
| 중년 | 만 40세부터 64세까지 | 40세부터 64세까지의 나이를 중년으로 분류. 중년은 청년기 이후의 성숙한 시기로 여겨지며, 가정을 이루고 가족을 양육하는 등의 책임을 맡을 때입니다. |
| 노년 | 만 65세 이상 | 65세 이상의 나이를 노년으로 분류. 노년은 고령자로 여겨지며, 사회적 보호와 건강 관리 등에 대한 관심이 증가합니다. |
구분은 위의 표와 같다.
이를 함수를 통해 구분지어보자.
def classify_age(age):
if age >=0 and age <= 12:
return 'Child'
elif age>= 13 and age <= 19:
return 'Teenager'
elif age>=20 and age <= 39:
return 'Young Adult'
elif age>=40 and age<=64:
return 'Middle-aged'
elif age>=65:
return 'Elderly'
else:
return 'Invalid age'
(age)에 나이가 들어가면 구분을 해주는 함수이다.
이제 customers 데이터 프레임의 Age 컬럼을 함수 인자에 넣어주자.
특정 함수를 시리즈 형태로 하나하나 실행시켜주는 메소드
customers['Age'].apply(classify_age)

Age 컬럼의 데이터를 하나하나 classify_age 인자 값에 넣어준다.
이를 컬럼에 추가해 주자
customers['Age_Group'] = customers['Age'].apply(classify_age)
이렇게 하면 맨 마지막 컬럼에 저장이 되는 것은 이제 사진을 보지 않아도 알 수 있다.
이렇게 컬럼을 추가 했을때 다시 재배치하는 방법을 알아보자.
.pop() 메소드는 컬럼을 빼오는 기능을 가지고 있다.
data = customers.pop('Age_Group') #컬럼을 빼오고
customers.insert(2, 'Age_Group',data) # insert로 넣어준다.
customers

그럼 Age 컬럼 옆으로 Age_Group 이 추가된 것을 확인할 수 있다.
육류, 어류에 대한 지출금액을 합산해보자.
소비량 정보가 있는 컬럼만 가져와보자.
나는 iloc. 을 이용하여 가져왔다.
customers.iloc[:,10:16]

육류 소비 데이터 MntMeatProducts 컬럼
어류 소비 데이터 MntFishProducts 컬럼의 합계를 구해주는 함수를 만들어보았다.
def total_meat_fish(row):
meat = row['MntMeatProducts']
fish = row['MntFishProducts']
return sum(meat,fish)
이제 이걸 apply 로 연산해주자.
customers.apply(total_meat_fish)

오잉!? 오류가 뜬다…!!!
확인해보니 기본적으로 컬럼을 기준으로 더하기 때문에
axis = index로 바꿔주어 컬럼과 컬럼을 연산할 수 있게 해줘야 된다.
customers.apply(total_meat_fish, axis=1)

이 데이터를 Income (수익)컬럼 옆에 둬서
육류와 어류 소비량에 대한 수익을 눈으로 보기 쉽게 해보자.
customers.insert(6,'meat+fish',customers.apply(total_meat_fish, axis=1))

lambda를 이용해서 컬럼을 추가해보자.
원화를 볼 수 있는 컬럼을 가져와 보자.
1달러에 1312원이라고 가정했을 때
Income * 1312 = 원화일 것 이다.
# 2023-12-09 기준 1달러 == 1312원
customers['Income']*1312 # 계산
customers.insert(loc=6, column='Income_kr', value=customers['Income']*1312) #계산값 컬럼
