본문 바로가기

Pandas/실전

판다스 - 가상 쇼핑몰 고객 주문 데이터 : 고객별 주문을 가장 많이 하는 시간은?

반응형

https://steadiness-193.tistory.com/160

 

판다스 - 가상 쇼핑몰 고객 주문 데이터 : 몇시에 Push 마케팅하는게 제일 좋을까?

https://steadiness-193.tistory.com/155 판다스 - 가상 쇼핑몰 고객 주문 데이터 : 연월별 매출, 요일별 매출 https://steadiness-193.tistory.com/154 판다스 - 가상 쇼핑몰 고객 주문 데이터 : 전체 매출, 국가..

steadiness-193.tistory.com

위 포스팅의 Push Notification 내용과 연결됩니다.

 

 

 

 

 

 

데이터 불러오기

 

 

 

위 포스팅에서 추가한 Hour 컬럼도 있음을 확인했다.

 

 

 

 

 

 

 

 

개인 맞춤형 시간대별 주문량을 파악해야한다.

 

 

방법1

CustomerID와 Hour 컬럼으로 그룹핑, count 이용

 

 

 

count를 이용했기에 어떤 컬럼을 선택하는 크게 상관 없다.

 

 

 

Quantity 컬럼으로 시리즈화

 

 

위 데이터에서 12347 고객을 살펴보면

 

 

14시에 가장 주문을 많이 하는 것을 알 수 있다.

 

 

제일 큰 값의 인덱스를 얻으려면

 

idxmax를 이용한다.

 

이처럼 14시를 얻을 수 있다.

 

 

 

 

 

 

 

데이터프레임화 (reset_index, rename)

 

인덱스를 리셋해주고 

 

Quantity 컬럼을 Orders로 이름을 바꿔주었다.

 

 

 

 

 

함수 정의

 

 

 

이제 다시 위 데이터프레임을 고객ID로 그룹핑한 다음

 

get_max 함수를 이용하면

 

고객별 주문량이 제일 많은 시간을 구할 수 있다.

 

 

 

 

 

 

판다스 - groupby : 멀티인덱스, idxmax 활용

데이터 만들기 위와 같은 데이터프레임이 있다. [목표 : Alpha, Key 멀티인덱스로 그룹화하여 Val 컬럼 기준 제일 높은 값의 인덱스를 이용해, 그 인덱스의 행만 추출] 우선 idxmax의 개념은 값이 제일

steadiness-193.tistory.com

get_max에 대한 보충 설명은 위 포스팅 참조

 

 

 

 

 

 

 

 

위에서 봤던대로 12347 고객은

 

14시에 제일 주문을 많이 하는 것을 체크할 수 있다.

 

 

 

 

 

result

 

 

한번 더 정리해주면 최종 result 데이터프레임이 완성된다.

 

 

 

 

이를 다시 한번 Hour로 그룹핑한 뒤

 

시간대별 주문량이 많은 고객을 찾을 수도 있다.

 

 

 

Hour로 그룹핑, groups

 

 

 

사전 형식이기 때문에 시간을 키로 이용해 값을 빼온 뒤

 

그 값을 인덱서로 이용하면 시간대별 주문량이 많은 고객을 찾을 수 있다.

 

예를 들어 7시에 주문을 많이 하는 고객은

 

 

 

 

위와 같이 8명으로 확인된다.

 

 

 

 

 

방법2

Hour 컬럼 추가 없이 진행

 

 

set_index와 groupby에 하나의 컬럼, 그리고 lambda를 동시에 이용한다.

 

 

 

 

 

보충 설명은 아래 포스팅 참조

 

 

판다스 - groupby : set_index와 사용자 정의 함수로 그룹핑

판다스 - groupby : 함수로 그룹핑하기 사전이나 시리즈로 그룹핑하는 것보다 함수로 그룹핑하는 것이 보다 더 일반적이다. 그룹 색인으로 넘긴 함수는 색인값 하나마다 한 번씩 호출되며 반환값��

steadiness-193.tistory.com

 

 

 

 

 

 

기존 방법처럼 굳이 get_max 함수를 정의하지 않아도

 

 

 

그룹핑한 객체에 idxmax를 이용하면

 

해당 인덱스를 구할 수 있다.

 

이를 loc에 이용하면 된다.

 

 

 

 

 

result2

 

 

위 result와는 달리 고객ID를 인덱스로 남겨놨다.

 

 

 

 

 

시간대별로 그룹핑, groups

 

 

 

고객ID를 인덱스로 남겨놔서

 

시간을 사전의 키로 이용한 뒤 values를 뽑아내면

 

시간대별 고객ID를 바로 볼 수 있다.

 

 

 

인덱싱

 

 

 

두가지 방법 모두 결과는 동일하니 편한 것을 이용하면 된다.

 

 

위 결과를 이용해서 단순히 시간으로만 Push 알람을 보내는 것이 아니라

 

고객별로 구매를 많이 하는 시간을 파악해서

 

개별화된 마케팅을 진행해야 할 것이다.

 

 

반응형