自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Python 數(shù)據(jù)集探索與可視化實(shí)例指南

開發(fā) 后端 大數(shù)據(jù)
你的任務(wù)是提高銷售團(tuán)隊(duì)的績(jī)效。在我們假設(shè)的情況下,潛在客戶有相當(dāng)自發(fā)的需求。當(dāng)這種情況發(fā)生時(shí),您的銷售團(tuán)隊(duì)會(huì)在系統(tǒng)中放置一個(gè)訂單線索。然后,您的銷售代表會(huì)設(shè)法安排一次會(huì)議,會(huì)議將在訂單線索被注意到的時(shí)候舉行。

在今天的文章中,您將學(xué)習(xí):

  • 如何合并和整理數(shù)據(jù),
  • 如何探索和分析數(shù)據(jù),
  • 如何創(chuàng)建漂亮的圖形以可視化您的發(fā)現(xiàn)

本文適用于誰:

  • 經(jīng)常處理數(shù)據(jù)的人
  • 對(duì)Python和Pandas有基本了解的人

情景再現(xiàn):

你的任務(wù)是提高銷售團(tuán)隊(duì)的績(jī)效。在我們假設(shè)的情況下,潛在客戶有相當(dāng)自發(fā)的需求。當(dāng)這種情況發(fā)生時(shí),您的銷售團(tuán)隊(duì)會(huì)在系統(tǒng)中放置一個(gè)訂單線索。然后,您的銷售代表會(huì)設(shè)法安排一次會(huì)議,會(huì)議將在訂單線索被注意到的時(shí)候舉行。有時(shí)在前,有時(shí)在后。你的銷售代表有一個(gè)把會(huì)議和餐費(fèi)結(jié)合起來的開支預(yù)算。銷售代表花費(fèi)他們的成本,并將發(fā)票交給會(huì)計(jì)團(tuán)隊(duì)處理。在潛在客戶決定是否接受您的報(bào)價(jià)后,銷售代表會(huì)跟蹤訂單線索是否轉(zhuǎn)化為銷售。

對(duì)于分析,您可以訪問以下三個(gè)數(shù)據(jù)源:

  • 訂單線索(包含所有訂單線索和轉(zhuǎn)換信息)
  • 銷售團(tuán)隊(duì)(包括公司和負(fù)責(zé)的銷售代表)
  • 發(fā)票(提供發(fā)票和參與者的信息)

導(dǎo)入和安裝:

需要安裝標(biāo)準(zhǔn)庫(kù),此外,通過使用以下命令,在你的Notebook上安裝seaborn.

  1. !pip install seaborn 

下載數(shù)據(jù):

您可以按照上周的說明下載并合并數(shù)據(jù),也可以從此處下載文件并將其加載到 Notebook中。

 

sales_team 數(shù)據(jù)表的前兩行

 

 

order_leads數(shù)據(jù)表的前兩行

 

 

invoices數(shù)據(jù)表的前兩行

 

開始探索

總轉(zhuǎn)化率發(fā)展

 

轉(zhuǎn)化率隨時(shí)間的變化

 

事情似乎在2017年初走下坡路。經(jīng)過與首席銷售官核實(shí),發(fā)現(xiàn)大約在那個(gè)時(shí)候有一個(gè)競(jìng)爭(zhēng)對(duì)手進(jìn)入了這個(gè)市場(chǎng)。很高興知道,但我們現(xiàn)在無能為力。

 

  1. _ = order_leads.set_index(pd.DatetimeIndex(order_leads.Date)).groupby(    pd.Grouper(freq='D')     
  2.  
  3. )['Converted'].mean()    
  4. ax = _.rolling(60).mean().plot(figsize=(20,7),title='Conversion Rate Over Time')      
  5. vals = ax.get_yticks()      
  6. ax.set_yticklabels(['{:,.0f}%'.format(x*100) for x in vals])   
  7.  
  8. sns.despine() 
  1. 我們使用下劃線_作為臨時(shí)變量。對(duì)于以后不再使用的一次性變量,我通常會(huì)這樣做。
  2. 我們?cè)趏rder_leads.Date上使用了pd.DateTimeIndex并將結(jié)果設(shè)置為索引,這使我們能夠
  3. 使用pd.Grouped(freq ='D')按天對(duì)數(shù)據(jù)進(jìn)行分組。 或者,您可以將頻率更改為W,M,Q或Y(每周,每月,每季度或每年)
  4. 我們計(jì)算每天“轉(zhuǎn)換”的平均值,這將給出當(dāng)天訂單的換算率。
  5. 我們使用.roll(60)和.mean()來獲得60天的滾動(dòng)平均值。
  6. 然后我們格式化yticklables,使它們顯示一個(gè)百分號(hào)。

各銷售代表的轉(zhuǎn)化率:

各個(gè)銷售代表之間似乎存在很大的差異。 讓我們對(duì)此進(jìn)行更多調(diào)查。

就所使用的功能而言,這里沒有太多新內(nèi)容。 但是請(qǐng)注意我們?nèi)绾问褂胹ns.distplot將數(shù)據(jù)繪制到軸上。

如果我們回顧sales_team數(shù)據(jù),我們會(huì)記住并非所有的銷售代表都擁有相同數(shù)量的客戶,這肯定會(huì)產(chǎn)生影響! 讓我們檢查。

 

按分配的帳戶數(shù)分配的轉(zhuǎn)換率

 

我們可以看到,轉(zhuǎn)換率數(shù)字似乎與分配給銷售代表的帳戶數(shù)量成反比。 那些降低的轉(zhuǎn)化率是有道理的。 畢竟,代表?yè)碛械膸粼蕉?,他可以花在每個(gè)人身上的時(shí)間就越少。

在這里,我們首先創(chuàng)建一個(gè)輔助函數(shù),該函數(shù)將垂直線映射到每個(gè)子圖中,并用數(shù)據(jù)的均值和標(biāo)準(zhǔn)差注釋該線。然后我們?cè)O(shè)置一些seaborn繪圖默認(rèn)值,例如較大的font_scale和whitegrid設(shè)置為樣式。

進(jìn)餐影響:

 

進(jìn)餐數(shù)據(jù)

 

看來我們已經(jīng)確定了用餐的日期和時(shí)間,讓我們快速了解一下時(shí)間分布:

 

  1. invoices['Date of Meal'] = pd.to_datetime(invoices['Date of Meal'])     
  2. invoices['Date of Meal'].dt.time.value_counts().sort_index() 

 

  1. out
  2. 07:00:00    5536 
  3. 08:00:00    5613 
  4. 09:00:00    5473 
  5. 12:00:00    5614 
  6. 13:00:00    5412 
  7. 14:00:00    5633 
  8. 20:00:00    5528 
  9. 21:00:00    5534 
  10. 22:00:00    5647 

總結(jié):

 

  1. invoices['Type of Meal'] = pd.cut(     
  2.     invoices['Date of Meal'].dt.hour,     
  3.     bins=[0,10,15,24],     
  4.     labels=['breakfast','lunch','dinner']     

注意,這里我們是如何使用pd.cut為數(shù)字?jǐn)?shù)據(jù)分配類別的,這很有意義,因?yàn)楫吘?,早餐是?點(diǎn)還是9點(diǎn)開始,都沒有關(guān)系。

另外,請(qǐng)注意我們?nèi)绾问褂?dt.hour,我們只能這樣做,因?yàn)槲覀儗?/p>

invoices['Date of Meal']轉(zhuǎn)換為之前的日期時(shí)間。 .dt是所謂的訪問器,其中有三個(gè)cat,str和dt。 如果您的數(shù)據(jù)類型正確,則可以使用這些訪問器及其方法進(jìn)行直接操作(計(jì)算有效且簡(jiǎn)潔)。不幸的是,invoices ['Participants']是一個(gè)字符串,我們必須首先將其轉(zhuǎn)換為合法的JSON,以便我們 可以提取參與者的數(shù)量。

 

  1. def replace(x):     
  2.     return x.replace("\n ",",").replace("' '","','").replace("'",'"')     
  3. invoices['Participants'] = invoices['Participants'].apply(lambda x: replace(x))     
  4. invoices['Number Participants'] = invoices['Participants'].apply(lambda x: len(json.loads(x))) 

現(xiàn)在,我們合并數(shù)據(jù)。 為此,我們首先將公司ID上的所有發(fā)票左連接到order_leads。 但是,合并數(shù)據(jù)會(huì)導(dǎo)致所有餐點(diǎn)都加入所有訂單。 也有古老的飯菜,以最近的訂單。 為了緩解這種情況,我們計(jì)算了進(jìn)餐和點(diǎn)餐之間的時(shí)間差,并且僅考慮訂單周圍五天的進(jìn)餐。

仍然有一些訂單已分配多餐。 當(dāng)同時(shí)有兩個(gè)訂單和兩餐時(shí),可能會(huì)發(fā)生這種情況。 然后,兩餐將分配給兩個(gè)訂單線索。 要?jiǎng)h除這些重復(fù)項(xiàng),我們僅使餐點(diǎn)最接近該訂單。

 


組合數(shù)據(jù)的部分

 

我創(chuàng)建了一個(gè)繪圖欄功能,其中已經(jīng)包含一些樣式。 通過該功能進(jìn)行繪圖可以使目視檢查更快。 我們將在一秒鐘內(nèi)使用它。

進(jìn)餐類型的影響:

 

  1. orders_with_meals['Type of Meal'].fillna('no meal',inplace=True)     
  2. _ = orders_with_meals.groupby('Type of Meal').agg({'Converted': np.mean})     
  3. plot_bars(_,x_col='Type of Meal',y_col='Converted'

哇! 用餐相關(guān)的訂單與不用餐相關(guān)的訂單之間的轉(zhuǎn)換率差異非常大。 不過,看起來午餐的轉(zhuǎn)化率略低于晚餐或早餐。

時(shí)間的影響(即進(jìn)餐之前或之后進(jìn)餐):

 

  1. _ = orders_with_meals.groupby(['Days of meal before order']).agg(     
  2. {'Converted': np.mean}     
  3. )     
  4. plot_bars(data=_,x_col='Days of meal before order',y_col='Converted'

“訂購(gòu)前用餐天數(shù)”為負(fù)數(shù)表示用餐是在訂單線索輸入之后進(jìn)行的。我們可以看到,如果膳食在訂單線索進(jìn)入之前發(fā)生,則對(duì)轉(zhuǎn)化率似乎有積極影響。 訂單的先驗(yàn)知識(shí)似乎在這里給我們的銷售代表帶來了優(yōu)勢(shì)。

結(jié)合所有:

  • 現(xiàn)在,我們將使用熱圖同時(shí)可視化數(shù)據(jù)的多個(gè)維度。 為此,首先創(chuàng)建一個(gè)輔助函數(shù)。
  • 然后,我們使用一些最終數(shù)據(jù)進(jìn)行爭(zhēng)辯,以額外考慮餐食價(jià)格與訂單價(jià)值的關(guān)系,并將交貨時(shí)間分配到“訂購(gòu)前”,“訂購(gòu)前后”,“訂購(gòu)后”,而不是從負(fù)4到正4的天數(shù),因?yàn)檫@在解釋方面有些繁瑣。

運(yùn)行以下代碼片段將產(chǎn)生多維熱圖。

 

  1. draw_heatmap(     
  2.     data=data,     
  3.     outer_row='Timing of Meal',     
  4.     outer_col='Type of Meal',     
  5.     inner_row='Meal Price / Order Value',     
  6.     inner_col='Number Participants',     
  7.     values='Converted'     

 

熱圖可在一幅圖中可視化四個(gè)維度

 

該熱圖當(dāng)然很漂亮,盡管起初有點(diǎn)難讀。 因此,讓我們來看一下。 圖表總結(jié)了4個(gè)不同維度的影響:

  • 用餐時(shí)間:訂購(gòu)后,訂購(gòu)前后,訂購(gòu)前(外排)
  • 用餐類型:早餐,晚餐,午餐(外欄)
  • 餐單價(jià)格:最低價(jià)格,最低價(jià)格,比例價(jià)格,最高價(jià)格,最高價(jià)格(內(nèi)排)
  • 參加人數(shù):1,2,3,4,5(內(nèi)欄)

當(dāng)然,圖表底部的顏色似乎更深/更高,這表明:

  • 在點(diǎn)餐之前用餐時(shí),轉(zhuǎn)化率會(huì)更高
  • 當(dāng)只有一名參與者時(shí),晚餐轉(zhuǎn)化率似乎更高
  • 與訂單價(jià)值相比,看起來更昂貴的餐食對(duì)轉(zhuǎn)化率有積極影響

結(jié)果:

  • 銷售代表的帳戶不要超過9個(gè)(轉(zhuǎn)化率會(huì)迅速下降)
  • 確保每個(gè)訂單線索都伴隨有會(huì)議/進(jìn)餐(因?yàn)檫@會(huì)使轉(zhuǎn)換率翻倍當(dāng)只有一位員工來訪時(shí),晚餐最有效
  • 您的銷售代表應(yīng)支付的餐費(fèi)約為訂單金額的8%至10%
  • 時(shí)間是關(guān)鍵,理想情況下,您的銷售代表應(yīng)盡早知道即將達(dá)成交易。

單擊此處查看代碼: GitHub Repo / Jupyter Notebook

備注為熱圖:

  • 要解決可能出現(xiàn)的格式錯(cuò)誤,可以先卸載(然后在終端中必須這樣做),然后運(yùn)行以下命令,將matplotlib降級(jí)到3.1.0版:
  1. !pip install matplotlib==3.1.0 

本文轉(zhuǎn)自雷鋒網(wǎng),如需轉(zhuǎn)載請(qǐng)至雷鋒網(wǎng)官網(wǎng)申請(qǐng)授權(quán)。

責(zé)任編輯:未麗燕 來源: 雷鋒網(wǎng)
相關(guān)推薦

2022-05-07 10:14:07

Python數(shù)據(jù)可視化

2023-11-30 09:34:14

數(shù)據(jù)可視化探索

2023-05-06 12:57:34

Python工具

2020-03-11 14:39:26

數(shù)據(jù)可視化地圖可視化地理信息

2015-10-14 17:59:53

Google數(shù)據(jù)探索交互開發(fā)

2024-03-07 09:00:04

Rust數(shù)據(jù)可視化

2024-07-25 14:04:16

2018-03-07 11:35:49

Python可視化數(shù)據(jù)

2017-10-14 13:54:26

數(shù)據(jù)可視化數(shù)據(jù)信息可視化

2023-11-30 07:23:53

數(shù)據(jù)分析EDA

2023-11-06 10:04:51

Go語言大數(shù)據(jù)

2022-08-26 09:15:58

Python可視化plotly

2022-06-06 21:46:32

Kubernetes網(wǎng)絡(luò)

2023-11-24 14:02:00

Python數(shù)據(jù)分析

2022-02-23 09:50:52

PythonEchartspyecharts

2020-05-26 11:34:46

可視化WordCloud

2024-03-06 19:57:56

探索商家可視化

2017-02-07 15:54:14

數(shù)據(jù)可視化數(shù)據(jù)分析

2017-10-31 09:38:53

大數(shù)據(jù)數(shù)據(jù)可視化Python

2021-07-26 10:41:16

數(shù)據(jù)可視化設(shè)備大屏
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)