으쌰으쌰! 팀 프로젝트/MINI 3 (비즈니스 분석)
데이터 전처리에 필요한 내용 복습
니츄
2023. 3. 9. 16:11
📝 용량 줄이기
1. parquet 사용하기
df = pd.read_csv('어쩌구.csv')
df.to_parquet('df.parquet.gzip', compression='gzip')
2. downcast 사용하기
1) 데이터 불러오기
2) 데이터 형식 확인하기
3) 수치형 데이터를 다운캐스트
int => float64 : pd.to_numeric(df['컬럼'], downcast='unsigned')
float64 => float32 : pd.to_numeric(df['컬럼'], downcast='float')
📝 상위값 구하기
-기준컬럼명 : 기준
-그룹컬럼명 : 그룹
-연산 : 평균과 합계
-합계 상위 10개 추출하기.
df.groupby('그룹')['기준'].agg(["mean","sum"]).nlargest(10, "sum").style.format("{:,.0f}")
📝 stack과 unstack
📝 날짜형식 변환
1. object 타입으로 되어있는 날짜를 날짜형식(datetime64)으로 변환하기
df['날짜'] = pd.to_datetime(df['날짜'])
2. 연도, 월, 일, 요일 추출하기
df['연도'] = df['날짜'].dt.year
df['월'] = df['날짜'].dt.month
df['일'] = df['날짜'].dt.day
df['요일'] = df['날짜'].dt.dayofweek
# 요일은 일요일~토요일 순서로 0~6의 숫자로 표시됨.
# 같은 방법으로 'time', 'hour'에 대한 파생변수도 생성 가능.
3. 요일 한글로 바꿔주기 (list comprehension)
day_name = [w for w in "월화수목금토일"]
day_name
📝 빈도수 시각화하기 (countplot)
-countplot을 사용하면 그룹을 따로 짓거나 개수를 세지 않고도 그래프를 그려 빈도수를 비교할 수 있다.
import seaborn as sns
plt.figure(figsize=(12,4))
sns.countplot(data=df, x='월')
📝 유효한 데이터 추출하기
1. 특정 컬럼에 null값이 있는 행은 제거하고 / 특정 컬럼의 값이 0 이상인 행만 불러오기
df_valid = df[df['컬럼'].notnull()&(df['컬럼2']>0)].copy()
2. 결측치를 다른 컬럼의 값으로 대체하기
df['A'] = df['A'].fillna(df['B'])
3. 중복데이터 중 첫번째 값만 남기기
df[df.duplicated(keep='first')]
📝 고객 기준으로 데이터 변형하기
1. 가입자 1명이 특정 기간동안 지출한 평균 금액 구하기
# ARPPU - CustomerID 를 사용할 때는 count가 아닌 nunique 를 사용합니다.
arppu = df_valid.groupby(["월"]).agg({"TotalPrice": "sum",
"고객ID": "nunique"})
arppu["ARPPU"] = arppu["TotalPrice"] / arppu["고객ID"]
2. 월별 고객ID의 유일값 개수 구하기 (유입수)
df_valid.groupby("월").agg({"고객ID":"nunique"})
📝 RFM : 가치있는 고객 추출
- Recency : 거래의 최근성 - 고객이 얼마나 최근에 구입했는가?
- Frequency : 거래의 빈도 - 고객이 얼마나 빈번하게 우리 상품을 구입했나?
- Monetary : 거래의 규모 - 고객이 구입했던 총 금액은 어느 정도인가?
※ 구매행동별 고객집단을 만들어 집단별 차별화된 마케팅 전략을 수집해야 함.
기준 | 예시 |
판매정보 | 거래금액, 횟수 |
인구통계학적 정보 | 나이, 성별, 직업, 학력, 거주지역, 소득수준 |
라이프스타일 정보 | 순차적, 구매정보, RFM 정보 |
심리정보 | 구매욕구 |
행동정보 | 구매패턴 |
※ 고객을 세분화하여 RFM_score을 만든 후, 이를 기준으로 고객 등급을 설정할 수 있음.
📝 AARRR
- Acquisition - 어떻게 우리 서비스를 접하고 있는가?
- Activation - 사용자가 처음 서비스를 이용할 때 긍정적인 경험을 제공하는가?
- Retention - 이후의 서비스 재사용률은 어떻게 되는가?
- Referral - 사용자가 자발적 바이럴, 공유를 일으키고 있는가?
- Revenue - 최종 목적(매출)으로 연결되고 있는가?
📝 코호트 분석(Cohort Analysis)
- 분석 전, 데이터를 관련 그룹으로 나누는 일종의 행동분석.
- 모든 고객을 분할하는ㄷ ㅐ신, 고객의 수명주기 전반에 걸쳐 패턴을 명확하게 볼 수 있음.
시간집단 | 행동집단 | 규모집단 |
-특정 기간동안 제품이나 서비스에 가입한 고객 -사용하기 시작한 시점을 기준으로 고객의 행동을 볼 수 있음. -월별 / 분기별 / 일별 |
-과거에 제품을 구매했거나 서비스에 가입한 고객 -가입한 제품 / 서비스 유형에 따라 그룹화 (기본서비스와 고급서비스 가입 고객의 요구사항 차이 有) |
-주어진 기간 동안 주문금액의 대부분을 지출한 제품 유형 |