<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
A/B測試,通過分析兩種不同的行銷策略,以此來選擇最佳的行銷策略,可以高效地將流量轉化為銷售額(或轉化為你的預期目標)。
有助於找到更好的方法來尋找客戶、行銷產品、擴大影響範圍或將目標客戶轉化為實際客戶。
A/B測試是每個學習資料分析同學,都應該知道且去學習的概念。
舉個例子,我在短視訊App上購買流量推廣我的視訊(掛小黃車買課程),一共推了兩次,其中兩次的目標受眾各不相同。
在分析了兩次活動的結果後,我可能傾向於選擇第二次的活動目標受眾,因為它比第一次活動能夠帶來更好的銷售額或漲粉或播放量。
我們的目標可以是提高銷售額、粉絲數或流量等等。
當我們根據以前的行銷活動結果選擇最佳的行銷策略時,這就是A/B測試。
本次使用的資料集是開源資料集,İLKER YILDIZ在Kaggle上提交的A/B測試的資料集。
下面是資料集中的所有特徵:
1. Campaign Name: 活動名稱
2. Date: 記錄日期
3. Spend: 活動花費(單位:美元)
4. of Impressions: 廣告在整個活動中的展示次數
5. Reach: 廣告在整個活動中的展示人數(唯一)
6. of Website Clicks: 通過廣告獲得的網站點選次數
7. of Searches: 在網站上執行搜尋的使用者數量
8. of View Content: 檢視網站內容產品的使用者數量
9. of Add to Cart: 將產品新增到購物車的使用者數量
10. of Purchase: 購買次數
一共是進行了兩種型別的宣傳行銷活動:
1. Control Campaign: 對照活動
2. Test Campaign: 測試活動
通過執行A/B測試找到最適合的行銷策略,以此來吸引獲得更多的客戶。
下面小F就帶大家一起來學習下。
先安裝相關的Python視覺化庫plotly,在使用的時候發現報錯,所以還要安裝statsmodels庫。
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple statsmodels pip install -i https://pypi.tuna.tsinghua.edu.cn/simple plotly
然後匯入Python庫,讀取兩種活動的資料檔案。
import pandas as pd import datetime from datetime import date, timedelta import plotly.graph_objects as go import plotly.express as px import plotly.io as pio pio.templates.default = "plotly_white" # 設定value的顯示長度為200,預設為50 pd.set_option('max_colwidth', 300) # 顯示所有列,把行顯示設定成最大 pd.set_option('display.max_columns', None) # 顯示所有行,把列顯示設定成最大 pd.set_option('display.max_rows', None) # 載入資料 control_data = pd.read_csv("control_group.csv", sep=";") test_data = pd.read_csv("test_group.csv", sep=";")
來看看這兩個資料集的情況。
# 列印對照活動資料 print(control_data.head())
對照活動資料的情況如下。
列印測試活動資料。
# 列印測試活動資料 print(test_data.head())
測試活動資料的情況如下。
發現資料集的列名不太規範,所以對列名進行修改。
# 更改列名 control_data.columns = ["Campaign Name", "Date", "Amount Spent", "Number of Impressions", "Reach", "Website Clicks", "Searches Received", "Content Viewed", "Added to Cart", "Purchases"] test_data.columns = ["Campaign Name", "Date", "Amount Spent", "Number of Impressions", "Reach", "Website Clicks", "Searches Received", "Content Viewed", "Added to Cart", "Purchases"]
現在讓我們看看資料集是否有空值。
# 檢視空值 print(control_data.isnull().sum()) print(test_data.isnull().sum())
發現對照活動的資料集有資料缺失,可以用每列的平均值來填充這些缺失值。
# 資料淨化 control_data["Number of Impressions"].fillna(value=control_data["Number of Impressions"].mean(), inplace=True) control_data["Reach"].fillna(value=control_data["Reach"].mean(), inplace=True) control_data["Website Clicks"].fillna(value=control_data["Website Clicks"].mean(), inplace=True) control_data["Searches Received"].fillna(value=control_data["Searches Received"].mean(), inplace=True) control_data["Content Viewed"].fillna(value=control_data["Content Viewed"].mean(), inplace=True) control_data["Added to Cart"].fillna(value=control_data["Added to Cart"].mean(), inplace=True) control_data["Purchases"].fillna(value=control_data["Purchases"].mean(), inplace=True)
通過合併兩個資料集來建立一個新的資料集。
# 合併資料 ab_data = control_data.merge(test_data, how="outer").sort_values(["Date"]) ab_data = ab_data.reset_index(drop=True) print(ab_data.head())
檢視資料集中,兩種活動的樣本數量是否相同。
# 型別計數 print(ab_data["Campaign Name"].value_counts())
可以看出,每種活動都有30個樣本資料,滿足樣本均衡的條件。
01 展示次數-活動花費
首先分析兩種活動中「展示次數」和「活動花費」之間的關係。
figure = px.scatter(data_frame = ab_data, x="Number of Impressions", y="Amount Spent", size="Amount Spent", color= "Campaign Name", trendline="ols") figure.show()
發現在花費相同的情況下,「對照活動」的展示次數更多。
02 搜尋量
兩種型別活動的網站總搜尋量對比。
label = ["Total Searches from Control Campaign", "Total Searches from Test Campaign"] counts = [sum(control_data["Searches Received"]), sum(test_data["Searches Received"])] colors = ['gold', 'lightgreen'] fig = go.Figure(data=[go.Pie(labels=label, values=counts)]) fig.update_layout(title_text='Control Vs Test: Searches') fig.update_traces(hoverinfo='label+percent', textinfo='value', textfont_size=30, marker=dict(colors=colors, line=dict(color='black', width=3))) fig.show()
在網站的搜尋量上,「測試活動」略多於對照活動。
03 點選量
兩種型別活動的網站總點選量對比。
label = ["Website Clicks from Control Campaign", "Website Clicks from Test Campaign"] counts = [sum(control_data["Website Clicks"]), sum(test_data["Website Clicks"])] colors = ['gold', 'lightgreen'] fig = go.Figure(data=[go.Pie(labels=label, values=counts)]) fig.update_layout(title_text='Control Vs Test: Website Clicks') fig.update_traces(hoverinfo='label+percent', textinfo='value', textfont_size=30, marker=dict(colors=colors, line=dict(color='black', width=3))) fig.show()
在網站的點選量上,「測試活動」略多於對照活動。
04 內容產品檢視量
兩種型別活動的網站內容和產品的檢視量對比。
label = ["Content Viewed from Control Campaign", "Content Viewed from Test Campaign"] counts = [sum(control_data["Content Viewed"]), sum(test_data["Content Viewed"])] colors = ['gold', 'lightgreen'] fig = go.Figure(data=[go.Pie(labels=label, values=counts)]) fig.update_layout(title_text='Control Vs Test: Content Viewed') fig.update_traces(hoverinfo='label+percent', textinfo='value', textfont_size=30, marker=dict(colors=colors, line=dict(color='black', width=3))) fig.show()
可以看出「對照活動」的內容產品檢視量比測試活動多。
雖然差距不是很大,但是由於對照活動的網站點選率相對較低,這便意味著「對照活動」的使用者參與度(粘性)高於測試活動。
05 加購物車量
兩種型別活動,將產品新增到購物車的數量。
label = ["Products Added to Cart from Control Campaign", "Products Added to Cart from Test Campaign"] counts = [sum(control_data["Added to Cart"]), sum(test_data["Added to Cart"])] colors = ['gold','lightgreen'] fig = go.Figure(data=[go.Pie(labels=label, values=counts)]) fig.update_layout(title_text='Control Vs Test: Added to Cart') fig.update_traces(hoverinfo='label+percent', textinfo='value', textfont_size=30, marker=dict(colors=colors, line=dict(color='black', width=3))) fig.show()
儘管「對照活動」的點選率相對較低,但是卻有更多的產品被新增到購物車中。
06 活動花費
兩種型別的活動花費對比。
label = ["Amount Spent in Control Campaign", "Amount Spent in Test Campaign"] counts = [sum(control_data["Amount Spent"]), sum(test_data["Amount Spent"])] colors = ['gold','lightgreen'] fig = go.Figure(data=[go.Pie(labels=label, values=counts)]) fig.update_layout(title_text='Control Vs Test: Amount Spent') fig.update_traces(hoverinfo='label+percent', textinfo='value', textfont_size=30, marker=dict(colors=colors, line=dict(color='black', width=3))) fig.show()
在測試活動上的花費要高於對照活動。
基於上面的分析,對照活動帶來了更多的內容瀏覽量和產品新增到購物車,「對照活動」比測試活動更有效。
07 銷售額
兩種型別活動的銷售情況對比。
label = ["Purchases Made by Control Campaign", "Purchases Made by Test Campaign"] counts = [sum(control_data["Purchases"]), sum(test_data["Purchases"])] colors = ['gold','lightgreen'] fig = go.Figure(data=[go.Pie(labels=label, values=counts)]) fig.update_layout(title_text='Control Vs Test: Purchases') fig.update_traces(hoverinfo='label+percent', textinfo='value', textfont_size=30, marker=dict(colors=colors, line=dict(color='black', width=3))) fig.show()
在這兩種廣告活動當中,消費者的購買量僅相差1%左右。
由於對照活動能以更少的行銷支出獲得了更多的銷售,所以在行銷策略上,我們可以選擇對照活動型別。
最後讓我們分析其它指標,看看哪種廣告活動的轉化率更高。
08 內容產品檢視量和點選量
兩種型別活動網站內容檢視和點選量的關係。
figure = px.scatter(data_frame=ab_data, x="Content Viewed", y="Website Clicks", size="Website Clicks", color="Campaign Name", trendline="ols") figure.show()
在測試活動中,雖然網站點選率高,但是內容檢視量少,所以優先選擇「對照活動」。
09 內容產品檢視量和新增購物車
分析網站內容檢視和新增購物車之間的關係。
figure = px.scatter(data_frame=ab_data, x="Added to Cart", y="Content Viewed", size="Added to Cart", color="Campaign Name", trendline="ols") figure.show()
再一次的,「對照活動」的效果還是很好,加入購物車的意向較高。
10 新增購物車和銷售額
分析新增到購物車的產品數量和銷售額之間的關係。
figure = px.scatter(data_frame=ab_data, x="Purchases", y="Added to Cart", size="Purchases", color="Campaign Name", trendline="ols") figure.show()
雖然對照活動帶來了更多的加購物車行為,但「測試活動」的結算率會更高。
通過A/B測試,我們發現對照活動帶來了更多的銷售行為和存取者的參與。
使用者會從對照活動中檢視了更多的產品,使得購物車中有更多的產品和更多的銷售額。
但在測試活動中,使用者購物車產品的結算率會更高。
測試活動是根據內容檢視和新增到購物車會有更多的銷售。而對照活動則是整體銷量的增加。
因此,測試活動可以用來向特定的受眾推銷特定的產品,而對照活動可以用來向更廣泛的客戶推銷多種產品。
到此這篇關於通過Python實現一個A/B測試詳解的文章就介紹到這了,更多相關Python A/B測試內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45