https://steadiness-193.tistory.com/160
위 포스팅의 Push Notification 내용과 연결됩니다.
데이터 불러오기
위 포스팅에서 추가한 Hour 컬럼도 있음을 확인했다.
개인 맞춤형 시간대별 주문량을 파악해야한다.
방법1
CustomerID와 Hour 컬럼으로 그룹핑, count 이용
count를 이용했기에 어떤 컬럼을 선택하는 크게 상관 없다.
Quantity 컬럼으로 시리즈화
위 데이터에서 12347 고객을 살펴보면
14시에 가장 주문을 많이 하는 것을 알 수 있다.
제일 큰 값의 인덱스를 얻으려면
idxmax를 이용한다.
이처럼 14시를 얻을 수 있다.
데이터프레임화 (reset_index, rename)
인덱스를 리셋해주고
Quantity 컬럼을 Orders로 이름을 바꿔주었다.
함수 정의
이제 다시 위 데이터프레임을 고객ID로 그룹핑한 다음
get_max 함수를 이용하면
고객별 주문량이 제일 많은 시간을 구할 수 있다.
get_max에 대한 보충 설명은 위 포스팅 참조
위에서 봤던대로 12347 고객은
14시에 제일 주문을 많이 하는 것을 체크할 수 있다.
result
한번 더 정리해주면 최종 result 데이터프레임이 완성된다.
이를 다시 한번 Hour로 그룹핑한 뒤
시간대별 주문량이 많은 고객을 찾을 수도 있다.
Hour로 그룹핑, groups
사전 형식이기 때문에 시간을 키로 이용해 값을 빼온 뒤
그 값을 인덱서로 이용하면 시간대별 주문량이 많은 고객을 찾을 수 있다.
예를 들어 7시에 주문을 많이 하는 고객은
위와 같이 8명으로 확인된다.
방법2
Hour 컬럼 추가 없이 진행
set_index와 groupby에 하나의 컬럼, 그리고 lambda를 동시에 이용한다.
보충 설명은 아래 포스팅 참조
기존 방법처럼 굳이 get_max 함수를 정의하지 않아도
그룹핑한 객체에 idxmax를 이용하면
해당 인덱스를 구할 수 있다.
이를 loc에 이용하면 된다.
result2
위 result와는 달리 고객ID를 인덱스로 남겨놨다.
시간대별로 그룹핑, groups
고객ID를 인덱스로 남겨놔서
시간을 사전의 키로 이용한 뒤 values를 뽑아내면
시간대별 고객ID를 바로 볼 수 있다.
인덱싱
두가지 방법 모두 결과는 동일하니 편한 것을 이용하면 된다.
위 결과를 이용해서 단순히 시간으로만 Push 알람을 보내는 것이 아니라
고객별로 구매를 많이 하는 시간을 파악해서
개별화된 마케팅을 진행해야 할 것이다.
'Pandas > 실전' 카테고리의 다른 글
판다스 - 구글 플레이 스토어 : 전처리 (0) | 2020.07.29 |
---|---|
판다스 - 로그데이터 분석 : 고객 이탈률이 높은 페이지는? (0) | 2020.07.23 |
판다스 - 가상 쇼핑몰 고객 주문 데이터 : 몇시에 Push 마케팅하는게 제일 좋을까? (4) | 2020.07.21 |
판다스 - 가상 쇼핑몰 고객 주문 데이터 : 우수 고객 찾기, 고객 코호트 분석 (0) | 2020.07.21 |
판다스 - 가상 쇼핑몰 고객 주문 데이터 : 고객 코호트(cohort) 분석 (0) | 2020.07.21 |