欧美中文字幕第一页-欧美中文字幕一区-欧美中文字幕一区二区三区-欧美中文字幕在线-欧美中文字幕在线播放-欧美中文字幕在线视频

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

我是創(chuàng)始人李巖:很抱歉!給自己產(chǎn)品做個(gè)廣告,點(diǎn)擊進(jìn)來看看。  

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

字幕組雙語原文: Python 數(shù)據(jù)集探索與可視化實(shí)例指南

英語原文: Explore and Visualize a Dataset with Python

翻譯:AI研習(xí)社( Suen


Python 數(shù)據(jù)集探索與可視化實(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ì)的績效。在我們假設(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)庫,此外,通過使用以下命令,在你的Notebook上安裝seaborn.

!pip?install?seaborn


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

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


??

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


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


??

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

開始探索

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

Python 數(shù)據(jù)集探索與可視化實(shí)例指南 ? 轉(zhuǎn)化率隨時(shí)間的變化?

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

_?=?order_leads.set_index(pd.DatetimeIndex(order_leads.Date)).groupby(????pd.Grouper(freq='D')????

)['Converted'].mean()? ??

ax?=?_.rolling(60).mean().plot(figsize=(20,7),title='Conversion?Rate?Over?Time')? ??

vals?=?ax.get_yticks()? ??

ax.set_yticklabels(['{:,.0f}%'.format(x*100)?for?x?in?vals])????

sns.despine()


  1. 我們使用下劃線_作為臨時(shí)變量。對(duì)于以后不再使用的一次性變量,我通常會(huì)這樣做。?

  2. ?我們在order_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)化率:

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

各個(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)生影響! 讓我們檢查。

Python 數(shù)據(jù)集探索與可視化實(shí)例指南 按分配的帳戶數(shù)分配的轉(zhuǎn)換率

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

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

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

進(jìn)餐影響:

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

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

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

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


out:
07:00:00????5536
08:00:00????5613
09:00:00????5473
12:00:00????5614
13:00:00????5412
14:00:00????5633
20:00:00????5528
21:00:00????5534
22:00:00????5647


總結(jié):

invoices['Type?of?Meal']?=?pd.cut(????
????invoices['Date?of?Meal'].dt.hour,????
????bins=[0,10,15,24],????
????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)槲覀儗?/span>

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

def?replace(x):????
????return?x.replace("\n?",",").replace("'?'","','").replace("'",'"')????
invoices['Participants']?=?invoices['Participants'].apply(lambda?x:?replace(x))????
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)最接近該訂單。

Python 數(shù)據(jù)集探索與可視化實(shí)例指南 ?? Python 數(shù)據(jù)集探索與可視化實(shí)例指南 組合數(shù)據(jù)的部分

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

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

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

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


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

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

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

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

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

結(jié)合所有:

現(xiàn)在,我們將使用熱圖同時(shí)可視化數(shù)據(jù)的多個(gè)維度。 為此,首先創(chuàng)建一個(gè)輔助函數(shù)。

然后,我們使用一些最終數(shù)據(jù)進(jìn)行爭辯,以額外考慮餐食價(jià)格與訂單價(jià)值的關(guān)系,并將交貨時(shí)間分配到“訂購前”,“訂購前后”,“訂購后”,而不是從負(fù)4到正4的天數(shù),因?yàn)檫@在解釋方面有些繁瑣。

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

draw_heatmap(????
????data=data,????
????outer_row='Timing?of?Meal',????
????outer_col='Type?of?Meal',????
????inner_row='Meal?Price?/?Order?Value',????
????inner_col='Number?Participants',????
????values='Converted'????
)



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

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

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

  • 用餐時(shí)間:訂購后,訂購前后,訂購前(外排)

  • 用餐類型:早餐,晚餐,午餐(外欄)

  • 餐單價(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é)果:

  1. 銷售代表的帳戶不要超過9個(gè)(轉(zhuǎn)化率會(huì)迅速下降)

  2. 確保每個(gè)訂單線索都伴隨有會(huì)議/進(jìn)餐(因?yàn)檫@會(huì)使轉(zhuǎn)換率翻倍當(dāng)只有一位員工來訪時(shí),晚餐最有效

  3. 您的銷售代表應(yīng)支付的餐費(fèi)約為訂單金額的8%至10%

  4. 時(shí)間是關(guān)鍵,理想情況下,您的銷售代表應(yīng)盡早知道即將達(dá)成交易。

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

備注為熱圖

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

!pip?install?matplotlib==3.1.0

雷鋒字幕組是一個(gè)由AI愛好者組成的翻譯團(tuán)隊(duì),匯聚五五多位志愿者的力量,分享最新的海外AI資訊,交流關(guān)于人工智能技術(shù)領(lǐng)域的行業(yè)轉(zhuǎn)變與技術(shù)創(chuàng)新的見解。

團(tuán)隊(duì)成員有大數(shù)據(jù)專家,算法工程師,圖像處理工程師,產(chǎn)品經(jīng)理,產(chǎn)品運(yùn)營,IT咨詢?nèi)耍谛熒恢驹刚邆儊碜訧BM,AVL,Adobe,阿里,百度等知名企業(yè),北大,清華,港大,中科院,南卡羅萊納大學(xué),早稻田大學(xué)等海內(nèi)外高校研究所。

如果,你也是位熱愛分享的AI愛好者。歡迎與雷鋒字幕組一起,學(xué)習(xí)新知,分享成長。

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

雷鋒網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見。

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

隨意打賞

提交建議
微信掃一掃,分享給好友吧。
主站蜘蛛池模板: 日韩有码在线播放 | 在线免费黄色网址 | 亚洲国产99在线精品一区69堂 | 欧美日韩免费做爰视频 | 91精品综合久久久久3d动漫 | 中文一区二区视频 | 69做爰视频在线观看 | 国产99视频在线 | 狠狠色噜噜狠狠狠狠98 | 中文字幕视频一区二区 | 国产亚洲精品久久综合影院 | 亚洲精品欧洲一区二区三区 | 伊人久久免费视频 | 欧美亚洲国产成人精品 | 国产成人精品免费视频 | 久久天天躁狠狠躁狠狠躁 | 日韩女人做爰大片 | 亚洲一区欧洲一区 | 成人亚洲欧美 | 尹人久久久香蕉精品 | 久久资源365 | 九九九九精品视频在线播放 | 99精选视频 | 99热这里只有精品9 99热这里只有精品99 | 一区二区三区日韩 | 四虎影业 | 毛片一级毛片 | 99视频精品全部免费观看 | 狠狠色噜噜狠狠狠狠色吗综合 | 精品国产91在线网 | 国产精品亚洲专区在线播放 | 亚洲欧美日韩综合一区久久 | 国产精选自拍 | 国产一级二级三级 | 老子影院无码午夜伦不卡 | 亚洲欧美色鬼久久综合 | 亚洲国产伦理 | 欧美色视频日本片免费高清 | 日韩专区亚洲精品欧美专区 | 亚洲一区中文字幕 | 亚洲国产精久久小蝌蚪 |