資料清理與探索性分析

Python 的 A/B 測試

Moe Lotfy, PhD

Principal Data Science Manager

清理遺漏值

  • 遺漏值
    • 刪除、忽略、插補
# Calculate the mean order value
checkout.order_value.mean()
30.0096
# Replace missing values with zeros and get mean
checkout['order_value'].fillna(0).mean()
25.3581
Python 的 A/B 測試

清理重複值

  • 重複值
    • 相同的列應該刪除
# Check for duplicate rows due to logging issues 
print(len(checkout))
print(len(checkout.drop_duplicates(keep='first')))
9000
9000
Python 的 A/B 測試

清理重複值

  • 重複值
    • 重複的使用者要審慎處理。
# Unique users in group B
print(checkout[checkout['checkout_page'] == 'B']['user_id'].nunique())
# Unique users who purchased at least once
print(checkout[checkout['checkout_page'] == 'B'].groupby('user_id')['purchased'].max().sum())
# Total purchase events in group B
print(checkout[checkout['checkout_page'] == 'B']['purchased'].sum())
2938
2491.0
2541.0
Python 的 A/B 測試

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 測試

EDA 繪圖

  • 長條圖
sns.barplot(x=checkout['checkout_page'], y=checkout['order_value'], estimator=np.mean)
plt.title('Average Order Value per Checkout Page Variant')
plt.xlabel('Checkout Page Variant')
plt.ylabel('Order Value [$]')

各結帳頁變體的平均訂單金額長條圖

Python 的 A/B 測試

EDA 繪圖

  • 直方圖
sns.displot(data=checkout, x='order_value', hue = 'checkout_page', kde=True)

訂單金額直方圖

Python 的 A/B 測試

EDA 繪圖

  • 時間序列(折線圖)
sns.lineplot(data=AdSmart,x='date', y='yes', hue='experiment', errorbar=None)

廣告回覆「yes」比例的時間序列圖

1 Adsmart Kaggle dataset: https://www.kaggle.com/datasets/osuolaleemmanuel/ad-ab-testing
Python 的 A/B 測試

一起來練習吧!

Python 的 A/B 測試

Preparing Video For Download...