Python數(shù)據(jù)分析案例實戰(zhàn)PPT完整全套教學課件_第1頁
Python數(shù)據(jù)分析案例實戰(zhàn)PPT完整全套教學課件_第2頁
Python數(shù)據(jù)分析案例實戰(zhàn)PPT完整全套教學課件_第3頁
Python數(shù)據(jù)分析案例實戰(zhàn)PPT完整全套教學課件_第4頁
Python數(shù)據(jù)分析案例實戰(zhàn)PPT完整全套教學課件_第5頁
已閱讀5頁,還剩401頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Python數(shù)據(jù)分析案例實戰(zhàn)第1章數(shù)據(jù)分析基礎(chǔ)第2章NumPy模塊實現(xiàn)數(shù)值計算.ppt第3章Pandas模塊實現(xiàn)統(tǒng)計分析.ppt第4章Matplotlib模塊實現(xiàn)數(shù)據(jù)可視化.ppt第5章客戶價值分析第6章銷售收入預測第7章二手房數(shù)據(jù)分析預測系統(tǒng)第8章智能停車場運營分析系統(tǒng)第9章影視作品分析第10章看店寶什么是數(shù)據(jù)分析

數(shù)據(jù)分析就是利用數(shù)學、統(tǒng)計學理論相結(jié)合科學統(tǒng)計分析方法對數(shù)據(jù)庫中的數(shù)據(jù)、Excel數(shù)據(jù)、收集的大量數(shù)據(jù)、網(wǎng)頁抓取的數(shù)據(jù)進行分析,從中提取有價值的信息形成結(jié)論并進行展示的過程。

數(shù)據(jù)分析的目的在于將隱藏在一大堆看似雜亂無章的數(shù)據(jù)背后,將有用的信息提取出來,總結(jié)出數(shù)據(jù)的內(nèi)在規(guī)律,以幫助在實際工作中的管理者做出決策和判斷。數(shù)據(jù)分析的概念我們身邊的例子——QQ群數(shù)據(jù)分析的概念經(jīng)過分析后得到如下信息:大家都在聊什么,聊天的主要內(nèi)容(詞云圖)哪個時間段聊天的人多(群活躍度)大家以聊天為主還是以斗圖為主,各占多少這一年群聊天的情況數(shù)據(jù)分析的概念QQ群聊天內(nèi)容分析詞云圖QQ群用戶活躍度分析QQ群聊天次數(shù)與發(fā)圖次數(shù)占比分析2019年群聊天情況分析12492.25數(shù)據(jù)分析的應(yīng)用

通過數(shù)據(jù)分析可以根據(jù)客戶意向進行商品推薦以及針對性廣告等。例如,我們熟悉的淘寶1.互聯(lián)網(wǎng)行業(yè)數(shù)據(jù)分析的應(yīng)用智能醫(yī)療、健康指數(shù)評估以及DNA對比等例如,我們熟悉的手環(huán)、體脂稱2.醫(yī)學方面數(shù)據(jù)分析的應(yīng)用通過數(shù)據(jù)分析建立一個潛在攻擊性的分析模型,監(jiān)測大量的網(wǎng)絡(luò)訪問數(shù)據(jù)與訪問行為,可以快速識別出可疑網(wǎng)絡(luò)的訪問,起到有效的防御作用3.網(wǎng)絡(luò)安全方面

根據(jù)交通狀況數(shù)據(jù)與GPS定位系統(tǒng)有效的預測交通實時路況信息。4.交通方面數(shù)據(jù)分析的應(yīng)用5.通信方面數(shù)據(jù)分析可以統(tǒng)計騷擾電話進行騷擾電話的攔截與黑名單的設(shè)置。6.個人生活數(shù)據(jù)分析可以對個人喜好、生活習慣等進行分類,為其提供更加周到的個性化服務(wù)。數(shù)據(jù)分析方法數(shù)據(jù)分析是從數(shù)據(jù)中提取有價值信息的過程,過程中需要對數(shù)據(jù)進行各種處理和歸類,只有掌握了正確的數(shù)據(jù)分析方法,才能起到事半功倍的效果。描述性分析探索性數(shù)據(jù)分析驗證性數(shù)據(jù)分析統(tǒng)計分析類:對比分析法、同比分析、環(huán)比分析、定比分析、差異分析、結(jié)構(gòu)分析、因素分析、80/20分析高級分析類:回歸分析法、聚類分析法、相關(guān)分析法、矩陣分析法、判別分析法、主成分分析法、因子分析法、對應(yīng)分析法、時間序列分析。數(shù)據(jù)挖掘類:機器學習、數(shù)據(jù)倉庫等復合技術(shù)為主

對比分析法是把客觀事物加以比較,以達到認識事物的本質(zhì)和規(guī)律并做出正確的評價。對比分析法通常是把兩個相互聯(lián)系的指標數(shù)據(jù)進行比較,從數(shù)量上展示和說明研究對象規(guī)模的大小,水平的高低,速度的快慢,以及各種關(guān)系是否協(xié)調(diào)。1.對比分析

公式:同比增長速度=(本期-同期)/同期×100%2.同比分析圖1本期與同期銷量情況對比圖2同比增長速度

同比分析就是按照時間如年度、季度、月份、日期等進行擴展,用本期實際發(fā)生數(shù)與同期歷史發(fā)生數(shù)相比,產(chǎn)生動態(tài)相對指標,用以揭示發(fā)展水平以及增長速度。同比分析主要是為了消除季節(jié)變動的影響,用以說明本期水平與去年同期水平對比而達到的相對值。公式:環(huán)比增長速度=(本期-上期)/上期×100%圖1本期與上期銷量情況對比圖2環(huán)比增長速度

3.環(huán)比分析環(huán)比分析是報告期水平與前一時期水平之比,表明現(xiàn)象逐期的變化趨勢。如果計算一年內(nèi)各月與前一個月對比,即1月比去年12月,2月比1月,3月比2月,4月比3月,5月比4月,6月比5月,說明逐月的變化程度,如圖1所示,環(huán)比增長趨勢如圖2所示。圖1圖24.80/20分析80/20分析,又稱二八法則、帕累托法則、帕累托定律、最省力法則或不平衡原則。該法則是由意大利經(jīng)濟學家帕累托提出的。二八法則認為:原因和結(jié)果、投入和產(chǎn)出、努力和報酬之間本來存在著無法解釋的不平衡。廣告費600005.回歸分析回歸分析多用于統(tǒng)計分析和預測。它是研究變量之間相關(guān)關(guān)系以及相互影響程度,通過建立自變量和因變量的方程,研究某個因素受其他因素影響的程度或用來預測。回歸分析包括:線性和非線性回歸、一元和多元回歸。常用的回歸是一元線性回歸和多元線性回歸。Y軸銷售收入x軸廣告費預測銷售收入6.聚類分析聚類分析多用于人群分類,客戶分類。所謂聚類是一個將數(shù)據(jù)集中在某些方面相似的數(shù)據(jù)成員進行分類組織的過程。

7.時間序列分析時間序列分析多用于統(tǒng)計和預測。它是按照時間的順序把隨機事件變化發(fā)展的過程記錄下來,就構(gòu)成了一個時間序列。時間序列分析就是對時間序列進行觀察、研究、找出它的變化和發(fā)展規(guī)律,預測將來的走勢。數(shù)據(jù)分析工具據(jù)某招聘網(wǎng)的數(shù)據(jù)顯示,關(guān)鍵詞“數(shù)據(jù)分析”前20頁職位描述中,數(shù)據(jù)分析師要求前3的主要技能是:SQLPythonExcel

Excel是常用的數(shù)據(jù)分析工具,可以實現(xiàn)基本的數(shù)據(jù)分析工作,但在數(shù)據(jù)量較大,公式嵌套很多的情況下,Excel處理起來會很麻煩而且處理速度也會變慢。此時,Python可作為首選,因為Python提供了大量的第三方擴展庫,如Numpy、Scipy、Matplotlib、Pandas、Scikit-Learn、Keras和Gensim等,這些庫不僅可以對數(shù)據(jù)進行處理、挖掘、可視化展示,其自帶的分析方法模型也使得數(shù)據(jù)分析變得簡單高效,只需編寫少量的代碼就可以得到分析結(jié)果。另外,Python簡單易學,在科學領(lǐng)域占據(jù)著越來越重要的地位,將成為科學領(lǐng)域的主流編程語言。數(shù)據(jù)分析流程數(shù)據(jù)分析的基本流程“如果給我1個小時解答一道決定我生死的問題,我會花55分鐘來弄清楚這道題到底是在問什么。一旦清楚了它到底在問什么,剩下的5分鐘足夠回答這個問題”——愛因斯坦明確目的1能夠找到合適的數(shù)據(jù)訓練是一件非常重要的事情。獲取數(shù)據(jù)的方式有很多種,如公開的數(shù)據(jù)集、爬蟲、數(shù)據(jù)采集工具、付費API等等獲取數(shù)據(jù)2數(shù)據(jù)處理是從大量的、雜亂無章、難以理解的、缺失的數(shù)據(jù)中,抽取并推導出對解決問題有價值、有意義的數(shù)據(jù)。數(shù)據(jù)處理3缺失值異常值describe()函數(shù)刪除drop_duplicates()方法刪除填充刪除數(shù)據(jù)分析4數(shù)據(jù)分析過程中,選擇適合的分析方法和工具很重要,所選擇的分析方法應(yīng)兼具準確性、可操作性、可理解性和可應(yīng)用性。而對于業(yè)務(wù)人員(如產(chǎn)品經(jīng)理或運營)來說,數(shù)據(jù)分析最重要的是數(shù)據(jù)分析思維。驗證結(jié)果5通過工具和方法分析出來的結(jié)果只是數(shù)據(jù)的某個結(jié)果的體現(xiàn),有些時候不一定準確,所以必須要進行驗證。例如,一家淘寶電商銷售業(yè)績下滑,分析結(jié)果是(1)價格平平,客戶不喜歡;(2)產(chǎn)品質(zhì)量不佳,和同期競爭對手比沒有優(yōu)勢。但這只是現(xiàn)象,不是因素。具體為什么客戶不喜歡,是宣傳不到位不吸引眼球?還是產(chǎn)品質(zhì)量不佳?這才是真正的分析結(jié)果。所以,只有將數(shù)據(jù)分析與業(yè)務(wù)思維相結(jié)合,才能找到真正的落地的東西。數(shù)據(jù)展示6數(shù)據(jù)展現(xiàn)即數(shù)據(jù)可視化的部分,把數(shù)據(jù)分析結(jié)果展示給業(yè)務(wù)的過程。數(shù)據(jù)展現(xiàn)除遵循各公司統(tǒng)一規(guī)范原則外,具體形式還要根據(jù)實際需求和場景而定,其中以圖表方式展現(xiàn)更清晰、更直觀。數(shù)據(jù)應(yīng)用7數(shù)據(jù)應(yīng)用是指將數(shù)據(jù)分析結(jié)果應(yīng)用到實際業(yè)務(wù)當中,是數(shù)據(jù)產(chǎn)生實際價值的直接體現(xiàn),這個過程需要具有數(shù)據(jù)溝通能力、業(yè)務(wù)推動能力和項目工作能力。Python數(shù)據(jù)分析常用模塊數(shù)值計算模塊NumPy1

NumPy模塊是一個用于實現(xiàn)科學計算的庫,尤其是在實現(xiàn)數(shù)據(jù)分析時,該模塊是一個必不可少的基礎(chǔ)庫。NumPy模塊不僅支持大量的維度數(shù)組與矩陣運算,還針對數(shù)組運算提供大量的數(shù)學函數(shù)庫。NumPy是一個運行速度非??斓臄?shù)學庫,實現(xiàn)的科學計算包括:一個強大的N維數(shù)組對象ndarray比較成熟的函數(shù)庫整合C/C++/Fortran代碼的工具實用的線性代數(shù)、傅里葉變換和隨機數(shù)生成函數(shù)等功能數(shù)據(jù)處理模塊Pandas2Pandas是一個開源庫,主要為Python提供高性能、易于使用的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)分析工具。Pandas的數(shù)據(jù)結(jié)構(gòu)中有兩大核心,分別是Series與DataFrame。其中Series是一維數(shù)組和Numpy中的一維數(shù)組類似。這兩種一維數(shù)組與Python中基本數(shù)據(jù)結(jié)構(gòu)List相近,Series可以保存多種數(shù)據(jù)類型的數(shù)據(jù),如布爾值、字符串、數(shù)字類型等。DataFrame是一種以表格形式的數(shù)據(jù)結(jié)構(gòu)類似于Excel表格一樣,是一種二維的表格型數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)可視化模塊matplotlib3

Matplotlib是一個Python繪圖庫,它不僅可以繪制2D圖表,還可以繪制3D圖表。中間的“plot”表示繪圖,而結(jié)尾的“l(fā)ib”表示它是一個集合。Matplotlib在實現(xiàn)繪制圖表時非常的簡單,只需幾行代碼即可實現(xiàn)繪制條形圖、折線圖、散點圖和餅圖等。matplotlib.pyplot子模塊提供了類似于MATLAB的界面,尤其是與IPython結(jié)合使用時,其中的每個函數(shù)都可以對圖形進行更改,例如,創(chuàng)建圖形、在圖形中創(chuàng)建繪圖區(qū)域、繪制線條樣式、字體屬性、軸屬性等。機器學習模塊scikit-learn4

scikit-learn模塊是一個簡單有效的數(shù)據(jù)挖掘和數(shù)據(jù)分析工具,可以讓用戶在各種環(huán)境下重復使用,scikit-learn模塊是基于numpy、scipy基礎(chǔ)上的模塊。該模塊將很多機器學習算法進行了封裝,即可對算法不是很熟悉的用戶也可以通過調(diào)用函數(shù)的方式輕松建模。sklearn模塊可以實現(xiàn)數(shù)據(jù)的預處理、分類、回歸、PCA降維、模型選擇等工作。它是實現(xiàn)數(shù)據(jù)分析時必不可少的一個模塊庫。NumPy模塊實現(xiàn)數(shù)值計算主講人:初識NumPy模塊1NumPy中數(shù)組的基本操作2NumPy中函數(shù)的應(yīng)用3初始NumPy模塊NumericalNumarrayNumPy開源免費1編碼效率高2執(zhí)行效率高3擴展性好4NumPy的安裝pipinstallPycharm安裝數(shù)據(jù)類型描述數(shù)據(jù)類型np.bool布爾值(True或False)np.half/np.float16半精度浮點數(shù):1個符號位,5位指數(shù)位,10位小數(shù)部分_默認的整數(shù)類型(與C語言中的long相同,通常為int32或int64)np.float32單精度浮點數(shù),1個符號位,8個指數(shù)位,23位小數(shù)部分c與C的int類型一樣,(通常為int32或int64)np.float64/np.float_雙精度浮點數(shù),1個符號位,11個指數(shù)位,52位小數(shù)部分p用于索引的整數(shù)類型(與C中的size_t相同,通常為是int32或int64)plex64復數(shù),表示兩個32位浮點數(shù)(實數(shù)部分和虛數(shù)部分)8字節(jié)(-128到127)plex128/plex_復數(shù),表示兩個64位浮點數(shù)(實數(shù)部分和虛數(shù)部分)16整數(shù)(-32768至32767)32整數(shù)(-2147483648至2147483647)64整數(shù)(-9223372036854775808至9223372036854775807)np.uint8無符號整數(shù)(0到255)np.uint16無符號整數(shù)(0到65535)np.uint32無符號整數(shù)(0到4294967295)np.uint64無符號整數(shù)(0到18446744073709551615)數(shù)組對象Ndarrayaxis0一維數(shù)組二維數(shù)組123451234554321axis0axis1axis0axis1axis2三維數(shù)組numpy.array(object,dtype=None,copy=True,order='K',subok=False,ndmin=0)參數(shù)名稱說明object數(shù)組或嵌套序列的對象dtype數(shù)組所需的數(shù)據(jù)類型copy對象是否需要拷貝order指定數(shù)組的內(nèi)存布局,C為行方向排列,F(xiàn)為列方向排列,A為任意方向(默認)subok默認返回一個與基類類型一致的數(shù)組ndmin指定生成數(shù)組的最小維度數(shù)據(jù)類型對象dtypedtype屬性1dtype()函數(shù)2numpy.dtype(obj[,align,copy])參數(shù)名稱說明object數(shù)組或嵌套序列的對象align如果為true,填充字段使其類似C的結(jié)構(gòu)體。copy是否復制dtype

對象,如果為false,則是對內(nèi)置數(shù)據(jù)類型對象的引用。NumPy中數(shù)組的基本操作內(nèi)置的數(shù)組創(chuàng)建方法1生成隨機數(shù)2切片和索引3修改數(shù)組形狀4組合數(shù)組5數(shù)組分割6內(nèi)置的數(shù)組創(chuàng)建方法zeros()函數(shù)1arange()函數(shù)2linspace()函數(shù)3logspace()函數(shù)4eye()函數(shù)5diag()函數(shù)6生成隨機數(shù)rand()函數(shù)1randint()函數(shù)2random()函數(shù)3隨機生成,元素為0~1范圍的數(shù)組。隨機生成,元素為指定范圍的數(shù)組。隨機生成,元素為0~1范圍的數(shù)組。切片和索引0

123

4元素1元素2元素3元素4元素5索引從0開始計數(shù)-5-4-3-2

-1元素1元素2元素3元素4元素5索引可以是負數(shù)元素1元素2元素3元素4元素5元素2元素3元素4

13

sname[start:end:step]起始值(包括)結(jié)束值(不包括)修改數(shù)組形狀numpy.reshape(a,newshape,order='C')參數(shù)名稱說明a表示要修改形狀的數(shù)組newshape表示整數(shù)或者整數(shù)數(shù)組,新的形狀應(yīng)當兼容原有形狀order‘C’表示按行、‘F’表示按列、‘A’表示原順序。組合數(shù)組橫向組合1沿軸組合3縱向組合2hstack()函數(shù)vstack()函數(shù)concatenate()函數(shù)數(shù)組分割水平分割1沿軸分割3縱向分割2hsplit()函數(shù)vsplit()函數(shù)split()函數(shù)NumPy中函數(shù)的應(yīng)用數(shù)學函數(shù)1算數(shù)函數(shù)2統(tǒng)計函數(shù)3矩陣函數(shù)4數(shù)學函數(shù)三角函數(shù)1數(shù)值修約2算數(shù)函數(shù)統(tǒng)計函數(shù)最大值1amax()函數(shù)差值2ptp()函數(shù)百分位數(shù)4percentile()函數(shù)sum()函數(shù)求和3矩陣函數(shù)matlib子模塊mat()函數(shù)廣播機制123數(shù)組a456數(shù)組b41018102030數(shù)組b數(shù)組a111222333102030102030102030102030111222333102030204060306090pandas模塊實現(xiàn)統(tǒng)計分析主講人:Excel數(shù)據(jù)pandas創(chuàng)建的數(shù)據(jù)安裝pandas模塊1pandas數(shù)據(jù)結(jié)構(gòu)2讀寫數(shù)據(jù)3數(shù)據(jù)操作4數(shù)據(jù)的分組與聚合5數(shù)據(jù)的預處理6安裝pandas模塊pipinstallPycharm安裝pandas數(shù)據(jù)結(jié)構(gòu)Series對象1DataFrame對象2Series對象012Series對象54321‘我愛Python’False數(shù)值類型字符類型布爾類型等…abcDataFrame對象DataFrame對象列標簽索引數(shù)據(jù)axis0axis1讀寫數(shù)據(jù)讀、寫文本文件1讀、寫Excel文件2讀、寫數(shù)據(jù)庫數(shù)據(jù)3讀、寫文本文件Excel打開數(shù)據(jù)記事本打開數(shù)據(jù)read_csv()函數(shù)參數(shù)名參數(shù)含義參數(shù)名參數(shù)含義filepath_or_buffer表示文件路徑的字符串skipfooterint類型,需要跳過的行號,從文件內(nèi)數(shù)據(jù)的末尾處算起sepstr類型,表示分隔符,默認為逗號“,”na_values將指定的值設(shè)置為NaNheader表示將哪一行數(shù)據(jù)作為列名nrowsint類型,設(shè)置需要讀取數(shù)據(jù)中的前n行數(shù)據(jù)names為讀取后的數(shù)據(jù)設(shè)置列名,默認為Noneencodingstr類型,用于設(shè)置文本編碼格式。例如,“utf-8”表示用UTF-8編碼index_col通過列索引指定列的位置,默認為Nonesqueeze設(shè)置為True,表示如果解析的數(shù)據(jù)只包含一列,則返回一個Series。默認為Falseskiprowsint類型,需要跳過的行號,從文件內(nèi)數(shù)據(jù)的開始處算起engine表示數(shù)據(jù)解析的引擎,可以指定為c或python,默認為cto_csv()函數(shù)參數(shù)名參數(shù)含義參數(shù)名參數(shù)含義filepath_or_buffer表示文件路徑的字符串header表示是否寫入數(shù)據(jù)中的列名,默認為False,表示不寫入sepstr類型,表示分隔符,默認為逗號“,”index表示是否將行索引寫入文件,默認為Truena_repstr類型,用于替換缺失值,默認為“”空modestr類型,表示寫入模式默認為“w”float_formatstr類型,指定浮點數(shù)據(jù)的格式,例如,'%.2f'表示保留兩位小數(shù)encodingstr類型,表示寫入文件的編碼格式columns表示指定寫入哪列數(shù)據(jù)的列名,默認為None讀、寫Excel文件Office辦公軟件“三劍客”.xls.xlsx2007版前2007版后read_excel()函數(shù)參數(shù)名參數(shù)含義io表示文件路徑的字符串sheet_name表示指定Excel文件內(nèi)的分表位置,返回多表可以使用sheet_name=[0,1],默認為0header表示指定哪一行數(shù)據(jù)作為列名,默認為0skiprowsint類型,需要跳過的行號,從文件內(nèi)數(shù)據(jù)的開始處算起skipfooterint類型,需要跳過的行號,從文件內(nèi)數(shù)據(jù)的末尾處算起index_col通過列索引指定列的位置,默認為Nonenames指定列的名字讀、寫數(shù)據(jù)庫數(shù)據(jù)SQLServerSQLiteOracleMySQL數(shù)據(jù)讀取1數(shù)據(jù)寫入2read_sql_query(sql,con,index_col=None,coerce_float=True,params=None,parse_dates=None,chunksize=None)read_sql_table(table_name,con,schema=None,index_col=None,coerce_float=True,parse_dates=None,columns=None,chunksize=None)read_sql(sql,con,index_col=None,coerce_float=True,params=None,parse_dates=None,columns=None,chunksize=None)數(shù)據(jù)讀取不能直接讀取數(shù)據(jù)庫中的某個表該函數(shù)需要SQLAlchemy模塊的支持全能的函數(shù)參數(shù)名稱參數(shù)含義sqlstr類型,表示需要執(zhí)行的sql查詢語句或表名table_namestr類型,表示數(shù)據(jù)庫中數(shù)據(jù)表的名稱con表示數(shù)據(jù)庫連接index_colstr類型或str類型的列表,指定數(shù)據(jù)列為數(shù)據(jù)行的索引coerce_floatboolean類型,將數(shù)據(jù)中decimal類型的值轉(zhuǎn)換為浮點類型,默認為Truecolumnslist類型,表示需要讀取數(shù)據(jù)的列名to_sql(self,name,con,schema=None,if_exists='fail',index=True,index_label=None,chunksize=None,dtype=None,method=None)數(shù)據(jù)寫入?yún)?shù)名稱說明namestr類型,表示數(shù)據(jù)表名稱con表示數(shù)據(jù)庫連接if_exists該參數(shù)提供了三個屬性,fail表示如果表已經(jīng)存在就不執(zhí)行寫入。replace表示如果表已經(jīng)存在,就將原來的表刪除,重新創(chuàng)建后再寫入數(shù)據(jù)。append表示在原有的數(shù)據(jù)表中添加數(shù)據(jù)。默認屬性為failindex表示是否將行索引寫入數(shù)據(jù)表中,默認為TrueSQLAlchemy模塊數(shù)據(jù)操作NaN數(shù)據(jù)處理時間數(shù)據(jù)的處理數(shù)據(jù)的增、刪、改、查數(shù)據(jù)的增、刪、改、查NaN數(shù)據(jù)處理時間數(shù)據(jù)的處理數(shù)據(jù)的分組與聚合分組數(shù)據(jù)groupby()方法Series對象DataFrame對象SeriesGroupBy對象DataFrameGroupBy對象keydataa1a2b3c4a5分組a1a2a5b3c4求和keydataa8b3c4聚合數(shù)據(jù)DataFrame.agg(func,axis=0,*args,**kwargs)參數(shù)名稱說明func可以接收字符串、列表、字典類型,表示每行每列的函數(shù)。axis表示操作數(shù)據(jù)的軸向,0為數(shù)據(jù)的索引,1位數(shù)據(jù)的列,默認為0。*args要傳遞給func的位置參數(shù)。**kwargs要傳遞給func的關(guān)鍵字參數(shù)。對DataFrame對象中列的數(shù)據(jù)進行分組并實現(xiàn)數(shù)據(jù)的計算和統(tǒng)計。數(shù)據(jù)的預處理合并數(shù)據(jù)去除重復數(shù)據(jù)合并數(shù)據(jù)A類數(shù)據(jù)ABCA1B1C1A2B2C2A3B3C3B類數(shù)據(jù)CDEC1D1E1C2D2E2C3D3E3新數(shù)據(jù)ABCCDEA1B1C1C1D1E1A2B2C2C2D2E2A3B3C3C3D3E3C類數(shù)據(jù)CDEC1D1E1B2D2E2A3D3E3D類數(shù)據(jù)CGEC1G1E1B2G2E2A3G3E3E類數(shù)據(jù)EGEE1G1E1E2G2E2E3G3E3F類數(shù)據(jù)EGFE1G1F1E2G2F2E3G3F3concat()函數(shù)1merge()函數(shù)2join()方法3combine_first()方法4pandas.concat(objs,axis=0,join='outer',join_axes=None,ignore_index=False,keys=None,levels=None,names=None,verify_integrity=False,sort=None,copy=True)參數(shù)名稱說明objs需要合并的數(shù)據(jù),如Series、DataFrame等數(shù)據(jù)。axis連接數(shù)據(jù)的軸向,0表示縱向合并,1表示橫向合并,默認為0ignore_index是否保留原有的合并索引,默認為False(保留),設(shè)置為True將產(chǎn)生一組新的索引keys通過設(shè)置key區(qū)分合并后的數(shù)據(jù)來源sort在連接軸未對齊時,選擇是否排序,true為排序,false為不排序copy是否復制數(shù)據(jù),默認為復制,設(shè)置false為不復制縱向、橫向合并參數(shù)名稱說明參數(shù)名稱left需要合并的左側(cè)數(shù)據(jù),DataFrame或Seriesright需要合并的右側(cè)數(shù)據(jù),DataFrame或Seriesleft_on表示左側(cè)數(shù)據(jù)進行連接的(鍵)列名,默認為Noneright_on表示右側(cè)數(shù)據(jù)進行連接的(鍵)列名,默認為Noneleft_indexboolean類型,默認為False。表示是否將左側(cè)數(shù)據(jù)中的索引作為連接主鍵right_indexboolean類型,默認為False。表示是否將右側(cè)數(shù)據(jù)中的索引作為連接主鍵on表示兩個數(shù)據(jù)合并的(鍵)列名必須一致,默認為Nonesortboolean類型,默認為False。表示是否對合并后的數(shù)據(jù)進行排序how數(shù)據(jù)的連接方式,left表示使用左側(cè)數(shù)據(jù)中的(鍵)列名進行連接,類似于SQL中的左外連接。其他三個屬性分別為right(右連接)、outer(外連接)以及inner(內(nèi)連接)默認為innervalidate字符類型,默認為None,可以設(shè)置為如下幾個屬性:“one_to_one”檢查合并(鍵)列名是否在左右數(shù)據(jù)集中都是唯一的。“one_to_many”檢查合并(鍵)列名在左數(shù)據(jù)集中是否唯一。“many_to_one”檢查合并(鍵)列名在右側(cè)數(shù)據(jù)集中是否唯一?!癿any_to_many”允許,但不會導致檢查。suffixestuple類型,默認為('_x','_y')。表示左、右列名稱的后綴pandas.merge(left,right,how='inner',on=None,left_on=None,right_on=None,left_index=False,right_index=False,sort=False,suffixes=('_x','_y'),copy=True,indicator=False,validate=None)左、右外、內(nèi)合并pandas.DataFrame.join(other,on=None,how='left',lsuffix='',rsuffix='',sort=False)參數(shù)名稱說明other表示需要連接的DataFrame、Series或者是包含多個DataFrame的列表on表示指定連接數(shù)據(jù)的列名,可以是列名或者是包含列名的列表或元組how指定連接方式,left(左連接)、right(右連接)、outer(外連接)以及inner(內(nèi)連接)默認為innerlsuffix指定左側(cè)重疊列名的后綴rsuffix指定右側(cè)重疊列名的后綴sortboolean類型,是否對合并后的數(shù)據(jù)進行排序沒有關(guān)聯(lián)相同(鍵)列名合并pandas.DataFbine_first(other)方法ABA1np.nanNoneB2A3B3數(shù)據(jù)AABA5B1A2NoneD3B4數(shù)據(jù)BABA1B1A2B2A3B3數(shù)據(jù)C去除重復數(shù)據(jù)pandas.dataFrame.drop_duplicates(subset=None,keep='first',inplace=False)參數(shù)名稱說明subset表示指定需要去重的列名,也可以是多個列名組成的列表。默認為None,表示全部列keep表示保存重復數(shù)據(jù)的哪一條數(shù)據(jù),first表示保留第一條、last表示保留最后一條、False表示重復項數(shù)據(jù)都不保留。默認為firstinplace表示是否在原數(shù)據(jù)中進行操作,默認為FalseMatplotlib模塊實現(xiàn)數(shù)據(jù)可視化主講人:基本用法1繪制常用圖表23D繪圖3基本用法pyplot子模塊的繪圖流程pyplot子模塊的常用語法安裝Matplotlibpyplot子模塊的繪圖流程函數(shù)名稱描述pyplot.figure()調(diào)用該函數(shù)可以創(chuàng)建一個空白的畫布。figure.add_subplot()調(diào)用該函數(shù)用于實現(xiàn)在畫布中添加子圖,可以指定子圖的行數(shù)、列數(shù)和圖表的編號。例如在add_subplot()函數(shù)中填寫221代表將畫布分割成2行2列,圖表畫在從左到右從上到下的第1塊pyplot.subplots()調(diào)用該函數(shù)用于實現(xiàn)分圖展示,就是在一個繪圖窗體中顯示多個圖表,例如在subplots()函數(shù)中填寫121代表在畫布中繪制1行2列的圖表1。pyplot.subplot2grid()調(diào)用該函數(shù)用于實現(xiàn)非等分畫布形式的圖形展示,通過設(shè)置subplot2grid()函數(shù)中rowspan和colspan參數(shù)可以讓子圖跨越固定網(wǎng)格布局的多個行和列,實現(xiàn)不同的子圖布局。創(chuàng)建畫布與添加子圖的函數(shù)函數(shù)名描述函數(shù)名描述pyplot.title()調(diào)用該函數(shù)用于設(shè)置圖表的標題文字,可以為其指定位置、顏色以及字體大小等參數(shù)pyplot.xticks()調(diào)用該函數(shù)用于設(shè)置當前圖表x軸的刻度或文本標簽pyplot.xlabel()調(diào)用該函數(shù)用于設(shè)置圖表中x軸的名稱,可以為其指定位置、顏色以及字體大小等參數(shù)pyplot.yticks()調(diào)用該函數(shù)用于設(shè)置當前圖表y軸的刻度或文本標簽pyplot.ylabel()調(diào)用該函數(shù)用于設(shè)置圖表中y軸的名稱,可以為其指定位置、顏色以及字體大小等參數(shù)pyplot.plot()調(diào)用該函數(shù)用于繪制圖表,此函數(shù)需要填寫繪制點的x與y坐標pyplot.xlim()調(diào)用該函數(shù)用于設(shè)置當前圖表x軸的范圍,該值為區(qū)間值,不可以是一個字符串pyplot.savafig()調(diào)用該函數(shù)用于保存繪制的圖表,可以為其指定圖表的分辨率、邊緣顏色等參數(shù)pyplot.ylim()調(diào)用該函數(shù)用于設(shè)置當前圖表y軸的范圍,該值為區(qū)間值,不可以是一個字符串pyplot.show()調(diào)用該函數(shù)用于顯示當前已經(jīng)繪制完成的圖表pyplot.legend()調(diào)用該函數(shù)用于設(shè)置當前圖表的圖例,可以為其指定圖例的大小、位置以及標簽繪制圖表常用的函數(shù)繪制常用圖表繪制條形圖1繪制折線圖2繪制散點圖3繪制餅圖4繪制箱形圖5多面板圖表6繪制條形圖參數(shù)名參數(shù)含義參數(shù)名參數(shù)含義xx軸的數(shù)據(jù),一般采用arange函數(shù)產(chǎn)生一個序列edgecolor條形邊框顏色heighty軸的數(shù)據(jù),也就是柱形圖的高度,一般就是我們需要展示的數(shù)據(jù)linewidth條形邊框的寬度width條形的寬度,可以設(shè)置0~1之間分浮點類型,默認為0.8alpha條形圖的透明度color條形圖的顏色matplotlib.pyplot.bar(x,height,width=0.8,bottom=None,*,align='center',data=None,**kwargs)實現(xiàn)效果繪制折線圖參數(shù)名參數(shù)含義參數(shù)名參數(shù)含義xx軸數(shù)據(jù),接受列表類型的數(shù)據(jù)marker設(shè)置折線點的類型yy軸數(shù)據(jù),接受列表類型的數(shù)據(jù)markerfacecolor設(shè)置折線點實心顏色linewidth繪制折線的寬度markersize設(shè)置折線點的大小color設(shè)置折線的顏色linestyle設(shè)置折線類型,默認為“-”matplotlib.pyplot.plot(*args,scalex=True,scaley=True,data=None,**kwargs)實現(xiàn)效果繪制散點圖參數(shù)名參數(shù)含義xx軸數(shù)據(jù),接受列表類型的數(shù)據(jù)yy軸數(shù)據(jù),接受列表類型的數(shù)據(jù)s設(shè)置點的大小,當該參數(shù)設(shè)置為列表數(shù)據(jù)時,表示設(shè)置每個點的大小c設(shè)置點的顏色或顏色列表,當該參數(shù)設(shè)置為列表數(shù)據(jù)時,表示設(shè)置每個點的顏色marker設(shè)置繪制點的類型matplotlib.pyplot.scatter(x,y,s=None,c=None,marker=None,cmap=None,norm=None,vmin=None,vmax=None,alpha=None,linewidths=None,verts=None,edgecolors=None,*,data=None,**kwargs)實現(xiàn)效果繪制餅圖參數(shù)名參數(shù)含義參數(shù)名參數(shù)含義x設(shè)置繪制餅圖的數(shù)據(jù),也就是餅圖中每個部分的大小shadow是否設(shè)置陰影explode設(shè)置餅圖凸出部分startangle起始角度,默認從0開始逆時針轉(zhuǎn)label設(shè)置餅圖各部分標簽文本pctdistance設(shè)置餅圖內(nèi)文本與圓心的距離labeldistance設(shè)置餅圖標簽文本距離圓心的位置,1.1表示1.1倍半徑colors設(shè)置餅圖內(nèi)各部分顏色autopct設(shè)置餅圖內(nèi)文本的顯示方式matplotlib.pyplot.pie(x,explode=None,labels=None,colors=None,autopct=None,pctdistance=0.6,shadow=False,labeldistance=1.1,startangle=None,radius=None,counterclock=True,wedgeprops=None,textprops=None,center=(0,0),frame=False,rotatelabels=False,*,data=None)實現(xiàn)效果繪制箱形圖最大值上四分位數(shù)最小值下四分位數(shù)中位數(shù)異常值參數(shù)名參數(shù)含義參數(shù)名參數(shù)含義x設(shè)置要繪制箱形圖的數(shù)據(jù)patch_artist設(shè)置是否填充箱體顏色notch設(shè)置箱形圖是否是凹口的形式顯示showcaps設(shè)置是否顯示最大值與最小值的橫線sym設(shè)置異常點的形狀showfliers設(shè)置是否顯示異常值vert設(shè)置箱形圖是橫向還是縱向boxprops設(shè)置箱體的屬性,如邊框色,填充色等positions設(shè)置箱形圖的位置medianprops設(shè)置中位數(shù)屬性,如線的顏色,粗細等widths設(shè)置箱形圖的寬度capprops設(shè)置最大值與最小值橫線屬性,如線的顏色,粗細等matplotlib.pyplot.boxplot(x,notch=None,sym=None,vert=None,whis=None,positions=None,widths=None,patch_artist=None,bootstrap=None,usermedians=None,conf_intervals=None,meanline=None,showmeans=None,showcaps=None,showbox=None,showfliers=None,boxprops=None,labels=None,flierprops=None,medianprops=None,meanprops=None,capprops=None,whiskerprops=None,manage_xticks=True,autorange=False,zorder=None,*,data=None)多面板圖表創(chuàng)建多個子圖添加子區(qū)域添加子圖3D繪圖3D線圖13D曲面圖23D條形圖3開發(fā)步驟①創(chuàng)建X、Y、Z三軸數(shù)據(jù)②figure()函數(shù)創(chuàng)建畫布③

Axes3D類轉(zhuǎn)換3D畫布④繪制、顯示、保存3D線圖實現(xiàn)效果3D曲面圖實現(xiàn)效果3D條形圖實現(xiàn)效果客戶價值分析隨著電商行業(yè)競爭越來越激烈,推廣費用也是越來越高,加之電商法的出臺,刷單沖銷量的運營思路已不再適應(yīng)企業(yè)需求,而應(yīng)將更多的思路應(yīng)轉(zhuǎn)向客戶,做好客戶運營才是企業(yè)生存的王道。

運營好客戶,我們首先就要了解客戶、分析客戶,找出哪些是重要保持客戶、哪些是發(fā)展客戶、哪些是潛在客戶,根據(jù)不同類別的客戶采取不同的營銷模式:如分類營銷、一對一多樣化營銷、個性化營銷等模式,從而使企業(yè)的利潤最大化。應(yīng)用場景:某淘寶店鋪客戶多,消費行為復雜,客戶價值很難人工評估。RFM模型重要保持客戶發(fā)展客戶潛在客戶系統(tǒng)設(shè)計系統(tǒng)結(jié)構(gòu)圖客戶價值分析獲取Excel數(shù)據(jù)數(shù)據(jù)抽取數(shù)據(jù)探索分析數(shù)據(jù)規(guī)約數(shù)據(jù)清洗數(shù)據(jù)轉(zhuǎn)換客戶聚類客戶價值分析獲取數(shù)據(jù)數(shù)據(jù)分析數(shù)據(jù)處理業(yè)務(wù)流程圖用戶數(shù)據(jù)是否缺失、異常抽取近兩年數(shù)據(jù)YN標準化處理客戶聚類客戶價值分析填充、刪除處理系統(tǒng)預覽客戶群0客戶群1客戶群2客戶群3755人273人560人2人系統(tǒng)預覽系統(tǒng)開發(fā)準備開發(fā)環(huán)境及工具

操作系統(tǒng):Windows7、Windows10

開發(fā)工具:Pycharm

第三方模塊

:pandas、numpy、matplotlib、sklearn項目文件結(jié)構(gòu)分析方法RFM模型聚類分析聚類算法RFM模型RFM模型最近消費時間間隔Recency消費頻率Frequency消費金額MonetaryRFM聚類分析

聚類類似于分類,不同的是聚類劃分的類是未知的,也就是說我們不知道應(yīng)該屬于哪類,而是通過一定的算法自動分類。而在實際應(yīng)用中,聚類就是將數(shù)據(jù)集中某些方面相似的數(shù)據(jù)進行分類組織的過程。應(yīng)用領(lǐng)域聚類分析主要應(yīng)用領(lǐng)域:商業(yè)生物保險行業(yè)因特網(wǎng)電子商務(wù)K-means聚類算法傳統(tǒng)的聚類算法包括五類:劃分方法層次方法基于密度方法基于網(wǎng)絡(luò)方法基于模型方法K-means聚類算法K-means聚類算法

k均值聚類是給定一個數(shù)據(jù)點集合和需要的聚類數(shù)目k,k由用戶指定,k均值算法根據(jù)某個距離函數(shù)反復把數(shù)據(jù)分入k個聚類中。01

創(chuàng)建k個點作為起始質(zhì)心,可以隨機選擇(位于數(shù)據(jù)邊界內(nèi))02

當任意一個點的簇分配結(jié)果發(fā)生改變時03

對數(shù)據(jù)集中每一個點04

對每個質(zhì)心05

計算質(zhì)心與數(shù)據(jù)點之間的距離06

將數(shù)據(jù)點分配到距其最近的簇07

對每一個簇,計算簇中所有點的均值并將均值作為質(zhì)心偽代碼K-means聚類算法終止條件可以是以下任意一個:沒有(或最小數(shù)目)對象被重新分配給不同的聚類。沒有(或最小數(shù)目)聚類中心再發(fā)生變化。誤差平方和局部最小。技術(shù)準備

Sklearn模塊1

K-means聚類2

Pandas模塊3Sklearn模塊

Sklearn模塊(全稱Scikit-learn)是Python的第三方模塊,它是機器學習領(lǐng)域當中知名的Python模塊之一,它對常用的機器學習算法進行了封裝,包括回歸(Regression)、降維(DimensionalityReduction)、分類(Classfication)和聚類(Clustering)四大機器學習算法。Sklearn具有以下特點:

簡單高效的數(shù)據(jù)挖掘和數(shù)據(jù)分析工具讓每個人能夠在復雜環(huán)境中重復使用Sklearn模塊是Scipy模塊的擴展,是建立在NumPy和Scipy基礎(chǔ)上的模塊Sklearn模塊

Sklearn模塊的安裝使用pip命令安裝Python版本為2.7以上、NumPy版本1.8以上、SciPy版本0.13.3以上。首先,安裝NumPy和SciPy,如果已經(jīng)安裝NumPy和SciPy,那么安裝scikit-learn可以在命令提示符下(cmd)使用安裝命令:pipinstallscikit-learn在Pycharm開發(fā)環(huán)境下安裝K-means聚類調(diào)用KMeans類

fromsklearn.clusterimportKMeans客戶價值分析系統(tǒng)主要是通過Scikit——learn的cluster模塊提供的Kmeans函數(shù)來處理K-means聚類問題的,首先調(diào)用Kmeans類。K-means聚類基本語法

kmodel=KMeans(n_clusters=8,init=’k-means++’,n_init=10,max_iter=300,tol=0.0001,precompute_distances=’auto’,verbose=0,random_state=None,copy_x=True,n_jobs=None,algorithm=’auto’)常用參數(shù)及說明參數(shù)說明n_clusters整型,默認值8,表示生成的聚類數(shù)init3個可選值分別為‘k-means++’、‘random’或者提供一個數(shù)組。默認值為'k-means++'n_init整型,表示算法的運行次數(shù),默認值為10max_iter整型,默認值300,表示每執(zhí)行一次k-means算法的最大迭代次數(shù)tolfloat類型,表示算法收斂的閾值,默認值為0.0001precompute_distances3個可選值分別為'auto'、True或者False。該參數(shù)用于提前計算好樣本之間的距離。默認值為'auto'verbose整型,默認值=0常用參數(shù)及說明參數(shù)說明random_state整型,表示隨機數(shù)生成器的種子。默認值為Nonen_jobs整型,表示指定計算所用的進程數(shù)。默認值為1屬性說明

cluster_centers_:返回ndarray。表示分類簇的均值向量

labels_:返回ndarray。表示每個樣本所屬的簇的標記

inertia_:返回ndarray。表示每個樣本距離它們各自最近簇的中心之和pandas模塊Pandas是Python的一個核心模塊,主要用于數(shù)據(jù)處理與數(shù)據(jù)分析,它提供了快速、靈活、明確的數(shù)據(jù)結(jié)構(gòu),能夠簡單、直觀地處理關(guān)系型、標記型數(shù)據(jù)。客戶價值分析數(shù)據(jù)抽取數(shù)據(jù)抽取

數(shù)據(jù)抽取是從數(shù)據(jù)源中抽取數(shù)據(jù)的過程。淘寶電商存在大量的歷史銷售數(shù)據(jù),我們從中抽取近兩年的數(shù)據(jù)2017年1月1日——2018年12月31日業(yè)務(wù)數(shù)據(jù)庫1業(yè)務(wù)數(shù)據(jù)庫2……業(yè)務(wù)數(shù)據(jù)庫n抽取數(shù)據(jù)倉庫數(shù)據(jù)探索分析數(shù)據(jù)探索分析數(shù)據(jù)探索分析主要分析與客戶價值RFM模型有關(guān)的數(shù)據(jù)是否存在數(shù)據(jù)缺失、數(shù)據(jù)異常的情況,分析出數(shù)據(jù)的規(guī)律。

主要使用:describe函數(shù)開發(fā)步驟①導入模塊pandas②使用pandas讀取Excel數(shù)據(jù)③使用describe函數(shù)統(tǒng)計數(shù)據(jù)④計算空值數(shù)(缺失數(shù)據(jù))⑤導出結(jié)果最終實現(xiàn)效果數(shù)據(jù)處理開發(fā)步驟①數(shù)據(jù)規(guī)約②數(shù)據(jù)清洗③數(shù)據(jù)轉(zhuǎn)換數(shù)據(jù)規(guī)約

數(shù)據(jù)規(guī)約是指在接近或保持原始數(shù)據(jù)完整性的同時將數(shù)據(jù)集規(guī)模減小,以提高數(shù)據(jù)處理的速度?!?8列買家會員名訂單付款時間買家實際支付金額數(shù)據(jù)采集時間編寫相關(guān)代碼aa=r'TB201812.xls'df=pd.DataFrame(pd.read_excel(aa))df1=df[['訂單付款時間','買家會員名','買家實際支付金額','數(shù)據(jù)采集時間']]指定Excel文件讀取Excel文件選取需要的數(shù)據(jù)數(shù)據(jù)清洗數(shù)據(jù)清洗通過前面的數(shù)據(jù)探索分析,我們發(fā)現(xiàn)在淘寶電商歷史銷售數(shù)據(jù)中存在一些缺失值,例如“訂單付款日期”為空、“買家實際支付金額”最小值為0,下面將這部分數(shù)據(jù)清理掉,關(guān)鍵代碼如下:#去除空值,訂單付款時間非空值才保留#去除買家實際支付金額為0的記錄df1=df1[df1['訂單付款時間'].notnull()&df1['買家實際支付金額']!=0]數(shù)據(jù)轉(zhuǎn)換數(shù)據(jù)轉(zhuǎn)換

數(shù)據(jù)轉(zhuǎn)換是將數(shù)據(jù)轉(zhuǎn)換成“適當?shù)摹备袷剑赃m應(yīng)數(shù)據(jù)分析和數(shù)據(jù)挖掘算法的需要。下面將清理后的數(shù)據(jù)進行標準化處理。最終實現(xiàn)效果客戶聚類客戶聚類

客戶聚類主要使用Python第三方模塊Sklearn模塊中提供的K-means聚類方法對客戶數(shù)據(jù)進行分類。根據(jù)業(yè)務(wù)需要,這里分為4類。開發(fā)步驟①導入數(shù)據(jù)②數(shù)據(jù)塞進模型③客戶聚類最終實現(xiàn)效果客戶價值分析客戶價值分析結(jié)果解析客戶價值分析結(jié)果解析常見問題與解決常見錯誤與解決1、缺少模塊導致程序運行錯誤2、模塊版本不適合導致程序運行錯誤常見錯誤與解決3、Excel文件打開時程序運行錯誤注意事項4、數(shù)據(jù)結(jié)果保存Excel文件時注意:index參數(shù),是否輸出索引安裝缺失的模塊1234安裝缺失的模塊在AvailablePackages窗口的搜索框中輸入模塊名稱,比如xlrd,模塊搜索到后勾選安裝復選框,然后單擊InstallPackage按鈕即可安裝該模塊。1234模塊安裝版本選擇在File菜單中選擇Settings打開AvailablePackages窗口,在該窗口中找到Specifyversion復選框,在下拉列表中選擇0.21.0版本123銷售收入分析與預測隨著電商行業(yè)的激烈競爭,電商平臺推出了各種數(shù)字營銷方案,付費廣告也是花樣繁多。那么電商投入這些廣告后,究竟能給企業(yè)增加多少收益?對銷售收入的影響究竟有多大?是否達到企業(yè)預期?那么,針對這些問題企業(yè)將如何處理,而不是憑直覺妄加猜測。

例如:M電商已投入了幾個月的廣告費,收益還不錯,本月打算多投入一些,那么老板讓你估算下多投入一些廣告費能給企業(yè)帶來多少收益,你該怎么辦?當然是用Python幫你分析。用Python結(jié)合數(shù)據(jù)分析方法對M電商的銷售收入進行分析與預測,探索以往廣告費和銷售收入的關(guān)系,然后通過預支廣告費預測未來銷售收入。

系統(tǒng)設(shè)計系統(tǒng)結(jié)構(gòu)圖銷售收入分析與預測獲取銷售數(shù)據(jù)獲取廣告費數(shù)據(jù)日期數(shù)據(jù)統(tǒng)計按月度統(tǒng)計銷售金額按月度統(tǒng)計廣告費支出金額散點圖分析銷售數(shù)據(jù)繪制擬合圖預測銷售收入獲取數(shù)據(jù)數(shù)據(jù)分析數(shù)據(jù)處理數(shù)據(jù)清洗系統(tǒng)業(yè)務(wù)流程用戶獲取銷售數(shù)據(jù)數(shù)據(jù)處理日期數(shù)據(jù)統(tǒng)計繪制擬合圖獲取廣告費用數(shù)據(jù)銷售分析與預測系統(tǒng)預覽線性擬合圖預測結(jié)果系統(tǒng)開發(fā)準備開發(fā)環(huán)境及工具

操作系統(tǒng):

開發(fā)工具:

第三方模塊

:pandas、numpy、matplotlib、sklearnPycharm、Python3.7Windows7、Windows10項目文件結(jié)構(gòu)分析方法線性回歸1最小二乘法2線性回歸要對樣本點進行線性擬合,求得使預測盡可能準確的函數(shù),這個過程就是線性回歸。線性回歸是對一個或多個自變量和因變量之間的關(guān)系進行建模的一種回歸分析方法,它包括一元線性回歸和多元線性回歸。一元線性回歸多元線性回歸當只有一個自變量和一個因變量,且二者的關(guān)系可用一條直線近似表示,稱為一元線性回歸。(研究因變量Y和一個自變量X之間的關(guān)系)當自變量有兩個或多個時,研究因變量Y和多個自變量1X,2X,…,nX之間的關(guān)系,則稱為多元線性回歸。線性回歸720000956800115500013800001797000220000034000006080100120150200300舉個例子朝向周邊設(shè)施裝修地理位置房價面積……3400000300線性回歸線性回歸公式y(tǒng)=bx+kYX最小二乘法線性回歸是數(shù)據(jù)挖掘中的基礎(chǔ)算法之一,線性回歸的思想其實就是解一組方程,得到回歸函數(shù),不過在出現(xiàn)誤差項之后,方程的解法就存在了改變,一般使用最小二乘法進行計算,所謂“二乘”就是平方的意思,最小二乘法也稱最小平方和,其目的是通過最小化誤差的平方和,使得預測值與真值無限接近。最小二乘法最小二乘法舉個例子最小二乘法斜率b和截距kxy乘積(x銷售收入y廣告費)x總和y總和x平方總和斜率

最小二乘法y值y=4.944876777x+77136.393496由此,計算出每個節(jié)點的y預測值y1=4.944876777*13985.51+77136.25423=146292.8778y2=4.944876777*6265.78+77136.25423=108119.7642y3=4.944876777*12116.45+77136.25423=137050.6065y4=4.944876777*15832.77+77136.25423=155427.3509y5=4.944876777*18064.53+77136.25423=166463.1291y6=4.944876777*57013.59+77136.25423=359061.4314y=bx+k最小二乘法散點圖回歸線廣告費60000Y軸銷售收入x軸廣告費預測銷售收入373828.9線性回歸模型線性回歸模型

線性回歸模型在Python第三方模塊sklearn模塊(全稱Scikit-learn模塊)下的linear_model模塊中。

①安裝②導入模塊③創(chuàng)建線性回歸模型常用參數(shù)及說明參數(shù)說明fit_intercept布爾型值,選擇是否需要計算截距,默認值True,如果中心化了的數(shù)據(jù)可以選擇Falsenormalize布爾型值,選擇是否需要標準化,默認值False,和參數(shù)fit_intercept有關(guān),當fit_intercept設(shè)置為False時,將忽略該參數(shù)。若為True,則回歸前對回歸量x進行歸一化處理,取均值相減,再除以L2范數(shù)(L2范數(shù)是指向量各元素的平方和然后開方)。copy_x布爾型值,選擇是否復制X數(shù)據(jù),默認值True,如果為False,則覆蓋x數(shù)據(jù)n_job整型,代表CPU工作效率的核數(shù),默認值1,-1表示跟CPU核數(shù)一致主要屬性參數(shù)說明coef_數(shù)組或形狀,表示線性回歸分析的回歸系數(shù)。(斜率w1,w2,w3,...,wn)intercept_數(shù)組,表示截距主要方法參數(shù)說明fit(x,y,sample_weight=None)擬合線性模型predict(x)使用線性模型進行預測score(x,y,sample_weight=None)返回預測的確定系數(shù)R^2Excel日期數(shù)據(jù)的處理按日期篩選數(shù)據(jù)1按日期顯示數(shù)據(jù)2按日期統(tǒng)計數(shù)據(jù)3按日期篩選數(shù)據(jù)實現(xiàn)按日期篩選數(shù)據(jù),在DataFrame對象中指定日期或日期區(qū)間即可。按年度獲取數(shù)據(jù)

importpandasaspdaa=r'TB2018.xls'df=pd.DataFrame(pd.read_excel(aa))df1=df[['訂單付款時間','買家會員名','聯(lián)系手機','買家實際支付金額']]df1=df1.set_index('訂單付款時間')#將date設(shè)置為indexprint(df1['2018'])#獲取2019年的數(shù)據(jù)按日期篩選數(shù)據(jù)獲取2017年和2018年的數(shù)據(jù)print(df1['2017':'2018'])#獲取2017至2018年的數(shù)據(jù)獲取某月的數(shù)據(jù)print(df1['2018-11'])#獲取某月的數(shù)據(jù)獲取具體某天的數(shù)據(jù)print(df1['2018-11-06':'2018-11-06'])獲取某個區(qū)間的數(shù)據(jù)print(df1['2018-11-01':'2018-11-15'])按日期顯示數(shù)據(jù)按月顯示數(shù)據(jù)df2=df1.to_period('M')按季度顯示數(shù)據(jù)df2=df1.to_period('Q')按年度顯示數(shù)據(jù)df2=df1.to_period('Q')按日期統(tǒng)計數(shù)據(jù)按周統(tǒng)計數(shù)據(jù)df1.resample('w').sum()按月統(tǒng)計數(shù)據(jù)df1.resample(‘M').sum()按季度統(tǒng)計數(shù)據(jù)df1.resample('Q').sum()MSQS按年統(tǒng)計數(shù)據(jù)df1.resample('AS').sum()A按日期統(tǒng)計并顯示數(shù)據(jù)按年統(tǒng)計并顯示數(shù)據(jù)df1.resample('AS').sum().to_period('A')按季度統(tǒng)計并顯示數(shù)據(jù)df1.resample('Q').sum().to_period('Q')按月統(tǒng)計并顯示數(shù)據(jù)df1.resample('M').sum().to_period('M')銷售收入分析與預測開發(fā)步驟①數(shù)據(jù)處理②統(tǒng)計日期數(shù)據(jù)③繪制擬合圖④預測銷售收入數(shù)據(jù)處理銷售收入數(shù)據(jù)廣告支出數(shù)據(jù)Y軸X軸數(shù)據(jù)處理相關(guān)代碼:aa=r'./data/JDdata.xls'bb=r'./data/JDcar.xls'dfaa=pd.DataFrame(pd.read_excel(aa))dfbb=pd.DataFrame(pd.read_excel(bb))df1=dfaa[['業(yè)務(wù)日期','金額']]df2=dfbb[['投放日期','支出']]數(shù)據(jù)處理數(shù)據(jù)顯示不全數(shù)據(jù)輸出時列名不對齊怎么辦呢?#顯示所有列pd.set_option('display.max_columns',None)#設(shè)置寬度pd.set_option('display.width',1000)#解決數(shù)據(jù)輸出時列名不對齊的問題pd.set_option('display.unicode.ambiguous_as_wide',True)pd.set_option('display.unicode.east_asian_width',True)補充一點日期數(shù)據(jù)統(tǒng)計并顯示resample方法to_period方法根據(jù)歷史銷售數(shù)據(jù)繪制擬合圖預測銷售收入Y預測值=X值*斜率+截距

X值:已知的7月份要投入的廣告費斜率和截距:clf=linear_model.LinearRegression(fit_intercept=True,normalize=False)k=clf.coef_#獲取回歸系數(shù)(斜率w1,w2,w3,...,wn)b=ercept_#獲取截距w0公式:二手房數(shù)據(jù)分析預測系統(tǒng)某城市各區(qū)二手房均價分析1需求分析某城市各區(qū)二手房數(shù)量所占比例2全市二手房裝修程度分析3熱門戶型均價分析4二手房售價預測5系統(tǒng)設(shè)計功能結(jié)構(gòu)圖業(yè)務(wù)流程圖系統(tǒng)預覽系統(tǒng)開發(fā)必備開發(fā)工具準備

操作系統(tǒng):Windows7、Windows8、Windows10。

開發(fā)工具:PyCharm內(nèi)置模塊:sys

第三方模塊:PyQt5、pyqt5-tools、matplotlib、sklearn、

pandas文件夾組織結(jié)構(gòu)技術(shù)準備scikit-learn模塊概述1加載datasets子模塊中的數(shù)據(jù)集2支持向量回歸對象3scikit-learn庫概述分類回歸聚類降維選型預處理/加載datasets子模塊中的數(shù)據(jù)集本地加載數(shù)據(jù):sklearn.datasets.load_<name>1遠程加載數(shù)據(jù):sklearn.datasets.fetch_<name>2構(gòu)造數(shù)據(jù)集:sklearn.datasets.make_<name>3常用數(shù)據(jù)集加載數(shù)據(jù)函數(shù)數(shù)據(jù)集名稱應(yīng)用任務(wù)類型datasets.load_iris()鳶尾花數(shù)據(jù)集用于分類、聚類任務(wù)的數(shù)據(jù)集datasets.load_breast_cancer()乳腺癌數(shù)據(jù)集用于分類、聚類任務(wù)的數(shù)據(jù)集datasets.load_digits()手寫數(shù)字數(shù)據(jù)集用于分類任務(wù)的數(shù)據(jù)集datasets.load_diabetes()糖尿病數(shù)據(jù)集用于分類任務(wù)的數(shù)據(jù)集datasets.load_boston()波士頓房價數(shù)據(jù)集用于回歸任務(wù)的數(shù)據(jù)集datasets.load_linnerud()體能訓練數(shù)據(jù)集用于多變量回歸任務(wù)的數(shù)據(jù)集本地數(shù)據(jù)集支持向量回歸對象LinearSVR()對象sklearn.svm.LinearSVR(epsilon=0.0,tol=0.0001,C=1.0,loss='epsilon_insensitive',fit_intercept=True,intercept_scaling=1.0,dual=True,verbose=0,random_state=None,max_iter=1000)fromsklearn.svmimportLinearSVR參數(shù)名稱說明參數(shù)名稱epsilonfloat類型值,loss參數(shù)中的ε,默認值為0.1fit_interceptboolean類型值,是否計算此模型的截距。如果設(shè)置為false,則不會在計算中使用截距(即數(shù)據(jù)預計已經(jīng)居中)。默認為Truetolfloat類型值,終止迭代的標準值,默認值為0.0001verboseint類型值,是否開啟verbose輸出,默認為TrueCfloat類型值,罰項參數(shù),該參數(shù)越大,使用的正則化越少,默認為1.0dualboolean類型值,選擇算法以解決對偶或原始優(yōu)化問題。設(shè)置為True時將解決對偶問題,設(shè)置為False時解決原始問題,默認為Truelossstring類型值,損失函數(shù),該參數(shù)有兩種選項:(1)epsilon_insensitive:損失函數(shù)為Lε(標準SVR)(2)squared_epsilon_insensitive:損失函數(shù)為默認值為epsilon_insensitiveintercept_scalingfloat類型值,當fit_intercept為True時,實例向量x變?yōu)閇x,ercept_scaling]。此時相當于添加了一個特征,該特征將對所有實例都是常數(shù)值。(1)此時截距變成intercept_scaling*特征的權(quán)重wε(2)此時該特征值也參與了罰項的計算random_stateint類型值,隨機數(shù)生成器的種子,用于在混洗數(shù)據(jù)時使用。如果是整數(shù),則是隨機數(shù)生成器使用的種子;如果是RandomState實例,則是隨機數(shù)生成器;如果為None,隨機數(shù)生成器所使用的RandomState實例np.random。max_iterint類型值,要運行的最大迭代次數(shù)。默認為1000coef_賦予特征的權(quán)重,返回array數(shù)據(jù)類型intercept_決策函數(shù)中的常量,返回array數(shù)據(jù)類型LinearSVR()對象常用參數(shù)圖表工具模塊①創(chuàng)建模塊文件②繪制餅圖函數(shù)③

繪制折線圖函數(shù)④繪制條形圖函數(shù)圖表工具模塊繪制餅圖繪制折線圖繪制條形圖繪制各區(qū)二手房均價的條形圖1繪制全市二手房裝修程度的條形圖2繪制熱門戶型均價的條形圖3繪制條形圖二手房數(shù)據(jù)分析清洗數(shù)據(jù)清洗數(shù)據(jù)Unnamed:0小區(qū)名字總價戶型建筑面積單價朝向樓層裝修區(qū)域0中天北灣新城89萬2室2廳1衛(wèi)89平米10000元/平米南北低層毛坯高新1樺林苑99.8萬3室2廳1衛(wèi)143平米6979元/平米南北中層毛坯凈月2嘉柏灣32萬1室1廳1

溫馨提示

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

評論

0/150

提交評論