2022Python數(shù)據(jù)分析實戰(zhàn)02_第1頁
2022Python數(shù)據(jù)分析實戰(zhàn)02_第2頁
2022Python數(shù)據(jù)分析實戰(zhàn)02_第3頁
2022Python數(shù)據(jù)分析實戰(zhàn)02_第4頁
2022Python數(shù)據(jù)分析實戰(zhàn)02_第5頁
已閱讀5頁,還剩152頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

Python數(shù)據(jù)分析實戰(zhàn)目錄TOC\o"1-2"\h\u23302第1章群組分析 4192491.1群組分析概述 4217541.2群組分析實戰(zhàn) 78625第2章利用RFM分析對用戶進行分類 17211212.1RFM分析簡介 17152662.2RFM實戰(zhàn) 193137第3章購物籃分析 27149293.1購物籃分析概述 27175393.2購物籃分析案例 31195113.3留給讀者的思考 3822510第4章概率分布 39192664.1隨機數(shù) 39289444.2常見的概率分布 40303904.3點估計與置信區(qū)間 48238774.4留給讀者的思考 5427906第5章假設檢驗 55137565.1假設檢驗概述 55279525.2Python中的假設檢驗 58260165.3留給讀者的思考 6325817第6章一名數(shù)據(jù)分析師的游戲上線之旅 6478726.1游戲啟動時間是否超過目標 64140266.2次日留存率是否大于30% 7261736.3應該在游戲第幾關加入關聯(lián)微信提示 73183646.4如何定價 7736606.5留給讀者的思考 812500第7章利用數(shù)據(jù)分析找工作 83316367.1設定分析目標 83175217.2準備分析數(shù)據(jù) 84281917.3開始數(shù)據(jù)分析 881715第8章用數(shù)據(jù)解讀成都房價 101217088.1設定分析目標 101227728.2解讀成都二手房 1028022第9章時間序列分析 125146099.1認識時間序列數(shù)據(jù) 125135509.2時間序列數(shù)據(jù)的分解 130304909.3時間序列的平穩(wěn)性 13472979.4利用ARIMA模型分析家具銷售 1372489.5留給讀者的思考 14419513第10章股票數(shù)據(jù)分析 1452366810.1股票收益分析 14550810.2CAPM資產(chǎn)定價模型選股 1511898710.3留給讀者的思考 15221752第11章大規(guī)模數(shù)據(jù)處理 154856611.1不同規(guī)模數(shù)據(jù)處理工具的選擇 1542879711.2利用Pandas處理大規(guī)模數(shù)據(jù) 1551339811.3其他可選方法 1571092911.4留給讀者的思考 157第1章群組分析在移動互聯(lián)的初期,如何讓用戶發(fā)現(xiàn)你的應用并下載它是各方競爭的焦點。當藍海變成紅海后,真正的成功就不是讓別人下載你的應用,產(chǎn)品若沒有很好地留存,花費大量時間和資源來挖掘新客戶,終將“世事轉(zhuǎn)頭空”。對產(chǎn)品運營人而言,需要考慮的問題已經(jīng)變成:如何提高用戶留存率?如何找到用戶流失的原因?如何挽回將要流失或已經(jīng)流失的用戶?用戶群體有什么特征?重點需要關注的用戶群是哪些?而所有這些都可以通過群組分析(CohortAnalysis)來完成。本章將介紹什么是群組分析,如何進行群組分析,最后用一個案例來演示實際的群組分析。群組分析概述從AARRR到RARRA的轉(zhuǎn)變2007年1月,iPhone2G在美國上市;2008年7月,蘋果推出iPhone3G;2008年9月,谷歌發(fā)布首款Android手機HTCG1。移動互聯(lián)網(wǎng)的大幕終于緩緩拉開,各類移動互聯(lián)創(chuàng)業(yè)公司如雨后春筍般誕生。視線的另一角,有一個叫DaveMcClure的人在2007年提出了一種創(chuàng)業(yè)公司的業(yè)務增長模式——海盜指標(AARRR),該模型在過去10年中或多或少已經(jīng)成為行業(yè)標準。一時間,大量公司利用AARRR方法來跟蹤產(chǎn)品營銷和管理,該方法論已成為企業(yè)家創(chuàng)業(yè)的增長利器。在AARRR模型中,McClure將用戶置于如圖11.1所示的漏斗中。圖11.1AARRR模型這一漏斗依次代表了:用戶激活(Activation);用戶留存(Retention);用戶推薦(Referral);收入(Revenue)。AARRR模型從用戶的角度,以線性順序來分析產(chǎn)品的營銷。模型認為的產(chǎn)品推廣會經(jīng)歷如下階段。首先通過搜索引擎優(yōu)化(SearchEngineOptimization,SEO)、廣告、地推、郵件推廣等模式讓用戶知道你的產(chǎn)品。接著通過用戶引導去激活他們。用戶激活后,接下來的工作就是提高用戶留存率。推動用戶分享,推薦你的產(chǎn)品。最終完善商業(yè)模式,獲得收入。然而在AARRR應用中,人們很快發(fā)現(xiàn)了其中的一個缺點。許多應用都會經(jīng)歷這樣一種模式:應用發(fā)布,媒體廣泛關注,用戶反響也非常積極,許多用戶都在不遺余力地為這款產(chǎn)品叫好。于是成千上萬的新用戶涌入,然而它們都存在一個大問題——用戶流失率太高。最終由于新用戶越來越少,老用戶慢慢離去,這些應用逐漸消失在人們的視線中。另商店上的應用數(shù)都達到了百萬以上,此時獲客成本增加到了幾十元。從2018說明書披露的數(shù)據(jù)來看,互聯(lián)網(wǎng)巨頭的獲客成本目前已經(jīng)到了人民幣100元以上。于是,一個新的模型RARRA應運而生,RARRA模型是ThomasPetit和GaborPapp對于海盜指標AARRR模型的優(yōu)化。RARRA模型突出了用戶留存的重要性,認為原有的模型中將用戶獲取放在第一位是錯誤的,進行用戶分析時,我們第一步應該關注的是留存,即R(Retention),如圖11.2所示。圖11.2RARRA模型設想一下,如果你的應用在用戶安裝后,3天內(nèi)70%以上的用戶將不再使用,一個月后90%的客戶完全忘記了它,3個月后95%以上的用戶已經(jīng)卸載了它,無論你在用戶獲取上多么努力都無濟于事。當獲客不再是增長的王道時,那么用戶留存(Retention)就成為你的新起點。通過為用戶提供價值,讓用戶不斷使用你的產(chǎn)品,與此同時在用戶激活(Activation)時就能感受到產(chǎn)品價值,最終用戶推薦(Referral)他人使用,完成用戶獲?。ˋcquisition)。這才是更好的增長模式!而要完成用戶留存,我們就需要了解用戶,他們有什么特征,不同用戶群之間有何區(qū)別。這一切都可以通過群組分析來完成。什么是群組分析Cohort在英文里面是群組的意思,顧名思義,CohortAnalysis就是群組分析,即將用戶分成不同的群組進行分析。群組分析的實現(xiàn)非常簡單,就是首先做好觀察用戶的分組。分組先分維度,再分粒度。所謂維度,如果按用戶的新增日期分組,時間就是維度;如果按新增用戶的渠道來源分組,渠道就是維度。而粒度是指在該維度如何劃分,如時間維度是按照月還是天劃分;新增渠道維度是按照新增的來源網(wǎng)站還是來源的具體網(wǎng)址劃分,這些都是粒度差異。以下群組就可能是實際數(shù)據(jù)分析中會遇到的群組:過去30天試用產(chǎn)品的用戶;5月的付費用戶;通過社交媒體獲得的客戶;把商品加入了購物車卻沒有完成付款的用戶。的差異值逐級鎖定,尋找原因。如圖11.3中對3個不同群組的用戶在12個時間周期的商品購買情況進行的分析,我們發(fā)現(xiàn)2010-12這個組的用戶購買明顯比另外兩個組要好。那么是什么原因?qū)е碌哪?,可以進一步分析這個群組用戶有什么特征,與另外的群組有何不同,最終提高用戶留存率。圖11.3用戶留存群組分析實戰(zhàn)本節(jié)仍將利用前面使用過的英國某電商的銷售數(shù)據(jù)進行群組分析。定義群組以及周期首先讀入數(shù)據(jù),進行簡單了解,如圖11.4所示。圖11.4讀入銷售數(shù)據(jù)這里的數(shù)據(jù)包含英國某電商網(wǎng)站2010年12月到2011年12月的銷售數(shù)據(jù),數(shù)據(jù)包含8列。進一步可以通過info()函數(shù)對數(shù)據(jù)類型、是否有缺失數(shù)據(jù)進行了解。從代碼輸出可以看出其中的InvoiceDate列為日期類型,CustomerID列以及DescriptionInvoiceDate作為分組依據(jù)。因此,時間就是前面提到的維度。游戲、應用推廣有的會以天、周作為粒度來觀察用戶的激活、在線、購買趨勢,而對當前問題以月為粒度就可以了。至此,我們可以明確分析目標為按照月來觀察用戶購買、留存趨勢。InvoiceDate列雖構,轉(zhuǎn)換為以月來區(qū)分,之后需要將客戶(由CustomerID唯一提供)按其首次購買月來分組。要將日期轉(zhuǎn)換為月來度量,可以采用如下方法。上述代碼利用get_month()函數(shù)將傳入日期只取年和月信息,而最后的日都統(tǒng)一為1日,這樣同一個月的日期信息就一致了。之后利用在前面章節(jié)學習過的apply()函數(shù),可以將整個InvoiceDate列都進行相同轉(zhuǎn)換,并添加新的InvoiceMonth列來保存該信息。變換后的數(shù)據(jù)如圖11.5所示。圖11.5變換后的數(shù)據(jù)(以月度量日期)有了用戶購買月信息InvoiceMonth后,我們就可以對所有訂單先按照客戶,再按照購買月進行分組。然而,進行群組分析想要的是按照首次購買月來對用戶進行分組,此時就可以利用Pandas中的grouby提供的transform功能來完成這一功能,即以群中的最小購買日期作為首購月,代碼如下。運行結果如圖11.6所示。圖11.6用戶首購月上述代碼中的grouping是按照CustomerID分組后的分組對象,利用transform()函數(shù)對InvoiceMonth中信息進行變換,取首次購買月(min函數(shù)可以完成這一功能)就可以作為對應該組的CohortMonth。CohortMonth就是群組分析需要的群組信息,而分析目標是了解不同群組隨著時間流逝有何變化。因此,還缺少一個時間周期信息,即對應群組在1個月后的購買情況如何,2個月后購買情況如何,等等。該信息可以通過整合InvoiceDate以及CohortMonth來獲得。InvoiceDate中有當前購買日期,而CohortMonth中是用戶首購月,兩者求差可以得出當前購買日是在用戶首次購買后的幾個月。為了處理方便,在本書中認為用戶在首購月購買計數(shù)為第1個統(tǒng)計周期,所以計算差的時候會有加1操作,代碼如下。上述代碼定義的get_date_int()函數(shù)可以取對應日期的年和月,有了這個信息才能進行時間周期計算,最終代碼如下。運行結果如圖11.7所示。圖11.7時間周期計算群組分析具體過程CohortMonth和CohorPeriod分別提供了群組以及時間周期信息,接下來數(shù)據(jù)分析要做的就是統(tǒng)計用戶活躍情況了。在開始之前,為了后面可視化時顯示美觀,還需要對CohortMonth進行美化。CohortMonth名義上是月的群組,但是還有日的信息,如果想只顯示月,那么可以簡單地利用字符串截取功能對數(shù)據(jù)進行如下處理。每個Cohort中的活躍用戶數(shù)可以通過計算該組中不同CustomerID個數(shù)獲得,代碼如下。圖11.8活躍用戶數(shù)結果如圖11.8所示。至此已經(jīng)完成了所有的數(shù)據(jù)準備工作,Cohort列提供了群組,CohortPeriod提供了時間周期,CustomerID列提供了活躍用戶數(shù)。接下來唯一需要做的就是將數(shù)據(jù)按照時間周期進行展示,即按照不同Cohort來觀察不同的CohortPeriod、CustomerID中的數(shù)據(jù)變化。而這正是pivot()函數(shù)提供的功能,代碼如下。結果如圖11.9所從代碼輸出可以看出,2010-12這個組在第1個時間周期有948個活躍用戶,但是在第2個時間周期就只有362個活躍用戶了,之后基本沒有太大變化,到第12個時間周期,活躍用戶數(shù)突然出現(xiàn)了增長,第13個時間周期又突然下降??梢钥闯?,群組分析很好地展示這一趨勢變化,數(shù)據(jù)分析人員很自然地會思考開始的用戶下降的原因,之后的用戶增長是促銷還是別的原因?qū)е?。除了觀察組內(nèi)趨勢,群組分析還可以對比組間的區(qū)別。例如,在第2個時間周期,2011-01組的活躍用戶數(shù)為何下降比2010-12組快。此外,除了分析活躍用戶,還可以利用如下代碼計算用戶留存情況,結果如圖11.10所示。圖11.9按時間周期展示數(shù)據(jù)圖11.10用戶留存情況留存率的計算是與第1個時間周期對比,因此需要首先獲得第1個周期內(nèi)各組的用戶數(shù),保存到cohort_size變量中,之后將每個周期的用戶總數(shù)除以cohort_size,就得到了留存率。為了簡單起見,下面的代碼將其轉(zhuǎn)化為百分比,同時只取小數(shù)點后1位,結果如圖11.11所示。為了更好地分析每個時間周期用戶留存的變化,還可以對上面的數(shù)據(jù)進行可視化。retention數(shù)據(jù)中,用戶所屬群作為行,時間周期作為列,而數(shù)據(jù)可視化是想觀察不同時間周期的數(shù)據(jù)變化,因此,需要對原數(shù)據(jù)進行一個行列變化,這可以通過.T完成,代碼如下。圖11.11留存率除了對趨勢進行可視化,還可以繪制留存率的熱圖,最終得到如圖11.12所示的留存率熱圖,代碼如下。析人員可能就需要考慮進一步分析留存突然增加或減少的原因,有沒有辦法對其進行改善。雖然群組分析經(jīng)常用來進行用戶留存分析,但是以類似思路還可以分析客戶的購買量、生命周期價值等,下面的代碼就是對用戶的購買量進行分析,結果如圖11.13所示。圖11.12留存率熱圖圖11.13用戶購買量分析思考對用戶的生命周期價值進行分析,應該如何做呢?本章的例子是以時間維度進行群組分群組分析只是用戶分析的一種方法,有時數(shù)據(jù)分析人員還會對用戶進行RFM建模(RFM即為Recency,F(xiàn)requency,Monetary),這將是下一章討論的內(nèi)容。第2章利用RFM分析對用戶進行分類顧客是上帝,但是他們也是最善變的,不知道什么時候就離你而去。那我們應該如何去分析顧客,了解他們呢?RFM模型隸屬于用戶價值模型,有兩個方向:一個是基于用戶生命周期,也就是時間和用戶在產(chǎn)品內(nèi)的成長路徑進行的生命周期模型的搭建;另一個就是基于用戶關鍵行為進行搭建。其中,RFM模型是最典型的基于用戶關鍵行為的模型,它是衡量用戶價值和用戶創(chuàng)利能力的一個重要的工具和手段,被廣泛應用在各個行業(yè)中。本章將介紹什么是RFM分析,如何利用RFM分析的結果對客戶進行分類。RFM分析簡介RFM模型概述在用戶運營領域,有一個叫做RFM的詞,相信很多人看到過。那它到底代表什么意思呢?RFM中的R、F、M分別代表了3個英文單詞的首字母,各自的意義如下。R:最近一次消費(Recency),代表用戶距離當前最后一次消費的時間。當然,最近一次消費的時間越短越好,對我們來說更有價值。F:消費頻次(Frequency),用戶在一段時間內(nèi),在產(chǎn)品內(nèi)的消費頻次,這里的重點是對“一段時間”的定義。M:消費金額(Monetary),代表用戶的價值貢獻。有了RFM模型之后,進行客戶運營時可以決定發(fā)送短信時,對哪些用戶加上前綴“尊敬的VIP用戶”,對哪些用戶加上前綴“好久不見”。該模型也可以幫助企業(yè)判斷哪些用戶有異動,是否有流失的預兆,從而增加相應的運營動作。例如,根據(jù)如圖12.1所示的RFM模型將用戶分為重要價值客戶、重要發(fā)展客戶、一般價值客戶等,據(jù)此來進行有針對性的運營。圖12.1RFM模型上面的模型中,客戶的重要與否是根據(jù)對應的R、F、M的值決定的。例如,可以分別將R、F、M簡單分為高、中、低3個區(qū)間,然后根據(jù)客戶所在區(qū)間來對客戶進行細分,如表12.1所示。表12.1利用RFM模型細分客戶有了RFM模型之后,運營人員就可以基于模型的評分來更好地指導運營,因為RFM告訴了我們:誰是最好的客戶?哪些客戶正處于流失的邊緣?誰有可能轉(zhuǎn)化為更有利可圖的客戶?誰是不需要關注的無價值客戶?必須保留哪些客戶?誰是忠實客戶?哪些客戶最有可能對當前的營銷動作做出回應?理解RFMR——最近一次消費對不同的企業(yè),R有不同含義。對電商而言,R指的是客戶在店鋪最近一次消費和當前的時間間隔,理論上R值越小的客戶價值越高。而對社交網(wǎng)站、在線視頻播放而言,R可能就是最近一次登錄時間、最近一次發(fā)帖時間、最近一次投資時間、最近一次觀看時地域的限制因素,客戶非常容易流失,因此,要提高回購率和留存率,需要時刻警惕R值。F——消費頻率消費頻率是客戶在固定時間內(nèi)(如1年、1個月)的購買次數(shù)。不同的行業(yè),用戶購買頻率有很大區(qū)別,如用戶可能每個月都會購買紙尿片,而電子產(chǎn)品可能一年內(nèi)也才消費一次。因此,消費頻率取決于產(chǎn)品和行業(yè)。我們在構建RFM模型時,有時把F值的時間范圍去掉,替換成累計購買次數(shù)。影響復購的核心因素是商品,因此對復購不適合做跨類目比較。例如食品類目和美妝類目:食品屬于“半標品”,產(chǎn)品的標品化程度越高,客戶背叛的難度就越小,越難形成忠實用戶;但是相對美妝,食品又屬于易耗品,消耗周期短,購買頻率高,相對容易產(chǎn)生重復購買。因此跨類目復購并不具有可比性。M——消費金額M值是RFM模型中最具有價值的指標。大家熟知的“二八定律”(又名“帕累托法則”)曾給出過這樣的解釋:公司80%的收入來自20%的用戶。理論上M值和F值是一樣的,都帶有時間范圍,指的是一段時間(通常是1年或1個月)內(nèi)的消費金額。有的情況下,我們還會考慮客單價,對于客單價高的用戶,我們考慮的是如何提高他的購物頻次;而對于客單價低的客戶,我們考慮是否可以想辦法提高客單價。RFM實戰(zhàn)在第11章,我們對某電商的銷售數(shù)據(jù)進行了群組分析,本節(jié)將從RFM模型的角度對同一數(shù)據(jù)的用戶進行細分。R、F、M值的計算所有的數(shù)據(jù)分析都是從對目標數(shù)據(jù)的了解而開始,首先讀入數(shù)據(jù),代碼如下。read_csv()函數(shù)指定了參數(shù)parse_dates=['InvoiceDate'],因此InvoiceDate列將解析為日期格式。通過head()函數(shù)可以對數(shù)據(jù)集的信息大致了解。其中的InvoiceDate、InvoiceNo、CustomerID將是RFM模型構建的基礎。接下來需要考察數(shù)據(jù)中是否有缺失信息,代碼如下。從代碼輸出發(fā)現(xiàn)CustomerID有135080行缺失,而整個數(shù)據(jù)集一共只有541909條。在現(xiàn)實數(shù)據(jù)分析中如果發(fā)現(xiàn)接近1/4的數(shù)據(jù)存在缺失,而該數(shù)據(jù)又正是需要分析的數(shù)據(jù),就需要考慮什么原因?qū)е聰?shù)據(jù)缺失,是否有辦法補齊。不過對當前的案例而言,只能采用將有數(shù)據(jù)缺失的行丟棄的方法,處理代碼如下。上述代碼利用mask掩碼,將CustomerID缺失的行過濾掉。而新構建的online_rfm就是需要分析的數(shù)據(jù)集。處理完缺失數(shù)據(jù)后,下一步就是計算RFM模型中對應的R、F、M值。對電商而言,R值的計算可以通過當前日期與最近一次購買的間隔來計算獲得,F(xiàn)可以通過統(tǒng)計客戶購物InvoiceNo的數(shù)目獲得。用UnitPrice來代表M值顯然不合理,因此,需要將購物單價與購物數(shù)量相乘后得到總價,作為M值計算的基礎。這里需要在online_rfm數(shù)據(jù)集中添加新的列來記錄每張InvoiceNo對應的總價,方法如下。在執(zhí)行這一計算的過程中,讀者可能會得到SettingWithCopyWarning的警告,這也是令Pandas初學者經(jīng)常感到迷惑的一個警告。這個警告實際源于Pandas的設計機制,因為online_rfm是通過布爾篩選的方式過濾CustomerID為缺失的行而得到,此時對它進行賦值就會產(chǎn)生一個警告。一種解決方法是如上面建議,使用.loc方式賦值,不過這會重復一次之前的數(shù)據(jù)篩選,而這里由于分析時很明確地知道當前就是要在原DataFrame切片備份上進行,那也可以選擇忽略該警告。如果要忽略該警告,可以使用如下代碼。再執(zhí)行前面的賦值操作就不會有警告了。添加了Total列之后,下一個需要處理的問題就是CustomerID列的數(shù)據(jù)類型了,通過.dtypes屬性可以發(fā)現(xiàn)該列為float64類型,而實際上CustomerID的數(shù)據(jù)應該是為整型,因此需要做一次數(shù)據(jù)類型的變換,代碼如下。至此,所有的數(shù)據(jù)準備工作都已經(jīng)完成,接下來可以開始計算R值了。前面已經(jīng)提到過當前數(shù)據(jù)集是從2010年12月到2011年12月的數(shù)據(jù)。在分析時假設當前的日期為2011年12月10日,利用該日期來計算各個用戶的最近購物間隔天數(shù)。采用如下代碼即可完成這一操作。而客戶的最近購物日期與當前日期的間隔天數(shù)可以通過先以CustomerID作為分組,找出每組中最晚的日期(InvoiceDate),計算它與當前日期的差值來獲得。購物頻率則通過對每組中的InvoiceNo數(shù)目計數(shù)得到,總的消費額則通過對組內(nèi)Total列匯總得到。這一切通過Pandas中的分組匯聚功能即可實現(xiàn),代碼如下。圖12.2RFM計算結果結果如圖12.2所示。上述代碼的最后一行采用了sample()函數(shù)來對df進行采樣,取其中3行進行顯示。通過分組匯聚后得到的新數(shù)據(jù)集中,InvoiceDate列實際代表了當前日期與最近購物日期的間隔天數(shù)(即Recency),InvoiceNo代表了購物頻次(即Frequency),Total列代表了總購物金額(即Monetary),因此有必要對上述的列名進行修正,可以采用.rename()函數(shù)實現(xiàn),結果如圖12.3所示。雖然現(xiàn)在已經(jīng)得到了想要的R、F、M值,但是由于這些值分布很廣,不利于進行后續(xù)的分析,因此在進一步分析前還需要對它們進行再加工。為簡單起見,本例將當前的R、F、M劃分到4個區(qū)間,分別用1,2,3,4代表,值越小表示該指標越差。Recency列代表了最近一次購物的間隔日期,顯然該值應該越小越好,采用如下代碼處理。利用cut()函數(shù)可以自動將數(shù)據(jù)劃分到指定個數(shù)區(qū)間,而每個區(qū)間對應的標簽依次為4,3,2,1,這樣剛好可以實現(xiàn)對應區(qū)間4的是間隔時間最短的。而對Frequency和Monetary列,顯然是值越大代表越好,所以它們的標簽處理剛好與Recency相反,直接使用range(1,5)來對應,代碼如下。運行結果如圖12.4所示。圖12.3修正列名圖12.4獲取對應的R、F、M值大功告成,現(xiàn)在已經(jīng)獲得了所有客戶對應的R、F、M值,接下來就是利用RFM模型對客戶進行細分。利用RFM模型對客戶進行細分RFM模型分析的目的是將客戶進行細分,進而制定有針對性的營銷/運營策略。本案例中的R、F、M取值各有4種可能,那么理論上一共有43 =64種組合。在進一步分前,我們先利用如下代碼查看組合的分布以及得分情況,結果如圖12.5所示。圖12.5組合的分布以及得分情況上述代碼首先將R、F、M的值連接在一起構成新的RFM_Segment列,而RFM_Score則是通過將R、F、M這3列求和得到,后面分析中可以基于RFM_Score來將用戶分為常見的金牌客戶、銀牌客戶、銅牌客戶。進一步分析各細分群組,可以發(fā)現(xiàn)優(yōu)質(zhì)客戶最多,代碼如下。444這個客戶群代表的是最近購物時間距當前日期短,購物頻率高,同時購物金額大的群體。通過分組統(tǒng)計可以發(fā)現(xiàn)這個群體是最大的,同時433、422這兩個客戶群也排在了第2和第3位,這說明網(wǎng)站大量客戶的購物日期距當前日期都很近,網(wǎng)站的客戶留存做得很好。不過從輸出也發(fā)現(xiàn)411群體也比較多,那么這部分客戶購物日期距當前日期近,但是購物頻率和購物金額都小,這是否是由于是新客戶導致?因此可以篩選出411這個客戶群的數(shù)據(jù)進行進一步分析,由于這里沒有客戶的注冊日期等信息,所以就不再展開。RFM分析中用得最廣泛的就是客戶細分,下面基于RFM_Score將客戶分為3類。需要說明的是,前面的RFM_Score的計算采用簡單求和得到,實際分析中經(jīng)??紤]賦予不同權重給各指標,為簡單起見,本例沒有考慮這個問題,運行下面的代碼,分類結果如圖12.6所示。圖12.6客戶分類情況本例中首先定義了一個segment()函數(shù),將RFM_Score大于10的歸類為金牌客戶,得分為6~9的歸類為銀牌客戶,其他客戶歸類為銅牌客戶。之后利用apply()函數(shù)構建了新的Segment列。最后利用分組統(tǒng)計可以觀察各組客戶Recency、Frequency、Monetary的區(qū)別。很明顯,金牌客戶的平均消費金額最大,達到了4053.8,而銀牌和銅牌客戶只有568.5和190.4,同時金牌客戶平均購物頻次達到了192.1,另兩組卻只有32.6和12.8。通過這一數(shù)據(jù)可以看出這個公司主要由金牌客戶驅(qū)動,客戶運營時只需要重點關注這些客戶就好。思考除了案例里面展示的分析,讀者還可以對每個RFM_Segment的消費情況進行進一步細分。同時,前面的客戶細分只是簡單分為3類,實際分析還可以進一步細化該分類方法,以得出哪些客戶消費多,但是最近沒有購物;哪些客戶消費頻次高,但是購物金額不大。類似的問題還有很多,唯一需要強調(diào)的是數(shù)據(jù)分析需要與具體場景結合,它的目標永遠是推動運營和銷售的改進。所有這些問題都需要基于此而提出。第3章購物籃分析俗話說:“商場如戰(zhàn)場?!蹦鞘侵干倘酥g的爭斗,而這種爭斗要通過商品這一道具完成。商品如同它們的主人一樣,有不同的個性及命運,而貨架就是商品展開“廝殺”的“戰(zhàn)場”。有的商品一帆風順,成功進入客戶手中的購物籃,幫助自己的主人完成使命,而有的商品在門店中郁郁寡歡,始終與客戶手中的購物籃無緣,最終落得一個被趕下貨架,掃地出門的悲慘結局。同位置的商店,賣的是同樣的商品,甚至銷售價格也差不多,為什么別人能夠活得好好購物籃分析(MarketBasketAnalysis),同時也將帶領大家完成對前兩章分析過的電商銷售數(shù)據(jù)的購物籃分析。購物籃分析概述什么是購物籃分析顧名思義,購物籃指的就是超級市場中供顧客購物時使用的裝商品的籃子,當顧客付款時,這些購物籃內(nèi)的商品被營業(yè)人員通過收款機一一登記結算并記錄。所謂的購物籃分析就是通過這些購物籃所顯示的信息來研究顧客的購買行為。購物籃分析的主要目的在于找出什么樣的東西應該放在一起,其目標是由顧客的購買行為來了解是什么樣的顧客以及這些顧客為什么買這些產(chǎn)品,找出相關的關聯(lián)(Association)規(guī)則,企業(yè)借由這些規(guī)則的挖掘獲得利益并建立競爭優(yōu)勢。舉例來說,零售店可通過此分析改變貨架上的商品排列或是設計吸引客戶的商業(yè)套餐,等等。通過購物籃分析挖掘出來的信息可以指導交叉銷售、追加銷售、商品促銷、顧客忠誠度管理、庫存管理和折扣計劃。購物籃分析技術可以應用在下列問題上。針對信用卡購物,能夠預測未來顧客可能購買什么。對于電信與金融服務業(yè),通過購物籃分析能夠設計不同的服務組合以擴大利潤。保險業(yè)能通過購物籃分析偵測出可能不尋常的投保組合并進行預防。對病人而言,在療程的組合上,購物籃分析能作為這些療程組合是否會導致并發(fā)癥的判斷依據(jù)。購物籃分析在超市中的應用購物籃分析在大型超市的運營體系中占據(jù)了非常重要的地位。購物籃分析的結果不僅為門店的商品陳列、促銷提供了有力的依據(jù),更重要的是,通過它超市可以更充分了解客戶的真實需求,并幫助供應商開發(fā)新的產(chǎn)品。利用購物籃分析可以完成如下應用。商品配置分析:哪些商品可以一起購買,關聯(lián)商品如何陳列、促銷??蛻粜枨蠓治觯悍治鲱櫩偷馁徺I習慣,包括顧客購買商品的時間、地點等。銷售趨勢分析:利用數(shù)據(jù)倉庫對品種和庫存的趨勢進行分析,選定需要補充的商品,研究顧客購買趨勢,分析季節(jié)性購買模式,確定降價商品。幫助供應商改進老產(chǎn)品及開發(fā)新品:通過購物籃分析,根據(jù)客戶的需求,開發(fā)新的產(chǎn)品或改進老產(chǎn)品及產(chǎn)品包裝。具體而言,超市根據(jù)商品在購物籃中出現(xiàn)的數(shù)量,可以分析商品包裝和規(guī)格的機會忠誠度。例如,超市通過商品一級品類的購物籃分析,發(fā)現(xiàn)用戶經(jīng)常購買的是水果和乳適的時間(下午茶時間和下班買菜時間)選哪些品類比較合適。而通過對顧客在購買某一目標產(chǎn)品時出現(xiàn)在同一購物籃里的關聯(lián)最緊密的商品以及相關購買金額、數(shù)量、出現(xiàn)概率的分析,可以為運營部門在交叉陳列、銷售、商品促銷或開發(fā)復合包裝產(chǎn)品時提供依據(jù)。知名的大型連鎖超市沃爾瑪利用購物籃分析獲得豐厚收益的故事很多,本書在這里簡單介紹幾個公開的案例。第一個案例是,沃爾瑪?shù)牟少徣藛T在對一種禮品包裝的嬰兒護膚品進行購物籃分析時發(fā)現(xiàn),該禮品的購買者基本都是一些商務卡客戶,進一步了解才知道,商品都是作為禮品買來送人的,而不是原先預想的“母親”客戶買給自己的孩子。因此,該商品的購買目的才得以明確,這樣的購買目的信息為商品的進一步改進提供極大的幫助。第二個案例是,通過對購物籃分析,沃爾瑪發(fā)現(xiàn),很多客戶在購買沐浴用品時都會同時購買沐浴露一類商品。這條信息提示,可以針對這種需求,將毛巾、沐浴球、洗澡用品與沐浴露等沐浴主題商品進行捆綁銷售或進行相關沐浴用品主題陳列。第三個案例是,美國著名飲料制造商Welch's有一種專門為情人節(jié)定制的果汁飲料,與情人節(jié)專用的糖果(如巧克力)可與情人節(jié)專用季節(jié)性通道的糖果、賀卡放在一起,并成為情人節(jié)商品整體規(guī)劃的一部分。購物籃分析實現(xiàn)介紹購物籃分析的實現(xiàn)原理之前,首先需要理解幾個定義。項集購物籃也稱為事務數(shù)據(jù)集,它包含屬于同一個項集的項集合。在一籃子商品中的一件消費品即為一項(Item),若干項的集合為項集(Items),如{嬰兒奶粉,尿片}構成一個二元項集。關聯(lián)規(guī)則X為先決條件,Y為相應的關聯(lián)結果,用于表示數(shù)據(jù)內(nèi)隱含的關聯(lián)性,如關聯(lián)規(guī)則:尿片→嬰兒奶粉[支持度=3%,置信度=80%]。支持度支持度(Support)是指在所有項集中,{X,Y}出現(xiàn)的可能性,即項集中同時含有X和Y的概率。假設全部交易中同時購買了嬰兒奶粉和尿片的概率是3/100=0.03,那么{尿片→嬰兒奶粉}的支持度為3%。支持度指標作為建立強關聯(lián)規(guī)則的第一個門檻,衡量了所考察關聯(lián)規(guī)則在“量”上的多少。置信度置信度(Confidence)表示在先決條件X發(fā)生的條件下,關聯(lián)結果Y發(fā)生的概率:Confidence(X→Y)=Support(X,Y)/Support(X)如果在1000條交易記錄中,100個購買了尿片的顧客中有80個又購買了嬰兒奶粉,即{尿片→嬰兒奶粉}的置信度為(80/1000)/(100/1000)=0.8。這是生成強關聯(lián)規(guī)則的第二個門檻,衡量了所考察的關聯(lián)規(guī)則在“質(zhì)”上的可靠性。提升度提升度(Lift)表示“使用X的用戶中同時使用Y的比例”與“使用Y的用戶比例”的比值:交易記錄中,有100個顧客買了尿片,有200個顧客買了嬰兒奶粉,有80個顧客同時買了尿片和嬰兒奶粉,那么{尿片→奶粉}的提升度為((80/1000)/(100/10 000))/(200/1000)=0.8/0.2=4。該指標與置信度同樣用于衡量規(guī)則的可靠性,可以看作是置信度的一種互補指標。出錯率出錯率(Conviction)的意義在于度量規(guī)則預測錯誤的概率,表示X出現(xiàn)而Y不出現(xiàn)的概率:Conviction(X→Y)=(1-Support(Y))/(1-Confidence(X→Y))那么{尿片→嬰兒奶粉}的出錯率為(1-200/1000)/(1-0.8)=0.8/0.2=4以上各指標中,支持度是一種重要的度量,因為支持度很低的規(guī)則可能只是偶然出置信度度量的是通過規(guī)則進行推理的可靠性。對于給定的規(guī)則X→Y,置信度越高,Y在包含X的事物中出現(xiàn)的可能性就越大,即Y在給定X下的條件概率越大。提升度反映了關聯(lián)規(guī)則中A與B的相關性。如果提升度等于1,說明A和B沒有任何關聯(lián);如果小于1,說明A和B是排斥的;只有大于1,才認為A和B是有關聯(lián)的,但是在具體的應用之中,通常認為提升度大于3才算作值得認可的關聯(lián)。一個大的提升度值是一個重要的指標,它表明一用;如果數(shù)據(jù)分析目標是用于隨機推薦,則考慮提升度會更有價值。理解了上述指標后,基于前面的定義可以很方便地生成關聯(lián)規(guī)則。規(guī)則生成可以簡單地分為兩步。找頻繁項集:在Apriori算法中,一個頻繁項集的所有子集必須也是頻繁的,即如果{嬰兒奶粉,尿片}是頻繁集,那么{嬰兒奶粉}和{尿片}進入后續(xù)的規(guī)則整理,該商品被采購頻率必須大于或等于一個閾值(即Apriori函數(shù)里的support參數(shù))。n個項,可以產(chǎn)生2n-1個項集,指定最小支持度就可以過濾掉非頻繁項集,這樣既能減輕計算負荷,又能提高預測質(zhì)量。找出頻繁項集的規(guī)則:n個項總共可以產(chǎn)生3n-2n+1+1規(guī)則將被消除。購物籃分析案例Mlxtend庫中Apriori算法使用介紹購物籃分析最關鍵的就是構建頻繁項集,之后根據(jù)它來構建規(guī)則。開源的Mlxtend庫已經(jīng)提供了相應的算法實現(xiàn),首先導入相應的庫,代碼如下。以上3行代碼分別提供了交易記錄編碼轉(zhuǎn)換、Apriori算法、關聯(lián)規(guī)則的實現(xiàn)函數(shù)。對于如下的交易記錄,首先需要對其進行編碼轉(zhuǎn)換,如圖13.1所示。圖13.1交易記錄編碼轉(zhuǎn)換函數(shù)首先生成了一個編碼轉(zhuǎn)換對象,之后將其轉(zhuǎn)換為Apriori算法需要的格式。交易記錄按規(guī)定格式編碼后,就可以利用apriori()函數(shù)計算頻繁項集了,代碼如下。默認情況下,apriori()函數(shù)會返回項的列索引,如果想查看具體項的名稱,那么可以指定use_colnames=True參數(shù),代碼如下。這里輸出的結果和前面一段代碼其實是一樣的,只是這里給出了每項的具體名稱。獲得了頻繁項集后,通常分析人員會根據(jù)支持度來選擇與過濾,代碼如下??梢酝ㄟ^如下代碼來選擇頻繁項集中頻繁項長度大于或等于2、支持度大于或等于0.8的頻繁項集。在線銷售數(shù)據(jù)購物籃分析本節(jié)將利用Mlxtend庫提供的功能來對之前分析過的英國某電商網(wǎng)站的銷售數(shù)據(jù)進行購物籃分析,該數(shù)據(jù)來自UCI機器學習數(shù)據(jù)集網(wǎng)站。首先導入數(shù)據(jù),如圖13.2所示。圖13.2導入銷售數(shù)據(jù)數(shù)據(jù)集中一共有541909條交易記錄,其中Description列提供了用戶購物的描述,該列即是要分析的項。通常在進行購物籃分析前會對交易中經(jīng)常出現(xiàn)的購物項進行一個簡單的探索性分析。例如,圖13.3展示了交易中出現(xiàn)最頻繁的購物項,利用如下代碼即可生成該圖。也可以利用Squarify庫提供的矩陣樹圖對其進行可視化,得到圖13.4。從上面的探索性分析得知ALARMCLOCKBAK、PLASTERSINTIN等是顧客購買頻率最高的商品,顯然歐洲人購買禮物的習慣和國內(nèi)還是有很大區(qū)別的?,F(xiàn)在對數(shù)據(jù)有了一定了解,接下來就需要生成交易記錄,因此首先要對Description列進行處理,去掉空格,去掉Description列為空的行,代碼如下。圖13.3頻繁購買項圖13.4矩陣樹圖此外,InvoiceNo列中帶有“C”字符的都是取消了的購物記錄,因此需要將這一部分記錄去掉,代碼如下。完成了上述準備工作后,需要利用Description以及InvoiceNo列來生成交易記錄,即一條交易的InvoiceNo對應到多個Description列。此時可以采用按此兩列分組后再unstack()的方法達到這一效果,代碼如下。運行結果如圖13.5所示。圖13.5生成交易記錄理論上,有了上述交易記錄后就可以準備生成頻繁項集了,不過由于Apriori算法要求交易記錄中記錄的內(nèi)容是有沒有購買,而這里記錄的是數(shù)量,因此需要將其進行轉(zhuǎn)換。此外,如果讀者閱讀UCI網(wǎng)站上的數(shù)據(jù)說明,可以發(fā)現(xiàn)其中一項購物項POSTAGE實際是郵費,所以需要將其去除。具體代碼如下?,F(xiàn)在得到了最終的交易記錄,接下來就可以利用它生成頻繁項集了。因為分析中感興趣的頻繁項集至少要有兩項才具有意義,因此需要用下面的代碼過濾掉這些只有1項的頻繁項集,結果如圖13.6和圖13.7所示。如果想查看支持度大于或等于0.03、項集長度大于1的頻繁項集,則可以運行如下代碼,結果如圖13.8所示。圖13.6生成頻繁項集圖13.7過濾頻繁項集圖13.8支持度大于或等于0.03、項集長度大于1的頻繁項集從輸出結果看,這里有兩條頻繁項集滿足這一規(guī)則。如果分析目標為進行隨機推薦,那么可以考慮運行如下代碼查看提升度,結果如圖13.9所示。圖13.9查看提升度輸出結果顯示一共有80條規(guī)則滿足要求,此時就需要和業(yè)務專家一起來研究哪些規(guī)則可以應用于網(wǎng)站,例如第一條規(guī)則實際是兩種不同顏色的鬧鐘,數(shù)據(jù)分析人員可能無法理解為什么二者會經(jīng)常同時出現(xiàn)。當然如果80條規(guī)則太多,還可以進一步過濾,比如添加置信度指標進行過濾,代碼如下。如圖13.10所示,添加了置信度指標過濾后,最后的規(guī)則就只有3條。圖13.10添加置信度進行過濾留給讀者的思考雖然購物籃分析屬于數(shù)據(jù)分析師的工作,但是通過前面的案例分析可以發(fā)現(xiàn),理解業(yè)務對數(shù)據(jù)分析是至關重要的。數(shù)據(jù)分析永遠服務于業(yè)務目標,因此懂一些業(yè)務知識將對數(shù)據(jù)分析師的工作大有幫助。第4章概率分布數(shù)據(jù)分析中使用的許多統(tǒng)計工具和技術都基于概率。所謂概率就是事件發(fā)生的可能性,其取值范圍為從0(事件從未發(fā)生)到1(事件總是發(fā)生)數(shù)據(jù)集中的變量作為隨機變量,即變量的值無法預先確定,僅以一定的可能性(概率)何在Python中使用它們。隨機數(shù)在討論概率分布之前,首先來看看Python中的隨機數(shù),因為它是后續(xù)研究概率分布的基礎。自從計算機發(fā)明后,便產(chǎn)生了一種全新的解決問題的方式:使用計算機對現(xiàn)實世界進行統(tǒng)計模擬。使用統(tǒng)計模擬,首先要產(chǎn)生隨機數(shù),在Python中,numpy.random模塊提供了豐富的隨機數(shù)生成函數(shù)。例如,可以用如下代碼生成0到1之間的任意隨機數(shù)。如下代碼可以生成一定范圍內(nèi)的隨機整數(shù)。證得到相同的模擬結果。例如,如下代碼中seed=1的時候,兩次得到的隨機數(shù)都是相同的。在NumPy中,不僅可以生成上述簡單的隨機數(shù),還可以按照一定的統(tǒng)計分布生成相應的隨機數(shù)。例如,np.random.binomial()、np.random.poisson()、np.random.exponential()和np.random.normal()分別對應二項分布、泊松分布、指數(shù)分布和正態(tài)分布的隨機數(shù)生成函數(shù)。如下代碼則隨機生成了一個符合均勻分布的隨機數(shù)。除了按照以上各種方式生成隨機數(shù),還可以從指定序列中隨機抽取數(shù)據(jù)。例如,如下代碼實現(xiàn)從列表[2,4,6,9]中隨機抽取一個數(shù)。常見的概率分布均勻分布在概率論和統(tǒng)計學中,均勻分布又稱矩形分布,它是對稱概率分布,在相同長度間隔的分布概率是等可能的。均勻分布由兩個參數(shù)a和b定義,它們是數(shù)軸上的最小值和最大值,通??s寫為U(a,b)。如下代碼即可模擬100000個符合區(qū)間[0,10]均勻分布的值。利用如下代碼,則可以得到其概率密度,如圖14.1所示。上述代碼在區(qū)間[0,10]內(nèi)生成了100000個符合均勻分布的數(shù)據(jù)點。從概率密度圖也可以發(fā)現(xiàn),對均勻分布而言,概率密度基本上是水平的,這意味著任何給定值具有相同的發(fā)生概率。而概率密度曲線下的面積總和始終等于1。圖14.1均勻分布概率密度圖SciPy中常用的概率函數(shù)有4類,分別以stats.distribution.rvs()、stats.distribution.cdf()、stats.distribution.ppf()、stats.distribution.pdf()形式存在。其中,stats.distribution.rvs()代表根據(jù)指定的分布生成隨機數(shù)。distribution指明分布類型,如均勻分布用uniform。stats.distribution.rvs()中的參數(shù)則取決于分布類型,對均勻分布而言,需要指定起點、終點以及生成多少個隨機數(shù)。而stats.distribution.cdf()代表累積概率分布函數(shù),用于確定從某個分布中抽取某觀察值小于指定值的概率。幾何意義上,stats.distribution.cdf()就是X 軸上某個值左側的分布密度曲線面積。在上面的均勻分中,觀察到的值為0~2.5的概率為25%,也就是有75%的可能性將落在2.5~10的范圍內(nèi),可以用stats.distribution.cdf()函數(shù)計算如下。stats.distribution.ppf()的作用與stats.distribution.cdf()函數(shù)恰好相反,是根據(jù)概率求變量(也稱為分位點函數(shù))。例如,著名的龐加萊面包案中,想知道90%的情況下買到的面包會小于多少克,就可以用這個方法。針對當前的均勻分布,運行如下代碼將得到輸出4.0。最后,stats.distribution.pdf()為概率密度函數(shù),它計算給定x值的概率密度(分布的高度)。由于均勻分布是平坦的,因此該范圍內(nèi)的所有x值將具有相同的概率密度,超出范圍的x值的概率密度為0,示例代碼如下。正態(tài)分布正態(tài)分布(Normal 也稱“常態(tài)分布”,又名高斯分布(GaussianDistribution),最早由棣莫弗在求二項分布的漸近公式中得到。正態(tài)分布曲線像一只倒扣的鐘,兩頭低,中間高,左右對稱。大部分數(shù)據(jù)集中在平均值,小部分在兩端。正態(tài)分是自然界最常見的分布,不管是人的身高、手臂長度、肺活量,還是我們的考試成績,符合正態(tài)分布。神奇數(shù)字黃金分割比例同樣適用于正態(tài)分布。正態(tài)分布的期望值μ決定了其位置,標準差σ決定了分布的幅度。圖14.2表示的正態(tài)分布曲線中,正負1個標準差的圍內(nèi)包含了68%的數(shù)據(jù)。圖14.2正態(tài)分布曲線要完成這一計算,可以利用stats.distribution.cdf()函數(shù)計算累積概率分布。計算與繪圖代碼分別如下。二項分布二項分布是由伯努利提出的概念。重復n關,事件發(fā)生與否的概率在每一次獨立試驗中都保持不變,則這一系列試驗總稱為n努利試驗。當試驗次數(shù)為1時,二項分布服從0-1分布。二項分布是一個離散分布,所以使用概率質(zhì)量函數(shù)(ProbabilityMassFunction,PMF)來表示k次成功的概率。以投硬幣為例,如下代碼可以模擬10000次投擲公平硬幣,每次投10枚硬幣的結果,其可視化如圖14.3所示。從圖14.3所示直方圖中可以發(fā)現(xiàn)該分布基本上是對稱的,成功和失敗的可能各占50%,這與正態(tài)分布類似。如果投擲的硬幣是非公平硬幣呢?例如正面概率是80%,那么可以通過指定參數(shù)p=0.8模擬,代碼如下。可視化結果如圖14.4所示。圖14.3公平硬幣圖14.4非公平硬幣如果想知道試驗中正面有5個或更少的概率是多少,又應該如何計算呢?此時可以用累積概率分布函數(shù)stats.distribution.cdf()計算,代碼如下。其中,k=5代表成功5次或以下,n=10代表投擲109次的概率是多少,只需要用1減去正面小于或等于8次的累積概率分布就可以,代碼如下。對于連續(xù)概率分布,使用密度函數(shù)stats.distribution.pdf()來檢查指定值的概率密度,而對離散分布則使用stats.distribution.pmf()概率質(zhì)量函數(shù)。例如,想獲得成功5次的概率則使用如下代碼。這與前面模擬10000次投擲硬幣的結果十分接近,其中5次正面朝上剛好2435次,概率密度為2435/10000=0.2435。泊松分布泊松分布用于描述單位時間內(nèi)隨機事件發(fā)生次數(shù)的概率分布,它也是離散分布。例如等公交車,假設這些公交車的到來是獨立且隨機的(當然這不是現(xiàn)實),前后車之間沒有關系,那么在1小時中到來的公交車數(shù)量就符合泊松分布。日常生活中大量事件是有固定頻率的,如某醫(yī)院平均每小時出生10個嬰兒,某客服中心每分鐘接到10個電話,某網(wǎng)站平均每分鐘有10000次訪問。它們的特點是可以預估這些事件的總數(shù),但是沒法知道具體的發(fā)生時間。下面來模擬一個每時間單元發(fā)生一次的泊松分布,代碼如下。其可視化如圖14.5所示。從圖14.5可以看出,當事件發(fā)生頻率(mu)低的時候很少出現(xiàn)事件同時發(fā)生的情況,此時分布顯著左偏。不過如果提高事件發(fā)生頻率,如將mu提高到10,此時分布就變得更加對稱,如圖14.6所示。圖14.5泊松分布(mu=1)接下來再看一個生活中的例子,假設某家銷售零食的網(wǎng)店平均每周賣出30件堅果零那么可以近似認為,該問題滿足以下3個條件:顧客購買堅果是小概率事件;購買堅果的顧客之間是獨立的,即不會互相依賴或影響;顧客購買堅果的概率是穩(wěn)定的。在統(tǒng)計學上,如果某類事件滿足上述3個條件,就稱它服從泊松分布。因此,可以用泊松分布的累積概率分布進行計算,代碼如下。圖14.6泊松分布(mu=10)從輸出可以看出只要存貨為39,那么網(wǎng)店有95%的概率不會缺貨,如果商家想降低庫存,那么就需要承擔更大的缺貨概率。幾何分布與指數(shù)分布幾何分布(GeometricDistribution)是離散型概率分布,其中一種定義為:在n次伯努利試驗中,試驗k次才得到第一次成功的概率。具體而言就是前k-1次皆失敗,第k次成功的概率。下面利用幾何分布來模擬一下投擲公平硬幣,要多少次試驗才能出現(xiàn)正面朝上,運行如下代碼,將得到如圖14.7所示的結果。圖14.7投擲硬幣直方圖圖14.7的結果與預期非常一致,大多數(shù)情況下只需要投1次或2次就可以成功,要投5次以上才出現(xiàn)正面朝上的概率極低。模擬的10000次試驗中,最多是15次才成功。下面用stats.distribution.cdf()函數(shù)來檢查一下至少5次才成功的概率,代碼如下。很顯然,0.03125這個概率很低,這也與前面的模擬試驗一致。如果想知道剛好2次成功的概率,此時則可以用stats.distribution.pmf()函數(shù)計算,代碼如下。下面再來看一下指數(shù)分布,在概率理論和統(tǒng)計學中,指數(shù)分布(也稱為負指數(shù)分布生的過程。它是幾何分布的連續(xù)模擬,具有無記憶的關鍵性質(zhì)。除了用于分析泊松過程參數(shù)lambda=6的指數(shù)分布,那么現(xiàn)在公交站15分鐘以內(nèi)有公交車到達的概率就是:點估計與置信區(qū)間統(tǒng)計推斷是分析樣本數(shù)據(jù)以從中了解總體的過程。在數(shù)據(jù)分析中,經(jīng)常對某些總體的特征感興趣,但收集整個數(shù)據(jù)總體可能不可行。例如,經(jīng)濟普查中對收入的調(diào)查,對每個人進行調(diào)查并不可行。現(xiàn)實場景中的經(jīng)濟普查都是對一部分人進行普查,如抽樣10000人,并使用這些數(shù)據(jù)來推斷總體。點估計點估計正是基于樣本數(shù)據(jù)的總體參數(shù)估計方法。例如,如果想知道人群的平均年齡,那么可以對登記人群進行調(diào)查,然后使用他們的平均年齡的點估計作為總體的估計。這里樣本的平均值稱為樣本平均值,樣本平均值通常與總體平均值不完全相同。這種差異可以由許多因素造成,包括調(diào)查設計不佳、抽樣方法有偏見以及隨機從總體中抽取樣本所固有的誤差。下面通過生成一個人群年齡數(shù)據(jù)的總體,然后從中抽取樣本以估算均值來說明這一問題,代碼如下。上述代碼模擬生成了250000個年齡數(shù)據(jù)作為總體,其平均值為42.98932,這里使用了泊松分布來生成隨機數(shù),估計具體試驗,不同讀者可以選擇不同的分布函數(shù)。接下來隨機抽樣500個樣本,計算樣本均值,代碼如下。從輸出結果可以得知,基于500個樣本的抽樣得出的點估計與真實的總體平均年齡非常接近,差別僅為0.085左右。這也說明通過相對小的樣本也可以得出較準確的對總體的估計。抽樣分布與中心極限定理許多統(tǒng)計過程都假定數(shù)據(jù)遵循正態(tài)分布,因為正態(tài)分布具有良好的屬性,如對稱性,并且大多數(shù)數(shù)據(jù)都聚集在一個平均值標準偏差內(nèi)。不幸的是,現(xiàn)實世界中的數(shù)據(jù)通常不是正態(tài)分布的。而樣本的分布趨向于反映總體的分布,這意味著從具有偏斜分布的人群中獲取的樣本也將趨于偏斜。以前面創(chuàng)建的年齡數(shù)據(jù)為例,將其可視化,如圖14.8所示。圖14.8年齡數(shù)據(jù)直方圖雖然該分布偏度不大,但圖14.8中數(shù)據(jù)顯然不是正態(tài)分布,而是有兩個峰。那么抽樣也應該與總體的形狀和偏斜大致相同,將樣本數(shù)據(jù)可視化,如圖14.9所示。圖14.9樣本年齡直方圖顯然,樣本的分布形狀與總體的形狀大致相同。由此表明不能將假定正態(tài)分布應用于此數(shù)據(jù)集,因為從上面的圖形看出該分布不是正態(tài)分布。那非正態(tài)分布的數(shù)據(jù)應該怎么進行參數(shù)估計呢?幸運的是,有數(shù)學家提出了中心極限定理。中心極限定理是概率論最重要的理論之一,它是許多統(tǒng)計分析方法的基礎。簡單來說,中心極限定理指的是給定一個任意分布的總體,每次從這些總體中隨機抽取n個抽樣,一共抽取m次,然后把這m組抽樣分別求出平均值,最終得到的平均值的分布接近正態(tài)分布。為了說明這一點,如下代碼模擬了從總體中抽取200個樣本來創(chuàng)建樣本分布,然后對平均值進行200個點估計,結果可視化如圖14.10所示。圖14.10抽樣分布從圖14.10可以看出,盡管樣本是從非正態(tài)分布的總體中抽取,但是抽樣分布卻基本上符合正態(tài)分布。同時,抽樣分布的均值也和總體的均值基本一致,抽樣次數(shù)越多,最終估計的參數(shù)就越接近總體。針對當前討論的問題,兩者之差只有0.0728左右。置信區(qū)間點估計可以讓我們大致了解總體參數(shù)(如均值),但估計是容易出錯的,并且采取多個樣本來獲得改進的估計值可能并不可行。因此,統(tǒng)計學家們又引入了置信區(qū)間(ConfidenceInterval),一個概率樣本的置信區(qū)間是對這個樣本的某個總體參數(shù)的區(qū)間估計。置信區(qū)間展現(xiàn)的是這個參數(shù)的真實值有一定概率落在測量結果的周圍的程度。置信區(qū)間給出的是被測量參數(shù)的測量值的可信程度,即前面所要求的“一定概率”。這個概率被稱為置信度或置信水平。如果想擁有一個95%的機會通過點估計和相應的方法來捕獲真實的總體參數(shù)置信區(qū)間,那么可以將置信度設置為95%。較高的置信度會得到范圍更廣的置信區(qū)間。在已經(jīng)得到點估計的情況下,將其加上和減去邊際誤差就可以得到置信區(qū)間。如下代碼對置信區(qū)間的計算進行了展示。上述代碼中的sample_mean就是點估計,而邊際誤差通過首先計算關鍵值z_critical,然后由z_critical*(pop_stdev/math.sqrt(sample_size))計算得到。那么應該如何理解上面的置信區(qū)間呢?圖14.11提供了很好的說明,置信區(qū)間代表了有多大概率將總體均值包含在區(qū)間之內(nèi),代碼如下。在不知道總體標準差的情況下,通常采用樣本標準差來代替總體標準差,同時采用t分布來計算置信區(qū)間。因此,使用stats.t.ppf()函數(shù)來計算t_critical,并用sample_stdev代替總體標準差,代碼如下。圖14.11置信區(qū)間用樣本標準偏差代替總體標準偏差,最終結果是得到較寬的置信區(qū)間。留給讀者的思考理解概率論,無論是對數(shù)據(jù)分析還有將來的機器學習都大有幫助,這里推薦讀者進一步學習以下書籍。陳希儒.概率論與數(shù)理統(tǒng)計[M].合肥:中國科學技術大學出版社,2009.ThomasHaslwanter.AnIntroductiontoStatisticswithPython:WithApplicationsintheLifeSciences[M].Basel,SwitzeHand:Springer,2016.AllenB.Downey.ThinkStats[M].2ndEdition.CA,USA:O'ReillyMedia,2014.AllenB.Downey.ThinkBayes[M].CA,USA:O'ReillyMedia,2013.第5章假設檢驗有些人看起來是好人,實際是壞人;有些人看起來是壞人,實際是好人。好人還是壞人,不但與他實際是好人還是壞人有關,還與我們的眼睛有關。所謂“甲之蜜糖,乙之砒霜也”,判斷一個事物的好壞,不但和我們的判斷標準有關,還和判斷方法有關。統(tǒng)計學則是利用假設檢驗(又稱統(tǒng)計檢驗)這一框架來進行判斷。本章將介紹假設檢驗的基本原理,同時也將討論在Python中如何進行一些常用的檢驗。假設檢驗概述初識假設檢驗假設檢驗是數(shù)理統(tǒng)計學中根據(jù)一定假設條件由樣本推斷總體的一種方法。事先對總體參數(shù)或分布形式做出某種假設,然后利用樣本信息來判斷原假設是否成立,采用邏輯上的反證法,依據(jù)統(tǒng)計上的小概率原理得出結論。所謂反證法,就是如果要證明一個結論是正確的,那么先假設這個結論是錯誤的,然后以這個結論是錯誤的為前提條件進行推理,推理出來的結果與假設條件矛盾,這個時候就說明這個假設是錯誤的,也就是這個結論是正確的。前面一段關于假設檢驗的論述非常拗口,下面用一個真實的例子——女士品茶來說明。女士品茶這個故事最早出現(xiàn)在統(tǒng)計學家Fisher的著作TheDesignofExperiment中。書中提到,有位女士一次喝茶時提出了一個有趣的觀點:把茶加到奶里和把奶加到茶里,最后得到的奶茶的味道是不一樣的。大部分人都覺得這位女士在瞎說,但是Fisher教授提出了要用科學的方法去證明到底一樣還是不一樣(牛人就是牛人,所以遇到問題要多想想別人為什么那么說,而不是不經(jīng)思考就拒絕)。接下來,我們具體看一下Fisher的實驗方法:他調(diào)配出了8杯其他條件一模一樣而僅僅是倒茶、倒奶順序相反的茶,其中每類各4杯。然后他讓女士品嘗之后告訴他哪4杯是先加奶的,剩下的就都是先加茶的了。在分析實驗結果的時候,F(xiàn)isher運用了這樣的邏輯:首先假設女士沒有這個能力(這個假設被稱為原假設或空假設),如果女士很準確地鑒別了這8杯茶,那就說明在原假設成立的情況下,發(fā)生了非常反常的現(xiàn)象(小概率事件),以至于說明原假設是令人懷疑的。從統(tǒng)計學上來說,如果在原假設成立的前提下,發(fā)生了非常小概率的事件,那就有理由懷疑原假設的真實性。我們把上面這個過程叫做假設檢驗。假設檢驗的步驟了解了假設檢驗的思想后,本節(jié)將討論假設檢驗的具體步驟。提出空假設和備擇假設空假設(H0)一般是要推翻的論點,備擇假設(H1)則是要證明的論點。以上面的女士品茶為例,H0和H1分別如下。H0:把茶加到奶里和把奶加到茶里得到的奶茶是一樣的。H1:把茶加到奶里和把奶加到茶里得到的奶茶是不一樣的。構造檢驗統(tǒng)計量檢驗統(tǒng)計量是根據(jù)樣本觀測結果計算得到的樣本統(tǒng)計量,并以此對空假設和備擇假設做出決策。具體而言,假設總體X~N(μ,σ2),X1,X2,…,Xn為取自該總體X的本,n為樣本總量,為樣本均值,S2為樣本方差。那么有:這3種統(tǒng)計量及其對應分布分別為z檢驗(z-test)、t檢驗(t-test)和卡方檢驗。z檢驗一般用于大樣本(即樣本容量大于30)平均值差異性檢驗。它是用標準正態(tài)分布的理論來推斷差異發(fā)生的概率,從而比較兩個平均數(shù)的差異是否顯著。t檢驗主要用于樣本含量較?。ㄈ鏽<30),總體標準差σ未知的正態(tài)分布。t是用t分布理論來推論差異發(fā)生的概率,從而比較兩個平均數(shù)的差異是否顯著。二者偏差越小;若兩個值完全相等時,卡方值就為0,表明理論值完全符合。實際運用中可以參考圖15.1來完成不同類型檢驗的選擇。根據(jù)要求的顯著性水平求臨界值和拒絕域還記得前面提到的反常事件(小概率事件)嗎?如果小概率事件發(fā)生了,就表示空假設是錯誤的,可是具體多小的概率才算是小概率呢?一般這個概率為0.05,也就是5%,如果一件事情發(fā)生的概率小于或等于5%,我們就認為這是一個小概率事件,0.05就是顯著性水平,用α表示。顯著性水平把概率分布分為兩個區(qū)間:拒絕區(qū)間和接受區(qū)間。最后計算出來的結果落在拒絕區(qū)間,就可以拒絕空假設;如果落在了接受區(qū)間,就需要接受空假設,1-α則稱為置信水平(置信度)。圖15.1假設檢驗選擇計算檢驗統(tǒng)計量根據(jù)前面選擇的檢驗統(tǒng)計量類型,計算對應的檢驗統(tǒng)計量的值。除此之外,我們還可以根據(jù)樣本量得出p值,p值就是實際樣本中小概率事件的具體概率值。決策比較計算出來的檢驗統(tǒng)計量與臨界值和拒絕域,如果值落在了拒絕域內(nèi),那就要拒絕空假設,否則接受空假設。比較計算出來的p值和顯著性水平α值,如果p≤α,則拒絕空假設,否則接受空假設。假設檢驗中的Ⅰ類錯誤與Ⅱ類錯誤前面探討了假設檢驗的基本思想,本節(jié)將介紹假設檢驗中的兩類錯誤。假設檢驗的最終目的是去偽存真,那么它對應的兩類錯誤就是棄真存?zhèn)?。第一類錯誤叫做棄真錯誤,通俗一點說就是漏診,就是本來生病了(假設是正確的),但是沒有檢測出來,所以給拒絕掉了;第二類錯誤是存?zhèn)五e誤,通俗一點就是誤診,就是本來沒?。僭O是錯誤的),結果診斷說生病了(假設是正確的),所以就把假設給接受了。為了更形象地說明這兩類錯誤,以圖15.2為例,正常情況下,該實例的假設檢驗應該為:H0:沒有懷孕;H1:懷孕了。左圖:這類錯誤為棄真錯誤,也就是空假設為沒有懷孕,但是檢驗的結果落在拒絕不可能懷孕,這就犯了第一類錯誤——懷孕,而事實上圖片里的女士是懷孕的,這就犯了第二類錯誤——存?zhèn)?。圖15.2假設檢驗中的兩類錯誤Python中的假設檢驗單樣本t-test單樣本t -test屬于參數(shù)檢驗,用于比較樣本數(shù)據(jù)與一個特定數(shù)值之間的差異情況。如,想比較成都的工資水平與全國工資水平是否存在顯著差異,首先構造數(shù)據(jù)如下。模擬數(shù)據(jù)中成都的平均工資為3891.94元,全國的平均工資為4199.8元,現(xiàn)在想知道二者有無顯著差異,就可以用stats模塊中的ttest_1samp()函數(shù)進行假設檢驗,代碼如下。上述代碼的輸出結果中:p=0.0056,顯然此時在顯著性水平為0.05時應該拒絕空假設——成都的工資水平和全國工資水平?jīng)]有顯著差異。此外,也可以用stats.t.ppf()函數(shù)驗證,代碼如下。顯然t值在該區(qū)間以外,即95%的置信區(qū)間以外,通過erval()函數(shù)也可以對此進行驗證。上述代碼輸出的成都平均工資區(qū)間為3681~4103元,與前面的判斷一致。雙樣本t-test雙樣本t-test進行判斷。它需要滿足以下3個條件。隨機抽樣,所有觀測應該隨機地從目標總體中抽出。正態(tài)分布,每個樣本來自的總體必須滿足正態(tài)分布。方差齊性,均數(shù)比較時,要求兩總體方差相等。還是以上面的工資數(shù)據(jù)為例,現(xiàn)在構造一個重慶的工資數(shù)據(jù)樣本如下?,F(xiàn)在樣本中成都的平均工資為3891.94元,重慶的平均工資為3600.78元,請問兩者有顯著差別嗎?從數(shù)字上看有差別,但是需要用雙樣本t-test來確認一下,代碼如下。輸出結果中p=0.09975,如果顯著性水平為0.05,此時無法拒絕空假設。實際上也就是說是有9.975%的可能看到成都和重慶的工資數(shù)據(jù)會有這樣的差異。配對t-test配對t-test比較(即自身配對);例進行說明,假設有如下的受試者體重數(shù)據(jù)。從描述性統(tǒng)計結果看,吃了該藥后體重平均要減少1.41千克左右。這是減肥藥有效,還是只是偶然事件呢?利用配對t-test驗證如下。從配對t-test結果來看,p=0.0018,應該拒絕空假設,也就是說減肥藥是有效的。卡方檢驗卡方檢驗屬于非參數(shù)檢驗的范疇,主要是比較兩個及兩個以上樣本率(構成比)以及兩個分類變量的關聯(lián)性分析。其根本思想就是比較理論頻數(shù)和實際頻數(shù)的吻合程度或擬合優(yōu)度問題。上面的描述非?;逎y懂,這里用幾個簡單的卡方檢驗的例子來說明,例如:男性和女性的線上生鮮食品購買習慣有無差別?不吃早飯對體重下降有無影響?療效是否與不同藥品有關?不同廣告渠道獲得的用戶,次日留存率是否有差別?以上問題都可以利用卡方檢驗來回答,這里以最后一個問題為例來說明卡方檢驗的應用。假設某移動應用推廣使用了3個不同渠道,分別是門戶網(wǎng)站的在線廣告、微信推廣、微博推廣?,F(xiàn)在想判斷以上3個不同渠道獲得的用戶的留存率是否有差別。基于此問題構造如下數(shù)據(jù)。以上數(shù)據(jù)是每天該應用的新注冊人數(shù)和次日繼續(xù)使用用戶數(shù)。因此,可以計算用戶流失數(shù)據(jù)如下?,F(xiàn)在想知道來自不同渠道的用戶的次日留存是否相互獨立,利用卡方檢驗,代碼如下。輸出結果中,p=0.00928,因此應該拒絕空假設,即用戶的渠道類別影響了次日留存情況。計算不同渠道的留存率如下。似乎通過門戶網(wǎng)站獲取的用戶有更高的留存率,據(jù)此,營銷部門可以在門戶網(wǎng)站相對增加推廣。留給讀者的思考統(tǒng)計檢驗屬于一門專門的學科,本章的介紹只是一點皮毛。感興趣的讀者可以進一步閱讀專業(yè)的概率論與統(tǒng)計的相關書籍以加深理解。這里向讀者推薦以下兩本書籍:DavidFreedman,RobertPisani,RogerPurves,etal.統(tǒng)計學[M].魏宗舒,施錫銓,林舉干,等譯.北京:中國統(tǒng)計出版社,1997.John A. Rice.數(shù)理統(tǒng)計與數(shù)據(jù)分析[M]2011.第6章一名數(shù)據(jù)分析師的游戲上線之旅目組經(jīng)過了5個月的緊張開發(fā),終于完成了一款新的移動游戲應用,明天就準備上線了。作為一名數(shù)據(jù)分析師,你將遇到哪些問題呢?應用第一天上線后會不會因為大量用戶涌入,導致應用啟動時間比要求的3秒長?次日留存率是否達到目標?應該在游戲的哪一個關卡引入微信分享提示?游戲內(nèi)購定價是1.99元還是0.99元更好?本章將開始一名數(shù)據(jù)分析師的游戲上線之旅!游戲啟動時間是否超過目標管理團隊為了隨時了解公司的游戲軟件上線情況,一開始就設計了一些簡單的運營指標來跟蹤游戲運營情況。其中一個指標就是:啟動游戲后歡迎界面平均等待時間不能超過3秒。測試團隊經(jīng)過了大量測試,已經(jīng)驗證無論是在iOS還是Android平臺,歡迎界面等待時間都不超過3秒。游戲上線后也一切運行正常,然而不妙的是上線6小時后,游戲的上一小時平均啟動時間開始超過了管理層設定的3秒平均值。緊張的項目經(jīng)理跑來問你——團隊的數(shù)據(jù)分析師,這是否可能是用戶過多導致啟動延遲?啟動時間是否超過3秒要回答此問題,首先來看一下模擬的游戲運營數(shù)據(jù),代碼如下。上述代碼模擬了7個小時的數(shù)據(jù),假定每小時裝機數(shù)是符合參數(shù)為60的泊松分布,而啟動時間則是符合參數(shù)分別為3和0.95的伽馬分布。利用如下代碼,將上面數(shù)據(jù)進行可視化。如圖16.1所示,前6小時一切正常,每小時的平均啟動時間都在3秒以內(nèi),但進入第7小時,似乎突然啟動時間就超過了目標值。當下需要考察的是最后一小時的數(shù)據(jù),對其啟動時間可視化(見圖16.2),代碼如下。圖16.1游戲平均啟動時間與裝機數(shù)圖16.2過去一小時啟動時間雖然確實有許多用戶的啟動時間在3秒以上,但是管理層關心的問題是:過去一小時的問題是否具有普適性。作為項目經(jīng)理,對這一異常感到緊張是很正常的事,然而作為一名數(shù)據(jù)分析師,對此提出的問題卻應該是:最近一小時的平均啟動時間是否來自平均啟動時間不超過3秒的啟動時間分布?很顯然,這是一個統(tǒng)計檢驗問題,那么該采用何種假設檢驗呢?上一章的圖15.1給出了答案。根據(jù)圖15.1得知當前要做的是針對單樣本均值的t-test,具體假設如下。空假設:前一小時總體的觀察平均值小于或等于3秒。備擇假設:前一小時總體的觀察平均值大于3秒。檢驗:單樣本,單尾t-test,α=0.05。因此,采用t-test驗證如下。中的stats模塊提供了單樣本t-test函數(shù)。利用stats.ttest_1samp()函數(shù),輸入樣本值和總體均值即可得到t=1.38,p=0.086前一小時總體的觀察平均值小于或等于3秒就應該是正確的。此時你應該可以去拍拍項目經(jīng)理的肩膀,放心地說:“老大,目前的情況應該很正常,出現(xiàn)啟動時間大于3然事件?!碑斎磺懊媸侵苯永肧ciPy中的函數(shù)實現(xiàn)t值和p下的公式手工計算t值后,查t分布表得到p值。其中,為樣本平均數(shù);μ0為總體平均數(shù);SE為測量標準誤差;s為樣本標準差;n為樣本數(shù)。構造啟動時間監(jiān)測圖項目經(jīng)理已經(jīng)很滿意地離開,但是如果每次出現(xiàn)啟動時間大于3秒,他就很緊張地到你這里來確認是不是偶然事件,顯然不是問題的解決之道。那應該如何來處理這一問題呢?在前面章節(jié)讀者已經(jīng)學習過置信區(qū)間的概念,回憶一下置信區(qū)間CI的計算公式:其中為樣本平均數(shù);tcritical為樣本平均數(shù)與總體平均數(shù)的離差統(tǒng)計量這;SE為測量標準誤差。根據(jù)此公式我們可以為啟動時間構造一個置信區(qū)間(ConfidenceLevel=95%),當平均啟動時間在置信區(qū)間之外時才應該特別關注。以第7小時的啟動時間為例,可以計算置信區(qū)間如下。有興趣的讀者可以自行驗證是不是所有的第7小時啟動時間都在2.837~3.887秒這個區(qū)間之內(nèi)。類似地,可以利用如下代碼計算游戲自從上線以來每個小時的平均啟動時間的置信區(qū)間,結果如圖16.3所示。圖16.3每小時的平均啟動時間的置信區(qū)間同時可以將上面的數(shù)據(jù)用如下代碼可視化,如圖16.4所示。這段代碼使用了區(qū)域填充圖來繪制啟動時間的置信區(qū)間,關于plt.fill_between()函數(shù)的使用在第9章已經(jīng)有介紹,這里不再討論。顯然,圖16.4很好地展示了游戲在前7小時平均啟動時間指標,一切盡在掌握中!接下來數(shù)據(jù)分析師可以考慮為項目經(jīng)理建立如圖16.5所示的儀表盤,供項目經(jīng)理隨時監(jiān)控啟動時間是否異常。利用儀表盤,運營團隊可以很方便地對裝機數(shù)和平均啟動時間進行監(jiān)控。圖16.5模擬了后面24小時的游戲運營情況,它由如下代碼生成。圖16.4帶置信區(qū)間的前7小時平均啟動時間和裝機數(shù)圖16.5啟動時間儀表盤現(xiàn)在你可以放心地下班了,因為啟動時間儀表盤會自動提示項目經(jīng)理當前的問題是否需要采取行動。次日留存率是否大于30%現(xiàn)在游戲已經(jīng)成功上線1天,項目經(jīng)理又開始計算次日留存率指標,如圖16.6所示。很不幸,游戲的次日留存率只有27.6%,離30%的目標還有一定差距。模擬數(shù)據(jù)代碼與可視化代碼如下。圖16.6游戲的次日留存率上述代碼讀者應該已經(jīng)非常熟悉,這里不過多解釋。在第9章中已經(jīng)提到過,axes對象可以使用各種繪圖函數(shù),所以這里使用了ax變量來進行圖形屬性設置。其中,函數(shù)中字體的指定通過fontdict這個字典來一次完成多個值的設置,這也是數(shù)據(jù)可視化經(jīng)常用到的一種屬性設置方式?;氐接螒虻拇稳樟舸媛蕟栴},現(xiàn)在運營團隊是否應該為第一天上線后的次日留存率于30%而擔心?很顯然,這又是一個統(tǒng)計檢驗問題,只不過這次遇到的問題是單樣本比例問題。參考圖15.1可知應該采用z 來解決此問題,利用statsmodels中的proportions_zte

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論