본문 바로가기

분류 전체보기339

[Pandas] 파이썬으로 이커머스 데이터 A/B test 결과 해석 (feat. 통계 검정) 데이터 출처 : 케글 https://www.kaggle.com/code/sergylog/ab-test-data-analysis 라이브러리 & 데이터 불러오기 import numpy as np import pandas as pd from scipy.stats import mannwhitneyu from scipy.stats import ttest_ind from scipy.stats import norm from scipy.stats import pearsonr from scipy.stats import shapiro import matplotlib.pyplot as plt import seaborn as sns from tqdm.auto import tqdm df = pd.read_csv('AB_Test.. 2024. 1. 30.
[PostgreSQL] 7. 사용자 등록 수의 추이와 경향 보기 다음과 같이 SNS 서비스에서 수집된 데이터의 예시로 실습한다. 1. 등록 수의 추이와 경향 보기 사용자 등록이 필요한 서비스에서 등록 수는 중요한 지표이다. 등록자가 감소 경향을 보인다면 서비스를 활성화하기 어려워진다는 의미이고, 반대로 등록자가 증가 경향을 보인다면 사용자가 서비스에서 이탈할지 아닐지를 분석해서 서비스 활성화와 연결할 수 있어야 한다. 사용자 이탈 여부를 살피기 전에, 먼저 현재 등록 수를 파악해본다. ▶︎ 날짜별 등록 수의 추이 SELECT register_date , count(DISTINCT user_id) AS register_count FROM mst_users GROUP BY 1 ORDER BY 1 ▶︎ 월별 등록 수의 추이 등록 날짜에서 연-월을 추출하고, 이를 기준으로 .. 2024. 1. 30.
[PostgreSQL] 6. RFM 분석으로 사용자 그룹 나누기 RFM 분석 Recency : 최근 구매일 최근에 무언가를 구매한 사용자를 우량 고객으로 취급 Frequency : 구매 횟수 사용자가 구매한 횟수를 세고, 많을수록 우량 고객으로 취급 Monetary : 구매 금액 합계 사용자의 구매 금액 합계를 집계하고, 금액이 높을수록 우량 고객으로 취급 👉 지난 포스팅에서 살펴본 Decile 분석에서는 한 번의 구매로 비싼 물건을 구매한 사용자와 정기적으로 저렴한 물건을 여러 번 구매한 사용자가 같은 그룹으로 판정되기도 한다. 하지만 RFM 분석은 이러한 사용자들도 구분할 수 있다. 1. RFM 구하기 고객별로 가장 최근 구매일과 구매 금액이 있다면 RFM을 구할 수 있다. max(dt)로 가장 최근 구매일을 구하고, current_date와의 날짜 차이를 구한다.. 2024. 1. 30.
[PostgreSQL] 5. Decile 분석을 사용해 사용자를 10단계 그룹으로 나누기 Decile 분석 사용자 특징 분석시 성별과 연령 등의 데이터가 있다면 이러한 속성에 따른 특징을 확인할 수 있다. 데모그래픽한 데이터가 존재하지 않는 경우, 사용자 액션으로 속성을 정의해 보는 것도 좋다. 데이터를 10단계로 분할해서 중요도를 파악하는 것을 'Decile 분석'이라고 한다. 여기서는 사용자의 구매 금액에 따라 순위를 구분하고 중요도를 파악하는 리포트를 만들어본다. 📢 단, Decile 분석은 데이터 검색 기간에 따라 문제가 있다. 검색 기간이 너무 장기간이면 과거의 우수 고객이었지만, 현재는 휴면인 고객이 포함될 가능성이 있다. 반대로 검색 대상이 단기간이라면 정기적으로 구매하는 안정 고객이 포함되지 않고, 해당 기간 동안에만 일시적으로 많이 구매한 사용자가 우수 고객으로 취급 될 수 .. 2024. 1. 30.
[PostgreSQL] 4. 사용자의 방문 빈도 집계하기 사용자가 일주일 또는 한 달 동안 서비스를 얼마나 쓰는지 알면 분석에 큰 도움이 된다. 이번엔 '서비스를 한 주 동안 며칠 사용하는 사용자가 몇 명인지' 집계하는 방법을 알아본다. 👆 위 데이터를 바탕으로 한 주 동안 매일 몇 명의 사용자가 방문했는지 파악하고 구성비누계도 계산한다. 한 주 동안 며칠 방문했는지 사용자 수를 집계 먼저 timestamp에서 날짜만 추출한다. 유저 별로, 일주일 동안 며칠 방문했는지 count 한다. (Where 조건과, count(distinct) 사용) 카운트 된 일 수(방문 일 수) 기준으로 유저 아이디 count를 한다. 👉 결과 예로, 7일 중 2일 방문한 사용자가 2명이다. WITH action_log_with_dt AS ( SELECT * , substring(.. 2024. 1. 29.
[PostgreSQL] 3. 연령별 특징 추출하기 2에서 사용한 연령별 구분을 기반으로 각각 구매한 상품의 카테고리를 집계해보자. 연령과 나이를 구분하여 카테고리를 만드는 것까지는 이전 포스팅과 동일하다. WITH mst_users_with_int_birth_date AS ( SELECT * , 20170101 AS int_specific_date ,CAST(replace(substring(birth_date, 1, 10), '-', '') AS integer) AS int_birth_date FROM mst_users ) , mst_users_with_age AS ( SELECT * , floor((int_specific_date - int_birth_date)/10000) AS age FROM mst_users_with_int_birth_date ).. 2024. 1. 29.
[PostgreSQL] 2. 연령별 구분 집계 연령별 구분 집계 시청률 분석에 많이 사용되는 연령별 구분을 집계해본다. 다음 표를 기반으로 사용자의 연령별 구분을 집계한다. 데이터는 다음과 같다. 사용자 나이 구하기 나이는 생일과 특정 날짜를 정수로 표현하고, 이 차이를 10,000으로 나누는 방법으로 간단히 구할 수 있다. 먼저 특정 날짜를 정수로 표현한다(기준 날짜) 사용자 생년월일(문자형)을 다음과 같이 정수 표현으로 반환한다. WITH mst_users_with_int_birth_date AS ( SELECT * , 20170101 AS int_specific_date ,CAST(replace(substring(birth_date, 1, 10), '-', '') AS integer) AS int_birth_date FROM mst_users .. 2024. 1. 29.
[PostgreSQL] 1. 사용자의 액션 수 집계 사용자 데이터 서비스를 제공하는 측에서 사용자와 관련된 정보로 알고 싶은 것을 정리해보면 다음과 같다. 사용자의 속성(나이, 성별, 주소지 등) 사용자의 행동(구매한 상품, 사용한 기능, 사용하는 빈도) 👉 어떤 속성의 사용자가 사용중인가?와 어떻게 사용하는가?를 파악하지 않고 서비스 개선을 검토할 수는 없다! 사용자 마스터 테이블 일반적으로 이커머스 사이트는 가입한 뒤, 로그인을 하고 사용한다. 따라서 사용자 정보를 저장하는 '사용자 마스터 테이블'이 존재한다. 예시는 다음과 같다. 액션 로그 테이블 일반적으로 서비스와 관련된 업무 데이터가 저장된 데이터베이스에 관심 상품 등록, 카트 추가, 구매, 댓글 등 각각의 테이블이 있을 것이다. 그래도 다음과 같이 액션 로그 테이블을 따로 만들어 내부에 별도 .. 2024. 1. 29.
리텐션(Retention)이란? 리텐션을 측정하는 지표 👉 리텐션을 측정하는 데 크게 다섯가지 방법이 있다. 코호트 리텐션 (Cohort Retention) 리텐션 커브 (Retention Curve) Day N Retention Bracket Retention, 혹은 Bounded Retention Unbounded Retention, 혹은 On and After Retention 1. 코호트 리텐션 👉 코호트는 동질적인 특성을 공유하는 사람들의 집합을 가리키는 말로, 주로 '같은 시기에 가입한 사용자들'을 가리키는 용어로 쓰임 👉 가입 시기 외에도 다양한 기준에 따라 코호트를 구분할 수 있음 (인구통계학적 특성, 프로덕트 내 특정 행동 여부) 코호트 리텐션이란 특정 코호트 유저들이 시간이 경과함에 따라 유지되는 비율을 뜻한다. 예를.. 2024. 1. 27.
728x90