으쌰으쌰! 팀 프로젝트/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)

  • 분석 전, 데이터를 관련 그룹으로 나누는 일종의 행동분석.
  • 모든 고객을 분할하는ㄷ ㅐ신, 고객의 수명주기 전반에 걸쳐 패턴을 명확하게 볼 수 있음.
시간집단 행동집단 규모집단
-특정 기간동안 제품이나 서비스에 가입한 고객
-사용하기 시작한 시점을 기준으로 고객의 행동을 볼 수 있음.
-월별 / 분기별 / 일별
-과거에 제품을 구매했거나 서비스에 가입한 고객
-가입한 제품 / 서비스 유형에 따라 그룹화 (기본서비스와 고급서비스 가입 고객의 요구사항 차이 有)
-주어진 기간 동안 주문금액의 대부분을 지출한 제품 유형