
데이터 가공을 완료 후, 1) 고객 데이터에 대해서 탐색하기
customer_join.groupby("class_name").count()["customer_id"]
# class_name으로 분류해서 고객들이 어떤 class를 많이 듣는지 확인하기
class_name
0_종일 2045
1_주간 1019
2_야간 1128
Name: customer_id, dtype: int64
#결과: 종일반이 절반
customer_join.groupby("campaign_name").count()["customer_id"]
#고객들이 어떤 행사에 많이 속해있나?
customer_join.groupby("gender").count()["customer_id"]
#성별은?
customer_join.groupby("is_deleted").count()["customer_id"]
#현재 가입된 회원과 탈퇴한 회원 수는?
등등, 고객을 그룹핑해보고, 1) 가설을 세워본다.
"행사에 대한 성별 간 선호도라던가, 올 해 가입한 인원들은 어떤 특징들을 갖고있었나 등. 이쯤 얻은 가설들은 집계를 통해서도 얻는 것도 중요하지만, 현장의 목소리. 즉, 이 데이터의 경우에는 회원들의 목소리를 직접 청취해보시는 게 좋습니다. 그렇게 되면 더 좋은 가설이나 인사이트들을 얻을 수 있는 경우가 많기 때문입니다. "
--> 오, 나중에 써먹을 때 유용한 ment다.
2) dataframe에 있는 몇년 몇월 몇일같은 시간 데이터의 경우, datetime형이 아니면, datetime형으로 변환한다.
#start_date를 datetime형으로 변환합시다.
#customer_start 변수에 start_date 기준으로 2018년 4월 1일에 이후의 유저의 데이터를 저장하고 개수를 세어봅시다.
customer_join["start_date"] = pd.to_datetime(customer_join["start_date"])
customer_start = customer_join.loc[customer_join["start_date"]>pd.to_datetime("20180401")]
print(len(customer_start))
2019년 3월(2019년 3월 31일)에 탈퇴한 고객이나 아직 재적(다니고 있는)중인 고객을 추출합니다.
또, 추출한 데이터가 제대로 추출됐는지 확인하기 위해서 end_date의 유니크 개수를 확인해봅시다.
#unique()는 해당 열의 데이터에서 유니크한 값들의 개수를 보여줍니다.
customer_join["end_date"] = pd.to_datetime(customer_join["end_date"])
#end_date도 datetime형으로 변환해주고!
# 2019년 3월(2019년 3월 31일)에 탈퇴한 고객과 재적중인 고객을 추출
customer_newer = customer_join.loc[(customer_join["end_date"]>=pd.to_datetime("20190331"))|(customer_join["end_date"].isna())]
# end_date가 3월 31일보다 크거나 같고 or null 값(탈퇴를 안함) 구하기
print(len(customer_newer))
customer_newer["end_date"].unique()
"출력한 결과 데이터는 2,953건이고, end_date의 유니크한 값은 NaT, 2019-03-31입니다. 이는 end_date의 값이 NaT이거나 2019-03-31이거나 두 가지 중 하나의 값을 가진다는 의미입니다. NaT는 datetime형의 결측치라는 의미로, 여기서는 탈퇴하지 않은 고객을 나타냅니다."
[중간요약]
제일 처음 : class_join으로 전체 데이터에 대해서 그룹핑해보고 특성 파악
그 다음 : class_newer로 "3월 31일에 탈퇴한 고객"으로 좁혀서 특성 파악
2019년 3월 데이터에 대해서 클래스 구분, 캠페인 구분, 성별로 데이터를 파악
customer_newer.groupby("class_name").count()["customer_id"]
customer_newer.groupby("campaign_name").count()["customer_id"]
customer_newer.groupby("gender").count()["customer_id"]
" 캠페인 구분은 약간 차이가 있어, 전체를 집계했을 때는 일반으로 입회한 유저가 72%였던 것에 반해, 2019년 3월만 집계했을 때는 일반 입회 회원 비율이 81%입니다. (일반의 비율이 늘었습니다.) 입회 캠페인이 회원 비율 변화에 영향을 미쳤다고 추측할 수 있습니다. "
이용 이력 데이터(uselog) 추가해서 고개 탐색
: 이용 이력 데이터는 시간적인 요소를 분석 가능
한 달 이용 횟수의 변화와 회원이 스포츠 센터를 정기적으로 이용하는지, 비정기적으로 이용하는지와 같은 것 파악가능
[월 이용 횟수의 평균값, 중앙값, 최솟값을 고객 데이터에 추가]