특정 사용자 모두가 구매한 물품 목록을 뽑아보려 한다. 필터링을 어떻게 활용하는지 알아보자.
※ preprocessing_purchase_list.csv 다운받기 [클릭]
데이터 준비
다음과 같이 데이터가 있다고 하자.
● item
: 상품명
● id
: 고객 식별자
1 | import pandas as pd |
item | id | |
---|---|---|
0 | a | 1 |
1 | a | 2 |
2 | b | 1 |
3 | b | 2 |
4 | b | 3 |
5 | b | 4 |
6 | c | 1 |
7 | c | 3 |
8 | c | 4 |
예를 들어 대상 고객 식별자가 1과 3이라고 했을 때 해당 고객이 구매한 상품은 다음과 같이 확인할 수 있다.
1 | id_target = [1, 3] |
item | id | |
---|---|---|
0 | a | 1 |
2 | b | 1 |
4 | b | 3 |
6 | c | 1 |
7 | c | 3 |
1 | df.loc[df["id"].isin(id_target), "item"].unique() |
사실상 대상 고객이 구매한 상품을 골라내는 것이라면 여기서 끝났겠지만, 여기서는 대상 고객 모두가 구매한 상품 목록을 추출하는 것이기 때문에 코드를 조금 더 작성해보겠다.
대상 고객 식별자가 2개이기 때문에 “item” 변수가 2번 집계된 경우는 대상 고객이 모두 구매한 상품이라고 할 수 있다.
1 | df.loc[df["id"].isin(id_target), "item"].value_counts() |
이제 필요한 것은 “b”와 “c” 상품이다. 이를 뽑아내기 위해서 코드를 길게 쓸 수도 있지만 비교적 간단하게 끝내는 코드는 다음과 같다.
1 | df_cnt = df.loc[df["id"].isin(id_target), "item"].value_counts() |