A/B Testing in Python
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
# Check for duplicate rows due to logging issues
print(len(checkout))
print(len(checkout.drop_duplicates(keep='first')))
9000
9000
# 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
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
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 [$]')
sns.displot(data=checkout, x='order_value', hue = 'checkout_page', kde=True)
sns.lineplot(data=AdSmart,x='date', y='yes', hue='experiment', ci=False)
A/B Testing in Python