데이터 정리와 탐색적 분석

Python으로 배우는 A/B Testing

Moe Lotfy, PhD

Principal Data Science Manager

결측치 정리

  • 결측치
    • 삭제, 무시, 대치
# 평균 주문 금액 계산
checkout.order_value.mean()
30.0096
# 결측치를 0으로 채운 뒤 평균 계산
checkout['order_value'].fillna(0).mean()
25.3581
Python으로 배우는 A/B Testing

중복 정리

  • 중복
    • 동일한 행은 삭제해야 함
# 로깅 이슈로 인한 중복 행 확인 
print(len(checkout))
print(len(checkout.drop_duplicates(keep='first')))
9000
9000
Python으로 배우는 A/B Testing

중복 정리

  • 중복
    • 중복 사용자 처리는 신중히.
# B 그룹의 고유 사용자 수
print(checkout[checkout['checkout_page'] == 'B']['user_id'].nunique())
# 최소 1회 구매한 고유 사용자 수
print(checkout[checkout['checkout_page'] == 'B'].groupby('user_id')['purchased'].max().sum())
# B 그룹의 총 구매 이벤트 수
print(checkout[checkout['checkout_page'] == 'B']['purchased'].sum())
2938
2491.0
2541.0
Python으로 배우는 A/B Testing

EDA 요약 통계

  • 평균, 개수, 표준편차 요약
checkout.groupby('checkout_page')['order_value'].agg({'mean','std','count'})
                    mean     count    std
checkout_page            
        A        24.956437    2461    2.418837
        B        29.876202    2541    7.277644
        C        34.917589    2603    4.869816
Python으로 배우는 A/B Testing

EDA 시각화

  • 막대 그래프
sns.barplot(x=checkout['checkout_page'], y=checkout['order_value'], estimator=np.mean)
plt.title('체크아웃 페이지별 평균 주문 금액')
plt.xlabel('체크아웃 페이지')
plt.ylabel('주문 금액 [$]')

체크아웃 페이지별 평균 주문 금액 막대그래프

Python으로 배우는 A/B Testing

EDA 시각화

  • 히스토그램
sns.displot(data=checkout, x='order_value', hue = 'checkout_page', kde=True)

주문 금액의 히스토그램

Python으로 배우는 A/B Testing

EDA 시각화

  • 시계열(선 그래프)
sns.lineplot(data=AdSmart,x='date', y='yes', hue='experiment', errorbar=None)

광고에 예스로 응답한 사용자 비율의 시계열 그래프

1 Adsmart Kaggle dataset: https://www.kaggle.com/datasets/osuolaleemmanuel/ad-ab-testing
Python으로 배우는 A/B Testing

연습해 봅시다!

Python으로 배우는 A/B Testing

Preparing Video For Download...