数据清洗与探索性分析

Python 中的 A/B 测试

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 测试

清洗重复值

  • 重复值
    • 完全相同的行应删除
# 由于日志问题检查重复行 
print(len(checkout))
print(len(checkout.drop_duplicates(keep='first')))
9000
9000
Python 中的 A/B 测试

清洗重复值

  • 重复值
    • 需谨慎处理重复用户。
# B 组的唯一用户数
print(checkout[checkout['checkout_page'] == 'B']['user_id'].nunique())
# 至少购买过一次的唯一用户数
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 测试

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)

按时间展示对广告回答"是"的用户占比

1 Adsmart Kaggle 数据集: https://www.kaggle.com/datasets/osuolaleemmanuel/ad-ab-testing
Python 中的 A/B 测试

Passons à la pratique !

Python 中的 A/B 测试

Preparing Video For Download...