Python數(shù)據(jù)分析與應(yīng)用(第2版)全書電子教案完整版課件_第1頁(yè)
Python數(shù)據(jù)分析與應(yīng)用(第2版)全書電子教案完整版課件_第2頁(yè)
Python數(shù)據(jù)分析與應(yīng)用(第2版)全書電子教案完整版課件_第3頁(yè)
Python數(shù)據(jù)分析與應(yīng)用(第2版)全書電子教案完整版課件_第4頁(yè)
Python數(shù)據(jù)分析與應(yīng)用(第2版)全書電子教案完整版課件_第5頁(yè)
已閱讀5頁(yè),還剩441頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1熟悉Python數(shù)據(jù)分析的工具目錄認(rèn)識(shí)數(shù)據(jù)分析2安裝Python的Anaconda發(fā)行版3掌握J(rèn)upyter Notebook常用功能4數(shù)據(jù)分析是指用適當(dāng)?shù)姆治龇椒▽?duì)收集來(lái)的大量數(shù)據(jù)進(jìn)行分析,提取有用信息和形成結(jié)論,對(duì)數(shù)據(jù)加以詳細(xì)研究和概括總結(jié)的過(guò)程。隨著計(jì)算機(jī)技術(shù)的全面發(fā)展,企業(yè)生產(chǎn)、收集、存儲(chǔ)和處理數(shù)據(jù)的能力大大提高,數(shù)據(jù)量與日俱增。而在現(xiàn)實(shí)生活中,需要將這些繁多、復(fù)雜的數(shù)據(jù)通過(guò)統(tǒng)計(jì)分析進(jìn)行提煉,以此研究出數(shù)據(jù)的發(fā)展規(guī)律,進(jìn)而幫助企業(yè)管理層做出決策。數(shù)據(jù)分析的概念廣義的數(shù)據(jù)分析包括狹義數(shù)據(jù)分析和數(shù)據(jù)挖掘。狹義數(shù)據(jù)分析是指根據(jù)分析目的,采用對(duì)比分析、分組分析、交叉分析和回歸分析等分析方法,

2、對(duì)收集的數(shù)據(jù)進(jìn)行處理與分析,提取有價(jià)值的信息,發(fā)揮數(shù)據(jù)的作用,得到一個(gè)特征統(tǒng)計(jì)量結(jié)果的過(guò)程。數(shù)據(jù)分析的概念數(shù)據(jù)分析的流程 數(shù)據(jù)分析已經(jīng)逐漸演化為一種解決問(wèn)題的過(guò)程,甚至是一種方法論。雖然每個(gè)公司都會(huì)根據(jù)自身需求和目標(biāo)創(chuàng)建最適合的數(shù)據(jù)分析流程,但是數(shù)據(jù)分析的核心步驟是一致的。需求分析一詞來(lái)源于產(chǎn)品設(shè)計(jì),主要是指從用戶提出的需求出發(fā),挖掘用戶內(nèi)心的真實(shí)意圖,并轉(zhuǎn)化為產(chǎn)品需求的過(guò)程。產(chǎn)品設(shè)計(jì)的第一步就是需求分析,也是最關(guān)鍵的一步,因?yàn)樾枨蠓治鰶Q定了產(chǎn)品方向。錯(cuò)誤的需求分析可能導(dǎo)致產(chǎn)品在實(shí)現(xiàn)過(guò)程中走入錯(cuò)誤方向,甚至對(duì)企業(yè)造成損失。數(shù)據(jù)分析中的需求分析是數(shù)據(jù)分析環(huán)節(jié)的第一步,也是非常重要的一步,決定了后

3、續(xù)的分析方向和方法。數(shù)據(jù)分析中的需求分析的主要內(nèi)容是,根據(jù)業(yè)務(wù)、生產(chǎn)和財(cái)務(wù)等部門的需要,結(jié)合現(xiàn)有的數(shù)據(jù)情況,提出數(shù)據(jù)分析需求的整體分析方向、分析內(nèi)容,最終和需求方達(dá)成一致意見(jiàn)。數(shù)據(jù)分析的流程1.需求分析數(shù)據(jù)獲取是數(shù)據(jù)分析工作的基礎(chǔ),是指根據(jù)需求分析的結(jié)果提取、收集數(shù)據(jù)。數(shù)據(jù)獲取主要有兩種方式:網(wǎng)絡(luò)數(shù)據(jù)與本地?cái)?shù)據(jù)。網(wǎng)絡(luò)數(shù)據(jù)是指存儲(chǔ)在互聯(lián)網(wǎng)中的各類視頻、圖片、語(yǔ)音和文字等信息。本地?cái)?shù)據(jù)則是指存儲(chǔ)在本地?cái)?shù)據(jù)庫(kù)中的生產(chǎn)、營(yíng)銷和財(cái)務(wù)等系統(tǒng)的數(shù)據(jù)。本地?cái)?shù)據(jù)按照數(shù)據(jù)時(shí)間又可以劃分為兩部分,分別是歷史數(shù)據(jù)與實(shí)時(shí)數(shù)據(jù)。歷史數(shù)據(jù)是指系統(tǒng)在運(yùn)行過(guò)程中遺存下來(lái)的數(shù)據(jù),其數(shù)據(jù)量隨系統(tǒng)運(yùn)行時(shí)間的增加而增長(zhǎng);實(shí)時(shí)數(shù)據(jù)是指最

4、近一個(gè)單位時(shí)間周期(月、周、日、小時(shí)等)內(nèi)產(chǎn)生的數(shù)據(jù)。在數(shù)據(jù)分析過(guò)程中,具體使用哪種數(shù)據(jù)獲取方式,需要依據(jù)需求分析的結(jié)果而定。數(shù)據(jù)分析的流程2. 數(shù)據(jù)獲取數(shù)據(jù)預(yù)處理是指對(duì)數(shù)據(jù)進(jìn)行數(shù)據(jù)合并、數(shù)據(jù)清洗、數(shù)據(jù)標(biāo)準(zhǔn)化和數(shù)據(jù)變換,并直接用于分析建模的這一過(guò)程的總稱。其中,數(shù)據(jù)合并可以將多張互相關(guān)聯(lián)的表格合并為一張;數(shù)據(jù)清洗可以去除重復(fù)、缺失、異常、不一致的數(shù)據(jù);數(shù)據(jù)標(biāo)準(zhǔn)化可以去除特征間的量綱差異;數(shù)據(jù)變換則可以通過(guò)離散化、啞變量處理等技術(shù)滿足后期分析與建模的數(shù)據(jù)要求。在數(shù)據(jù)分析的過(guò)程中,數(shù)據(jù)預(yù)處理的各個(gè)過(guò)程互相交叉,并沒(méi)有明確的先后順序。數(shù)據(jù)分析的流程3. 數(shù)據(jù)預(yù)處理分析與建模是指通過(guò)對(duì)比分析、分組分析

5、、交叉分析、回歸分析等分析方法,以及聚類模型、分類模型、關(guān)聯(lián)規(guī)則、智能推薦等模型與算法,發(fā)現(xiàn)數(shù)據(jù)中有價(jià)值的信息,并得出結(jié)論的過(guò)程。在數(shù)據(jù)分析過(guò)程中,具體使用哪種數(shù)據(jù)獲取方式,需要依據(jù)需求分析的結(jié)果而定。分析與建模的方法按照目標(biāo)不同可以分為幾大類。如果分析目標(biāo)是描述客戶行為模式的,那么可以采用描述型數(shù)據(jù)分析方法,同時(shí)還可以考慮關(guān)聯(lián)規(guī)則、序列規(guī)則和聚類模型等。如果分析目標(biāo)是量化未來(lái)一段時(shí)間內(nèi)某個(gè)事件發(fā)生概率的,那么可以使用兩大預(yù)測(cè)分析模型,即分類預(yù)測(cè)模型和回歸預(yù)測(cè)模型。在常見(jiàn)的分類預(yù)測(cè)模型中,目標(biāo)特征通常為二元數(shù)據(jù),如欺詐與否、流失與否、信用好壞等。在回歸預(yù)測(cè)模型中,目標(biāo)特征通常為連續(xù)型數(shù)據(jù),常見(jiàn)

6、的有股票價(jià)格預(yù)測(cè)等。數(shù)據(jù)分析的流程4. 分析與建模模型評(píng)價(jià)是指對(duì)于已經(jīng)建立的一個(gè)或多個(gè)模型,根據(jù)其模型的類別,使用不同的指標(biāo)評(píng)價(jià)模型性能優(yōu)劣的過(guò)程。常用的聚類模型評(píng)價(jià)指標(biāo)有ARI評(píng)價(jià)法(蘭德系數(shù))、AMI評(píng)價(jià)法(互信息)、V-measure評(píng)分、FMI評(píng)價(jià)法和輪廓系數(shù)等。常用的分類模型評(píng)價(jià)指標(biāo)有準(zhǔn)確率(Accuracy)、精確率(Precision)、召回率(Recall)、F1值(F1 Value)、ROC和AUC等。常用的回歸模型評(píng)價(jià)指標(biāo)有平均絕對(duì)誤差、均方誤差、中值絕對(duì)誤差和可解釋方差值等。模型優(yōu)化則是指模型性能在經(jīng)過(guò)模型評(píng)價(jià)后已經(jīng)達(dá)到了要求,但在實(shí)際生產(chǎn)環(huán)境應(yīng)用過(guò)程中,發(fā)現(xiàn)模型的性能并

7、不理想,繼而對(duì)模型進(jìn)行重構(gòu)與優(yōu)化的過(guò)程。多數(shù)情況下,模型優(yōu)化和分析與建模的過(guò)程基本一致。數(shù)據(jù)分析的流程5. 模型評(píng)價(jià)與優(yōu)化部署是指將數(shù)據(jù)分析結(jié)果與結(jié)論應(yīng)用至實(shí)際生產(chǎn)系統(tǒng)的過(guò)程。根據(jù)需求的不同,部署階段可以是一份包含了現(xiàn)狀具體整改措施的數(shù)據(jù)分析報(bào)告,也可以是將模型部署在整個(gè)生產(chǎn)系統(tǒng)的解決方案。在多數(shù)項(xiàng)目中,數(shù)據(jù)分析師提供的是一份數(shù)據(jù)分析報(bào)告或一套解決方案,實(shí)際執(zhí)行與部署的是需求方。數(shù)據(jù)分析的流程6. 部署 企業(yè)使用數(shù)據(jù)分析解決不同的問(wèn)題,實(shí)際應(yīng)用的數(shù)據(jù)分析場(chǎng)景主要分為客戶分析、營(yíng)銷分析、社交媒體分析、網(wǎng)絡(luò)安全、設(shè)備管理、交通物流分析和欺詐行為檢測(cè)7類??蛻舴治鲋饕歉鶕?jù)客戶的基本數(shù)據(jù)信息進(jìn)行商業(yè)

8、行為分析,首先界定目標(biāo)客戶,根據(jù)客戶的需求、目標(biāo)客戶的性質(zhì)、所處行業(yè)的特征和客戶的經(jīng)濟(jì)狀況等基本信息,使用統(tǒng)計(jì)分析方法和預(yù)測(cè)驗(yàn)證法分析目標(biāo)客戶,提高銷售效率。其次了解客戶的采購(gòu)過(guò)程,根據(jù)客戶采購(gòu)類型、采購(gòu)性質(zhì)進(jìn)行分類分析,制定不同的營(yíng)銷策略。根據(jù)已有的客戶特征進(jìn)行客戶特征分析、客戶忠誠(chéng)度分析、客戶注意力分析、客戶營(yíng)銷分析和客戶收益分析。通過(guò)有效的客戶分析能夠掌握客戶的具體行為特征,將客戶細(xì)分,使得運(yùn)營(yíng)策略達(dá)到最優(yōu),提升企業(yè)整體效益等。了解數(shù)據(jù)分析應(yīng)用場(chǎng)景1.客戶分析(Customer Analytics)營(yíng)銷分析囊括了產(chǎn)品分析、價(jià)格分析、渠道分析、廣告與促銷分析這4類分析。產(chǎn)品分析主要是競(jìng)爭(zhēng)產(chǎn)

9、品分析,通過(guò)對(duì)競(jìng)爭(zhēng)產(chǎn)品的分析制定自身產(chǎn)品策略。價(jià)格分析又可以分為成本分析和售價(jià)分析。成本分析的目的是降低不必要的成本;售價(jià)分析的目的是制定符合市場(chǎng)的價(jià)格。渠道分析是指對(duì)產(chǎn)品的銷售渠道進(jìn)行分析,確定最優(yōu)的渠道配比。廣告與促銷分析則能夠結(jié)合客戶分析,實(shí)現(xiàn)銷量的提升、利潤(rùn)的增加。了解數(shù)據(jù)分析應(yīng)用場(chǎng)景2. 營(yíng)銷分析(Sales and Marketing Analytics)社交媒體分析是以不同的社交媒體渠道生成的內(nèi)容為基礎(chǔ),實(shí)現(xiàn)不同社交媒體的用戶分析、訪問(wèn)分析和互動(dòng)分析等。用戶分析主要根據(jù)用戶注冊(cè)信息、登錄平臺(tái)的時(shí)間點(diǎn)和平時(shí)發(fā)表的內(nèi)容等用戶數(shù)據(jù),分析用戶個(gè)人畫像和行為特征。訪問(wèn)分析則是通過(guò)用戶平時(shí)訪

10、問(wèn)的內(nèi)容分析用戶的興趣愛(ài)好,進(jìn)而分析潛在的商業(yè)價(jià)值?;?dòng)分析根據(jù)互相關(guān)注對(duì)象的行為預(yù)測(cè)該對(duì)象未來(lái)的某些行為特征。社交媒體分析還能為情感和輿情監(jiān)督提供豐富的資料。了解數(shù)據(jù)分析應(yīng)用場(chǎng)景3. 社交媒體分析(Social Media Analytics)大規(guī)模網(wǎng)絡(luò)安全事件的發(fā)生,例如,2017年5月席卷全球的WannaCry病毒,讓企業(yè)意識(shí)到網(wǎng)絡(luò)攻擊發(fā)生時(shí)預(yù)先快速識(shí)別的重要性。傳統(tǒng)的網(wǎng)絡(luò)安全主要依靠靜態(tài)防御,處理病毒的主要流程是發(fā)現(xiàn)威脅、分析威脅和處理威脅,這種情況下,往往只在威脅發(fā)生以后系統(tǒng)才能做出反應(yīng)。新型的病毒防御系統(tǒng)可使用數(shù)據(jù)分析技術(shù),建立潛在攻擊識(shí)別分析模型,監(jiān)測(cè)大量網(wǎng)絡(luò)活動(dòng)數(shù)據(jù)和相應(yīng)的訪問(wèn)

11、行為,識(shí)別可能進(jìn)行入侵的可疑模式,做到未雨綢繆。了解數(shù)據(jù)分析應(yīng)用場(chǎng)景4. 網(wǎng)絡(luò)安全(Cyber Security)設(shè)備管理同樣是企業(yè)關(guān)注的重點(diǎn)。設(shè)備維修一般采用標(biāo)準(zhǔn)修理法、定期修理法和檢查后修理法等方法。其中,標(biāo)準(zhǔn)修理法可能會(huì)造成設(shè)備過(guò)剩修理,修理費(fèi)用高;雖然檢查后修理法解決了修理費(fèi)用成本問(wèn)題,但是修理前的準(zhǔn)備工作繁多,設(shè)備的停歇時(shí)間過(guò)長(zhǎng)。目前企業(yè)能夠通過(guò)物聯(lián)網(wǎng)技術(shù)收集和分析設(shè)備上的數(shù)據(jù)流,包括連續(xù)用電、零部件溫度、環(huán)境濕度和污染物顆粒等多種潛在特征,建立設(shè)備管理模型,從而預(yù)測(cè)設(shè)備故障,合理安排預(yù)防性的維護(hù),以確保設(shè)備正常工作,降低因設(shè)備故障帶來(lái)的安全風(fēng)險(xiǎn)。了解數(shù)據(jù)分析應(yīng)用場(chǎng)景5. 設(shè)備管理(

12、Plant and Facility Management)物流是物品從供應(yīng)地向接收地的實(shí)體流動(dòng),是將運(yùn)輸、儲(chǔ)存、裝卸搬運(yùn)、包裝、流通加工、配送和信息處理等功能有機(jī)結(jié)合起來(lái)從而實(shí)現(xiàn)用戶要求的過(guò)程。用戶可以通過(guò)業(yè)務(wù)系統(tǒng)和GPS定位系統(tǒng)獲得數(shù)據(jù),使用數(shù)據(jù)構(gòu)建交通狀況預(yù)測(cè)分析模型,有效預(yù)測(cè)實(shí)時(shí)路況、物流狀況、車流量、客流量和貨物吞吐量,進(jìn)而提前補(bǔ)貨,制定庫(kù)存管理策略。了解數(shù)據(jù)分析應(yīng)用場(chǎng)景6. 交通物流分析(Transport and Logistics Analytics)身份信息泄露及盜用事件逐年增長(zhǎng),隨之而來(lái)的是欺詐行為和交易的增多。公安機(jī)關(guān)、各大金融機(jī)構(gòu)、電信部門可利用用戶基本信息、用戶交易信

13、息和用戶通話短信信息等數(shù)據(jù),識(shí)別可能發(fā)生的潛在欺詐交易,做到提前預(yù)防、未雨綢繆。以大型金融機(jī)構(gòu)為例,通過(guò)分類模型分析方法對(duì)非法集資和洗錢的邏輯路徑進(jìn)行分析,找到其行為特征。聚類模型分析方法可以分析相似價(jià)格的運(yùn)動(dòng)模式。例如,對(duì)股票進(jìn)行聚類,可能發(fā)現(xiàn)關(guān)聯(lián)交易及內(nèi)幕交易的可疑信息。關(guān)聯(lián)規(guī)則分析方法可以監(jiān)控多個(gè)用戶的關(guān)聯(lián)交易行為,為發(fā)現(xiàn)跨賬號(hào)協(xié)同的金融詐騙行為提供依據(jù)。了解數(shù)據(jù)分析應(yīng)用場(chǎng)景7. 欺詐行為檢測(cè)(Fraud Detection)1熟悉Python數(shù)據(jù)分析的工具目錄認(rèn)識(shí)數(shù)據(jù)分析2安裝Python的Anaconda發(fā)行版3掌握J(rèn)upyter Notebook常用功能4目前主流的數(shù)據(jù)分析語(yǔ)言主要

14、有Python、R、MATLAB這3種。其中,Python具有豐富和強(qiáng)大的庫(kù),同時(shí)Python常被稱為膠水語(yǔ)言,能夠?qū)⑹褂闷渌Z(yǔ)言制作的各種模塊(尤其是C/C+)輕松地連接在一起,是一門更易學(xué)、更嚴(yán)謹(jǐn)?shù)某绦蛟O(shè)計(jì)語(yǔ)言。R語(yǔ)言通常用于統(tǒng)計(jì)分析、繪圖。R是屬于GNU系統(tǒng)的一個(gè)自由、免費(fèi)、源代碼開(kāi)放的軟件。MATLAB的作用是進(jìn)行矩陣運(yùn)算、繪制函數(shù)與數(shù)據(jù)、實(shí)現(xiàn)算法、創(chuàng)建用戶界面和連接其他編程語(yǔ)言的程序等,其主要應(yīng)用于工程計(jì)算、控制設(shè)計(jì)、信號(hào)處理與通信、圖像處理、信號(hào)檢測(cè)、金融建模設(shè)計(jì)與分析等領(lǐng)域。了解數(shù)據(jù)分析常用工具 Python、R、MATLAB這3種語(yǔ)言均可以進(jìn)行數(shù)據(jù)分析。表1 1從語(yǔ)言學(xué)習(xí)難易程

15、度、使用場(chǎng)景、第三方支持、流行領(lǐng)域和軟件成本5方面比較了Python、R、MATLAB這3種數(shù)據(jù)分析工具。了解數(shù)據(jù)分析常用工具PythonRMATLAB語(yǔ)言學(xué)習(xí)難易程度接口統(tǒng)一,學(xué)習(xí)曲線平緩接口眾多,學(xué)習(xí)曲線陡峭自由度大,學(xué)習(xí)曲線較為平緩使用場(chǎng)景數(shù)據(jù)分析、機(jī)器學(xué)習(xí)、矩陣運(yùn)算、科學(xué)數(shù)據(jù)可視化、數(shù)字圖像處理等統(tǒng)計(jì)分析、機(jī)器學(xué)習(xí)、科學(xué)數(shù)據(jù)可視化等矩陣運(yùn)算、數(shù)值分析、科學(xué)數(shù)據(jù)可視化、機(jī)器學(xué)習(xí)、符號(hào)計(jì)算、數(shù)字圖像處理、數(shù)字信號(hào)處理等第三方支持擁有大量的第三方庫(kù),能夠簡(jiǎn)便地調(diào)用C、C+、Fortran、Java等其他程序語(yǔ)言擁有大量的包,能夠調(diào)用C、C+、Fortran、Java等其他程序語(yǔ)言擁有大量專業(yè)

16、的工具箱,在新版本中加入了對(duì)C、C+、Java的支持流行領(lǐng)域工業(yè)界學(xué)術(shù)界工業(yè)界學(xué)術(shù)界工業(yè)界學(xué)術(shù)界軟件成本開(kāi)源免費(fèi)開(kāi)源免費(fèi)商業(yè)收費(fèi)語(yǔ)法簡(jiǎn)單精練。對(duì)于初學(xué)者來(lái)說(shuō),比起其他編程語(yǔ)言,Python更容易上手。含有大量功能強(qiáng)大的庫(kù)。結(jié)合在編程方面的強(qiáng)大實(shí)力,可以只使用Python這一種語(yǔ)言去構(gòu)建以數(shù)據(jù)為中心的應(yīng)用程序。功能強(qiáng)大。從特性觀點(diǎn)來(lái)看,Python是一個(gè)混合體。豐富的工具集使Python介于傳統(tǒng)的腳本語(yǔ)言和系統(tǒng)語(yǔ)言之間。Python不僅具備所有腳本語(yǔ)言簡(jiǎn)單和易用的特點(diǎn),而且提供了編譯語(yǔ)言所具有的高級(jí)軟件工程工具。研究、原型構(gòu)建和構(gòu)建生產(chǎn)系統(tǒng)。研究人員和工程技術(shù)人員使用同一種編程工具,會(huì)給企業(yè)帶來(lái)

17、非常顯著的組織效益,并降低企業(yè)的運(yùn)營(yíng)成本。Python是一門膠水語(yǔ)言。Python程序能夠以多種方式輕易地與其他語(yǔ)言的組件“粘接”在一起。例如,Python的C語(yǔ)言API可以幫助Python程序靈活地調(diào)用C程序,這意味著用戶可以根據(jù)需要給Python程序添加功能或在其他環(huán)境系統(tǒng)中使用Python。了解Python數(shù)據(jù)分析的優(yōu)勢(shì)使用Python進(jìn)行數(shù)據(jù)分析時(shí)所用到的類庫(kù)主要有NumPy、SciPy、pandas、Matplotlib、seaborn、pyecharts、scikit-learn等。NumPy是Numerical Python的簡(jiǎn)稱,是一個(gè)Python科學(xué)計(jì)算的基礎(chǔ)包。NumPy主

18、要提供了以下內(nèi)容。快速高效的多維數(shù)組對(duì)象ndarray。對(duì)數(shù)組執(zhí)行元素級(jí)計(jì)算和直接對(duì)數(shù)組執(zhí)行數(shù)學(xué)運(yùn)算的函數(shù)。讀/寫硬盤上基于數(shù)組的數(shù)據(jù)集的工具。線性代數(shù)運(yùn)算、傅里葉變換和隨機(jī)數(shù)生成的功能。將C、C+、Fortran代碼集成到Python的工具。了解Python數(shù)據(jù)分析常用類庫(kù)1. NumPy除了為Python提供快速的數(shù)組處理能力外,NumPy在數(shù)據(jù)分析方面還有另外一個(gè)主要作用,即作為算法之間傳遞數(shù)據(jù)的容器。對(duì)于數(shù)值型數(shù)據(jù),使用NumPy數(shù)組存儲(chǔ)和處理數(shù)據(jù)要比使用內(nèi)置的Python數(shù)據(jù)結(jié)構(gòu)高效得多。此外,由低級(jí)語(yǔ)言(如C和Fortran)編寫的庫(kù)可以直接操作NumPy數(shù)組中數(shù)據(jù),無(wú)須進(jìn)行任何數(shù)

19、據(jù)復(fù)制工作。了解Python數(shù)據(jù)分析常用類庫(kù)SciPy是基于Python的開(kāi)源代碼,是一組專門解決科學(xué)計(jì)算中各種標(biāo)準(zhǔn)問(wèn)題域的模塊的集合,特別是與NumPy、Matplotlib和pandas這些核心包一起使用時(shí)。SciPy主要包含了8個(gè)模塊,不同的模塊有不同的應(yīng)用,如用于插值、積分、優(yōu)化、處理圖像和特殊函數(shù)等。了解數(shù)據(jù)分析應(yīng)用場(chǎng)景2. SciPy模塊名稱簡(jiǎn)介egrate數(shù)值積分和微分方程求解器scipy.linalg擴(kuò)展了由numpy.linalg提供的線性代數(shù)求解和矩陣分解功能scipy.optimize函數(shù)優(yōu)化器(最小化器)以及根查找算法scipy.signal信號(hào)處理工具scipy.sp

20、arse稀疏矩陣和稀疏線性系統(tǒng)求解器scipy.specialSPECFUN這是一個(gè)實(shí)現(xiàn)了許多常用數(shù)學(xué)函數(shù)(如伽馬函數(shù))的Fortran庫(kù)的包裝器scipy.stats檢驗(yàn)連續(xù)和離散概率分布(如密度函數(shù)、采樣器、連續(xù)分布函數(shù)等)的函數(shù)與方法、各種統(tǒng)計(jì)檢驗(yàn)的函數(shù)與方法,以及各類描述性統(tǒng)計(jì)的函數(shù)與方法scipy.weave利用內(nèi)聯(lián)C+代碼加速數(shù)組計(jì)算的工具pandas是Python的數(shù)據(jù)分析核心庫(kù),最初被作為金融數(shù)據(jù)分析工具而開(kāi)發(fā)出來(lái)。pandas為時(shí)間序列分析提供了很好的支持,它提供了一系列能夠快速、便捷地處理結(jié)構(gòu)化數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)和函數(shù)。Python之所以成為強(qiáng)大而高效的數(shù)據(jù)分析環(huán)境與它息息相關(guān)

21、。pandas兼具NumPy高性能的數(shù)組計(jì)算功能以及電子表格和關(guān)系型數(shù)據(jù)庫(kù)(如SQL)靈活的數(shù)據(jù)處理功能。它提供了復(fù)雜精細(xì)的索引功能,以便完成重塑、切片與切塊、聚合和選取數(shù)據(jù)子集等操作。pandas將是本書中使用的主要工具。了解數(shù)據(jù)分析應(yīng)用場(chǎng)景3. pandasMatplotlib是較為流行的用于繪制數(shù)據(jù)圖表的Python庫(kù),是Python的2D繪圖庫(kù)。Matplotlib最初由約翰亨特(John D.Hunter,JDH)創(chuàng)建,目前由一個(gè)龐大的開(kāi)發(fā)團(tuán)隊(duì)維護(hù)。Matplotlib的操作比較容易,用戶只需用幾行代碼即可生成直方圖、功率譜圖、條形圖、錯(cuò)誤圖和散點(diǎn)圖等圖形。Matplotlib提供了

22、pylab的模塊,其中包括了NumPy和pyplot中許多常用的函數(shù),方便用戶快速進(jìn)行計(jì)算和繪圖。Matplotlib與IPython的結(jié)合,提供了一種非常好用的交互式數(shù)據(jù)繪圖環(huán)境。繪制的圖表也是交互式的,讀者可以利用繪圖窗口中工具欄中的相應(yīng)工具放大圖表中的某個(gè)區(qū)域,或?qū)φ麄€(gè)圖表進(jìn)行平移瀏覽。了解數(shù)據(jù)分析應(yīng)用場(chǎng)景4. Matplotlibseaborn是基于Matplotlib的圖形可視化Python庫(kù),它提供了一種高度交互式界面,便于用戶能夠做出各種有吸引力的統(tǒng)計(jì)圖表。seaborn是在Matplotlib的基礎(chǔ)上進(jìn)行了更高級(jí)的API封裝,使得作圖更加容易。seaborn不需要了解大量的底層

23、代碼,即可使圖形變得精致。在大多數(shù)情況下,使用seaborn能做出很具有吸引力的圖,而使用Matplotlib能制作具有更多特色的圖。因此,可將seaborn視為Matplotlib的補(bǔ)充,而不是替代物。同時(shí),seaborn能高度兼容NumPy與pandas數(shù)據(jù)結(jié)構(gòu)以及scipy與statsmodels等統(tǒng)計(jì)模式,可以在很大程度上幫助用戶實(shí)現(xiàn)數(shù)據(jù)可視化。了解數(shù)據(jù)分析應(yīng)用場(chǎng)景5. seabornEcharts是一個(gè)由百度開(kāi)源的數(shù)據(jù)可視化工具,憑借著良好的交互性,精巧的圖表設(shè)計(jì),得到了眾多開(kāi)發(fā)者的認(rèn)可。而Python是一門富有表達(dá)力的語(yǔ)言,很適合用于數(shù)據(jù)處理。pyecharts是Python與Ec

24、harts的結(jié)合。pyecharts可以展示動(dòng)態(tài)交互圖,對(duì)于展示數(shù)據(jù)更方便,當(dāng)鼠標(biāo)懸停在圖上時(shí),即可顯示數(shù)值、標(biāo)簽等。pyecharts支持主流Notebook環(huán)境,如Jupyter Notebook、JupyterLab等;可輕松集成至Flask、Django等主流Web框架;高度靈活的配置項(xiàng),可輕松搭配出精美的圖表。pyecharts囊括了30多種常見(jiàn)圖表,如Bar(柱形圖/條形圖)、Boxplot(箱形圖)、Funnel(漏斗圖)、Gauge(儀表盤)、Graph(關(guān)系圖)、HeatMap(熱力圖)、Radar(雷達(dá)圖)、Sankey(?;鶊D)、Scatter(散點(diǎn)圖)、WordClou

25、d(詞云圖)等。了解數(shù)據(jù)分析應(yīng)用場(chǎng)景6. pyechartsscikit-learn是一個(gè)簡(jiǎn)單有效的數(shù)據(jù)挖掘和數(shù)據(jù)分析工具,可以供用戶在各種環(huán)境下重復(fù)使用。scikit-learn建立在NumPy、SciPy和Matplotlib基礎(chǔ)之上,對(duì)一些常用的算法方法進(jìn)行了封裝。目前,scikit-learn的基本模塊主要有數(shù)據(jù)預(yù)處理、模型選擇、分類、聚類、數(shù)據(jù)降維和回歸6個(gè)。在數(shù)據(jù)量不大的情況下,scikit-learn可以解決大部分問(wèn)題。對(duì)算法不精通的用戶在執(zhí)行建模任務(wù)時(shí),并不需要自行編寫所有的算法,只需要簡(jiǎn)單地調(diào)用scikit-learn庫(kù)里的模塊即可。了解數(shù)據(jù)分析應(yīng)用場(chǎng)景7. scikit-l

26、earn1熟悉Python數(shù)據(jù)分析的工具目錄認(rèn)識(shí)數(shù)據(jù)分析2安裝Python的Anaconda發(fā)行版3掌握J(rèn)upyter Notebook常用功能4Python擁有NumPy、SciPy、pandas、Matplotlib、seaborn、pyecharts和scikit-learn等功能齊全、接口統(tǒng)一的庫(kù),能為數(shù)據(jù)分析工作提供極大的便利。庫(kù)的管理和版本問(wèn)題,使得數(shù)據(jù)分析人員并不能夠?qū)W⒂跀?shù)據(jù)分析,而是將大量的時(shí)間花費(fèi)在與環(huán)境配置相關(guān)的問(wèn)題上?;谏鲜鲈颍珹naconda發(fā)行版應(yīng)運(yùn)而生。Anaconda發(fā)行版Python預(yù)裝了150個(gè)以上的常用Packages,囊括了數(shù)據(jù)分析常用的NumPy、

27、SciPy、Matplotlib、seaborn、pyecharts、pandas、scikit-learn庫(kù),使得數(shù)據(jù)分析人員能夠更加順暢、專注地使用Python解決數(shù)據(jù)分析相關(guān)問(wèn)題。推薦數(shù)據(jù)分析初學(xué)者(尤其是Windows系統(tǒng)用戶)安裝此Python發(fā)行版。只需要到Anaconda官方網(wǎng)站下載適合自身的安裝包即可。安裝Python的Anaconda發(fā)行版Python的Anaconda發(fā)行版主要有以下幾個(gè)特點(diǎn)。包含了眾多流行的科學(xué)、數(shù)學(xué)、工程和數(shù)據(jù)分析的Python庫(kù)。完全開(kāi)源和免費(fèi)。額外的加速和優(yōu)化是收費(fèi)的,但對(duì)于學(xué)術(shù)用途,可以申請(qǐng)免費(fèi)的License。全平臺(tái)支持Linux、Windows

28、、Mac;支持Python 2.6、2.7、3.4、3.5、3.6和3.8等,可自由切換。了解Python的Anaconda發(fā)行版進(jìn)入Anaconda官方網(wǎng)站,下載Windows系統(tǒng)中的Anaconda安裝包,選擇Python 3.8版本。安裝Anaconda的具體步驟如下。單擊已下載好的Anaconda安裝包,并單擊“Next”按鈕進(jìn)入下一步。在Windows系統(tǒng)中安裝Anaconda單擊“I Agree”按鈕,同意上述協(xié)議并進(jìn)入下一步。在Windows系統(tǒng)中安裝Anaconda選擇圖中“All Users(requires admin privileges)”單選按鈕,單擊“Next”進(jìn)入

29、下一步。在Windows系統(tǒng)中安裝Anaconda單擊“Browse”按鈕,選擇在指定的路徑安裝Anaconda,選擇完成后單擊“Next”按鈕,進(jìn)入下一步。在Windows系統(tǒng)中安裝Anaconda兩個(gè)復(fù)選框分別代表了允許將Anaconda添加到系統(tǒng)路徑環(huán)境變量中、Anaconda使用的Python版本為3.8。全部勾選后,單擊“Install”按鈕,等待安裝結(jié)束。在Windows系統(tǒng)中安裝Anaconda單擊“Finish”按鈕,完成Anaconda安裝。在Windows系統(tǒng)中安裝Anaconda打開(kāi)一個(gè)用戶終端Terminal。使用cd命令將當(dāng)前路徑切換至系統(tǒng)下Anaconda安裝包所在

30、的文件路徑。在Linux系統(tǒng)中安裝Anaconda輸入命令“bash Anaconda3-2020.11-Linux-x86_64.sh”,進(jìn)行安裝。在Linux系統(tǒng)中安裝Anaconda按下鍵盤中的“Enter”鍵后,出現(xiàn)軟件協(xié)議相關(guān)內(nèi)容,在閱讀時(shí)連續(xù)按“Enter”鍵讀取全文,在協(xié)議末尾會(huì)讓讀者確認(rèn)是否同意以上協(xié)議,輸入“yes”,并按下鍵盤中的“Enter”鍵確認(rèn)同意。在Linux系統(tǒng)中安裝Anaconda同意協(xié)議后,默認(rèn)安裝路徑在用戶home目錄下(/home/python/anaconda3),安裝路徑設(shè)置完成后,軟件即可開(kāi)始安裝。在Linux系統(tǒng)中安裝Anaconda在安裝過(guò)程快結(jié)

31、束時(shí),將提示讀者是否將Anaconda的安裝路徑加入到系統(tǒng)當(dāng)前用戶的環(huán)境變量中,輸入“yes”,并按下鍵盤中的“Enter”鍵確認(rèn)同意。在Linux系統(tǒng)中安裝Anaconda軟件安裝完成后使用Linux系統(tǒng)的文本編輯器VIM或gedit查看當(dāng)前用戶的環(huán)境變量。輸入命令“vi /home/python/.bashrc”來(lái)查看文檔,出現(xiàn)界面,表示環(huán)境變量配置完成,說(shuō)明Anaconda已經(jīng)完成安裝。如果未配置完成,那么需要在.bashrc文檔末尾添加Anaconda安裝目錄的環(huán)境變量。在Linux系統(tǒng)中安裝Anaconda1熟悉Python數(shù)據(jù)分析的工具目錄認(rèn)識(shí)數(shù)據(jù)分析2安裝Python的Anaco

32、nda發(fā)行版3掌握J(rèn)upyter Notebook常用功能4jupyter Notebook(此前被稱為IPython Notebook)是一個(gè)交互式筆記本,支持運(yùn)行40多種編程語(yǔ)言,其本質(zhì)上是一個(gè)支持實(shí)時(shí)代碼、數(shù)學(xué)方程、可視化和Markdown的Web應(yīng)用程序。對(duì)于數(shù)據(jù)分析,Jupyter Notebook最大的優(yōu)點(diǎn)是可以重現(xiàn)整個(gè)分析過(guò)程,并將說(shuō)明文字、代碼、圖表、公式和結(jié)論都整合在一個(gè)文檔中。用戶可以通過(guò)電子郵件、Dropbox、GitHub和Jupyter Notebook Viewer將分析結(jié)果分享給其他人。掌握J(rèn)upyter Notebook常用功能 在安裝完成Python、配置好環(huán)

33、境變量并安裝了Jupyter Notebook后,在Windows系統(tǒng)下的命令行或在Linux系統(tǒng)下的終端輸入命令“jupyter notebook”,即可啟動(dòng)Jupyter Notebook。掌握J(rèn)upyter Notebook的基本功能1.啟動(dòng)Jupyter Notebook 打開(kāi)Jupyter Notebook以后會(huì)在系統(tǒng)默認(rèn)的瀏覽器中出現(xiàn)圖1 16的界面。單擊右上方的“New”下拉按鈕,出現(xiàn)下拉列表。掌握J(rèn)upyter Notebook的基本功能2.新建一個(gè)Notebook 在下拉列表中選擇需要?jiǎng)?chuàng)建的Notebook類型。其中,“Text File”為純文本型,“Folder”為文件夾

34、,“Python 3”表示Python運(yùn)行腳本,灰色字體表示不可用項(xiàng)目。選擇“Python 3”選項(xiàng),進(jìn)入Python腳本編輯界面。掌握J(rèn)upyter Notebook的基本功能 Jupyter Notebook中的Notebook文檔由一系列單元(Cell)構(gòu)成 ,主要有以下兩種形式的單元,在Jupyter Notebook中的形式。掌握J(rèn)upyter Notebook的基本功能3. Jupyter Notebook的界面及其構(gòu)成代碼單元。代碼單元是讀者編寫代碼的地方,通過(guò)按“Shift+Enter”組合鍵運(yùn)行代碼,其結(jié)果顯示在本單元下方。代碼單元左邊有“In :”編號(hào),方便使用者查看代碼的

35、執(zhí)行次序。Markdown單元。Markdown單元可對(duì)文本進(jìn)行編輯,采用Markdown的語(yǔ)法規(guī)范,可以設(shè)置文本格式,插入鏈接、圖片甚至數(shù)學(xué)公式。同樣,按“Shift+Enter”組合鍵可運(yùn)行Markdown單元,顯示格式化的文本。掌握J(rèn)upyter Notebook的基本功能 Jupyter Notebook編輯界面類似于Linux的VIM編輯器界面,在Notebook中也有兩種模式,其模式如下。編輯模式。用于編輯文本和代碼。選中單元并按“Enter”鍵進(jìn)入編輯模式,此時(shí)單元左側(cè)顯示綠色豎線。命令模式。用于執(zhí)行鍵盤輸入的快捷命令。通過(guò)按“Esc”鍵進(jìn)入命令模式,此時(shí)單元左側(cè)顯示藍(lán)色豎線。掌

36、握J(rèn)upyter Notebook的基本功能 如果要使用快捷鍵,那么首先按“Esc”鍵進(jìn)入命令模式,然后按相應(yīng)的鍵實(shí)現(xiàn)對(duì)文檔的操作。例如,切換到代碼單元按“Y”鍵,切換到Markdown單元按“M”鍵,在本單元的下方增加一單元按“B”鍵,查看所有快捷命令按“H”鍵。掌握J(rèn)upyter Notebook的基本功能 在Jupyter Notebook中,可以使用Markdown進(jìn)行文本標(biāo)記,以便用戶查看。同時(shí)Jupyter Notebook還可以將Notebook導(dǎo)出形成HTML、PDF等多種格式。Markdown是一種可以使用普通文本編輯器編寫的標(biāo)記語(yǔ)言,通過(guò)簡(jiǎn)單的標(biāo)記語(yǔ)法,便可以使普通文本內(nèi)容

37、具有一定的格式。Jupyter Notebook的Markdown單元功能較多,下面將從標(biāo)題、列表、字體、表格和數(shù)學(xué)公式編輯5個(gè)方面進(jìn)行介紹。掌握J(rèn)upyter Notebook的高級(jí)功能1. Markdown標(biāo)題是標(biāo)明文章和作品等內(nèi)容的簡(jiǎn)短語(yǔ)句。讀者寫報(bào)告或?qū)懻撐臅r(shí),標(biāo)題是不可或缺的,尤其是論文的章節(jié)等,需要使用不同級(jí)別的標(biāo)題。一般使用Markdown中的類Atx形式進(jìn)行標(biāo)題的排版,在首行前加一個(gè)“#”字符代表一級(jí)標(biāo)題,加兩個(gè)“#”字符代表二級(jí)標(biāo)題,以此類推。掌握J(rèn)upyter Notebook的高級(jí)功能(1)標(biāo)題列表是一種由數(shù)據(jù)項(xiàng)構(gòu)成的有限序列,即按照一定的線性順序排列而成的數(shù)據(jù)項(xiàng)的集合。

38、列表一般分為兩種:一種是無(wú)序列表,使用一些圖標(biāo)標(biāo)記,沒(méi)有序號(hào),沒(méi)有排列順序;另一種是有序列表,使用數(shù)字標(biāo)記,有排列順序。Markdown對(duì)于無(wú)序列表,可使用星號(hào)、加號(hào)或減號(hào)作為列表標(biāo)記;Markdown對(duì)于有序列表,則使用數(shù)字加“.”和“ ”(一個(gè)空格)表示掌握J(rèn)upyter Notebook的高級(jí)功能(2)列表文檔中為了凸顯部分內(nèi)容,一般對(duì)文字使用加粗或斜體格式,使得該部分內(nèi)容變得更加醒目。對(duì)于Markdown排版工具而言,通常使用星號(hào)“*”和下劃線“_”作為標(biāo)記字詞的符號(hào)。前后有兩個(gè)星號(hào)或下劃線表示加粗,前后有3個(gè)星號(hào)或下劃線表示斜體。掌握J(rèn)upyter Notebook的高級(jí)功能(3)字

39、體使用Markdown同樣也可以繪制表格。代碼的第一行表示表頭,第二行分隔表頭和主體部分,從第三行開(kāi)始,每一行代表一個(gè)表格行。列與列之間用符號(hào)“”隔開(kāi),表格每一行的兩邊也要有符號(hào)“”掌握J(rèn)upyter Notebook的高級(jí)功能(4)表格LaTeX是寫科研論文的必備工具,不但能實(shí)現(xiàn)嚴(yán)格的文檔排版,而且能編輯復(fù)雜的數(shù)學(xué)公式。在Jupyter Notebook的Markdown單元中也可以使用LaTeX來(lái)插入數(shù)學(xué)公式。在文本行中插入數(shù)學(xué)公式,應(yīng)使用兩個(gè)“$”符號(hào),如質(zhì)能方程“$E = mc2$”。如果要插入一個(gè)數(shù)學(xué)區(qū)塊,那么使用兩個(gè)“$”符號(hào),如使用“$ z = fracxy $”表示式。掌握J(rèn)u

40、pyter Notebook的高級(jí)功能(5)數(shù)學(xué)公式編輯Notebook還有一個(gè)強(qiáng)大的特性,就是導(dǎo)出功能,可以將Notebook導(dǎo)出為多種格式,如HTML、Markdown、reST、PDF(通過(guò)LaTeX)等格式。其中,導(dǎo)出為PDF功能,可以讓讀者不用寫LaTeX即可創(chuàng)建漂亮的PDF文檔。讀者還可以將Notebook作為網(wǎng)頁(yè)發(fā)布在自己的網(wǎng)站上。甚至,可以導(dǎo)出為reST格式,作為軟件庫(kù)的文檔。導(dǎo)出功能可以依次選擇“File”“Download as”級(jí)聯(lián)菜單中的命令實(shí)現(xiàn)。掌握J(rèn)upyter Notebook的高級(jí)功能2. 導(dǎo)出功能本章主要介紹了數(shù)據(jù)分析的概念、流程、應(yīng)用場(chǎng)景和常用工具,闡述了使

41、用Python進(jìn)行數(shù)據(jù)分析的優(yōu)勢(shì),列舉說(shuō)明了Python數(shù)據(jù)分析重要類庫(kù)的功能。緊接著闡述了Anaconda的特點(diǎn),實(shí)現(xiàn)了在Windows和Linux兩個(gè)系統(tǒng)中安裝Anaconda數(shù)據(jù)分析環(huán)境。最后介紹了Python數(shù)據(jù)分析工具Jupyter Notebook的常用功能。小結(jié)NumPy數(shù)值計(jì)算基礎(chǔ)1掌握NumPy矩陣與通用函數(shù)目錄掌握NumPy數(shù)組對(duì)象ndarray2利用NumPy進(jìn)行統(tǒng)計(jì)分析3NumPy提供了兩種基本的對(duì)象。ndarray(N-dimensional Array Object):存儲(chǔ)單一數(shù)據(jù)類型的多維數(shù)組。ufunc(Universal Function Object):能夠

42、對(duì)數(shù)組進(jìn)行處理的函數(shù)。創(chuàng)建數(shù)組對(duì)象在創(chuàng)建數(shù)組之前,需要先了解數(shù)組的基本屬性,數(shù)組的屬性及其說(shuō)明如下表。創(chuàng)建數(shù)組對(duì)象1. 數(shù)組屬性屬性名稱屬性說(shuō)明ndim返回int,表示數(shù)組的維數(shù)shape返回tuple,表示數(shù)組形狀的陣列,對(duì)于n行m列的矩陣,形狀為(n,m)size返回int,表示數(shù)組的元素總數(shù),等于數(shù)組形狀的乘積dtype返回data-type,表示數(shù)組中元素的數(shù)據(jù)類型itemsize返回int,表示數(shù)組的每個(gè)元素的大?。ㄒ宰止?jié)為單位),例如,一個(gè)元素類型為float64的數(shù)組的itemsiz屬性值為8(float64占用64個(gè)bits,每個(gè)字節(jié)長(zhǎng)度為8,所以64/8,占用8個(gè)字節(jié)),一個(gè)

43、元素類型為complex32的數(shù)組的itemsiz屬性值為4,即32/8NumPy提供的array函數(shù)可以創(chuàng)建一維或多維數(shù)組,其基本使用格式如下。array函數(shù)主要參數(shù)及其說(shuō)明如下表。創(chuàng)建數(shù)組對(duì)象2. 數(shù)組創(chuàng)建參數(shù)名稱參數(shù)說(shuō)明object接收array_like,表示所需創(chuàng)建的數(shù)組對(duì)象,無(wú)默認(rèn)值dtype接收data-type,表示數(shù)組所需的數(shù)據(jù)類型,如果未給定,那么選擇保存對(duì)象所需的最小類型,默認(rèn)為Nonendmin接收int,表示指定生成數(shù)組應(yīng)該具有的最小維數(shù),默認(rèn)為0numpy.array(object, dtype=None, *, copy=True, order=K, subok=

44、False, ndmin=0, like=None)除了使用array函數(shù)創(chuàng)建數(shù)組之外,還可以使用arange函數(shù)創(chuàng)建數(shù)組。arange函數(shù)類似于Python自帶的函數(shù)range,通過(guò)指定開(kāi)始值、終值和步長(zhǎng)來(lái)創(chuàng)建一維數(shù)組,創(chuàng)建的數(shù)組不含終值。arange函數(shù)的基本使用格式如下。 arange函數(shù)常用參數(shù)及其說(shuō)明如下表。創(chuàng)建數(shù)組對(duì)象參數(shù)名稱參數(shù)說(shuō)明start接收int或?qū)崝?shù),表示數(shù)組的開(kāi)始值,生成的區(qū)間包括該值,默認(rèn)為0stop接收int或?qū)崝?shù),表示數(shù)組的終值,生成的區(qū)間不包括該值,無(wú)默認(rèn)值step接收int或?qū)崝?shù),表示在數(shù)組中,值之間的間距,默認(rèn)為1dtype接收數(shù)據(jù)類型,表示輸出數(shù)組的類型,

45、默認(rèn)為Nonenumpy.arange(start, stop, step, dtype=None, *, like=None)linspace函數(shù)通過(guò)指定開(kāi)始值、終值和元素個(gè)數(shù)來(lái)創(chuàng)建一維數(shù)組,默認(rèn)設(shè)置包括終值,這一點(diǎn)需要和arange函數(shù)區(qū)分。linspace函數(shù)的基本使用格式如下。linspace函數(shù)的常用參數(shù)及其說(shuō)明如下表。創(chuàng)建數(shù)組對(duì)象參數(shù)名稱參數(shù)說(shuō)明start接收array_like,表示起始值,無(wú)默認(rèn)值stop接收array_like,表示結(jié)束值,無(wú)默認(rèn)值num接收int,表示生成的樣本數(shù),默認(rèn)為50dtype接收數(shù)據(jù)類型,表示輸出數(shù)組的類型,默認(rèn)為Nonenumpy.linspac

46、e(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0)logspace函數(shù)和linspace函數(shù)類似,它創(chuàng)建的是等比數(shù)列。logspace函數(shù)的基本使用格式如下。在logspace函數(shù)的參數(shù)中,除了base參數(shù)和linspace函數(shù)的retstep參數(shù)不同之外,其余均相同。創(chuàng)建數(shù)組對(duì)象numpy.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None, axis=0)NumPy還提供了其他函數(shù)用于創(chuàng)建特殊數(shù)組,如zeros、ey

47、e、diag和ones函數(shù)等。zeros函數(shù):用于創(chuàng)建值全部為0的數(shù)組,即創(chuàng)建的數(shù)組值全部填充為0。eye函數(shù):用于生成主對(duì)角線上的元素為1,其他的元素為0的數(shù)組,類似單位矩陣。diag函數(shù):創(chuàng)建類似對(duì)角的數(shù)組,即除對(duì)角線外的其他元素都為0,對(duì)角線上的元素可以是0或其他值。ones函數(shù):用于創(chuàng)建元素全部為1的數(shù)組,即創(chuàng)建的數(shù)組元素全部填充為1。創(chuàng)建數(shù)組對(duì)象在實(shí)際的業(yè)務(wù)數(shù)據(jù)處理中,為了更準(zhǔn)確地計(jì)算結(jié)果,需要使用不同精度的數(shù)據(jù)類型。NumPy極大程度地?cái)U(kuò)充了原生Python的數(shù)據(jù)類型。在NumPy中,所有數(shù)組的數(shù)據(jù)類型是同質(zhì)的,即數(shù)組中的所有元素類型必須是一致的。將元素類型保持一致可以更容易確定該

48、數(shù)組所需要的存儲(chǔ)空間。創(chuàng)建數(shù)組對(duì)象3. 數(shù)組數(shù)據(jù)類型NumPy的基本數(shù)據(jù)類型及其取值范圍如下表。創(chuàng)建數(shù)組對(duì)象類型描述bool用一位存儲(chǔ)的布爾類型(值為True或False)inti由所在平臺(tái)決定其精度的整數(shù)(一般為int32或int64)int8整數(shù),范圍為128127int16整數(shù),范圍為32 76832 767int32整數(shù),范圍為2312321int64整數(shù),范圍為2632631uint8無(wú)符號(hào)整數(shù),范圍為0255uint16無(wú)符號(hào)整數(shù),范圍為065 535uint32無(wú)符號(hào)整數(shù),范圍為02321NumPy的基本數(shù)據(jù)類型及其取值范圍(續(xù)表)。創(chuàng)建數(shù)組對(duì)象類型描述uint64無(wú)符號(hào)整數(shù),范

49、圍為02641float16半精度浮點(diǎn)數(shù)(16位),其中用1位表示正負(fù)號(hào),用5位表示指數(shù),用10位表示尾數(shù)float32單精度浮點(diǎn)數(shù)(32位),其中用1位表示正負(fù)號(hào),用8位表示指數(shù),用23位表示尾數(shù)float64或float雙精度浮點(diǎn)數(shù)(64位),其中用1位表示正負(fù)號(hào),用11位表示指數(shù),用52位表示尾數(shù)complex64復(fù)數(shù),分別用兩個(gè)32位浮點(diǎn)數(shù)表示實(shí)部和虛部complex128或complex復(fù)數(shù),分別用兩個(gè)64位浮點(diǎn)數(shù)表示實(shí)部和虛部uint32無(wú)符號(hào)整數(shù),范圍為02321手動(dòng)創(chuàng)建數(shù)組往往很難達(dá)到數(shù)量要求,NumPy提供了強(qiáng)大的生成隨機(jī)數(shù)的功能。然而,真正的隨機(jī)數(shù)很難獲得,在實(shí)際中使用的都

50、是偽隨機(jī)數(shù)。在大部分情況下,偽隨機(jī)數(shù)就能滿足獲取的需求。當(dāng)然,某些特殊情況除外,如進(jìn)行高精度的模擬實(shí)驗(yàn)。對(duì)于NumPy,與隨機(jī)數(shù)相關(guān)的函數(shù)都在random模塊中,其中包括了可以生成服從多種概率分布隨機(jī)數(shù)的函數(shù)。生成隨機(jī)數(shù)random函數(shù)是最常見(jiàn)的生成隨機(jī)數(shù)的方法,random函數(shù)的基本使用格式如下。參數(shù)size接收int,表示返回的隨機(jī)浮點(diǎn)數(shù)大小,默認(rèn)為None。生成隨機(jī)數(shù)numpy.random.random(size=None)rand函數(shù)可以生成服從均勻分布的隨機(jī)數(shù),其使用格式如下。參數(shù)d0, d1, ., dn接收int,表示返回?cái)?shù)組的維度必須是非負(fù)數(shù)。如果沒(méi)有給出參數(shù),那么返回單個(gè)P

51、ython浮點(diǎn)數(shù),無(wú)默認(rèn)值。randn函數(shù)可以生成服從正態(tài)分布的隨機(jī)數(shù),randn函數(shù)的使用格式和參數(shù)說(shuō)明與rand函數(shù)相同。生成隨機(jī)數(shù)numpy.random.rand(d0, d1, ., dn)randint函數(shù)可以生成給定上下限范圍的隨機(jī)數(shù),其基本使用格式如下。randint函數(shù)的常用參數(shù)及其說(shuō)明如下表。生成隨機(jī)數(shù)numpy.random.randint(low, high=None, size=None, dtype=int)參數(shù)名稱參數(shù)說(shuō)明low接收int或類似數(shù)組的整數(shù)。表示數(shù)組最小值。無(wú)默認(rèn)值high接收int或類似數(shù)組的整數(shù)。表示數(shù)組最大值。默認(rèn)Nonesize接收int或整

52、數(shù)元組。表示輸出形狀。默認(rèn)為Nonedtype接收數(shù)據(jù)類型。表示輸出數(shù)組的類型。默認(rèn)為int在random模塊中,其他常用于生成隨機(jī)數(shù)的函數(shù)如下表。生成隨機(jī)數(shù)函數(shù)說(shuō)明seed確定隨機(jī)數(shù)生成器的種子permutation返回一個(gè)序列的隨機(jī)排列或返回一個(gè)隨機(jī)排列的范圍Shuffle對(duì)一個(gè)序列進(jìn)行隨機(jī)排序binomial產(chǎn)生二項(xiàng)分布的隨機(jī)數(shù)normal產(chǎn)生正態(tài)(高斯)分布的隨機(jī)數(shù)beta產(chǎn)生beta分布的隨機(jī)數(shù)chisquare產(chǎn)生卡方分布的隨機(jī)數(shù)gamma產(chǎn)生gamma分布的隨機(jī)數(shù)uniform產(chǎn)生在0, 1中均勻分布的隨機(jī)數(shù)NumPy通常以提供高效率的數(shù)組著稱,這主要?dú)w功于索引的易用性。1. 一

53、維數(shù)組的索引一維數(shù)組的方法很簡(jiǎn)單,與Python中的list的索引方法一致。2. 多維數(shù)組的索引多維數(shù)組的每一個(gè)維度都有一個(gè)索引,各個(gè)維度的索引之間用逗號(hào)隔開(kāi)。多維數(shù)組同樣也可以使用整數(shù)序列和布爾值索引進(jìn)行訪問(wèn)。通過(guò)索引訪問(wèn)數(shù)組在NumPy中,常用reshape函數(shù)改變數(shù)組的“形狀”,即改變數(shù)組的維度。reshape函數(shù)的基本使用格式如下。reshape函數(shù)在改變?cè)紨?shù)據(jù)的形狀的同時(shí)不改變?cè)紨?shù)據(jù)的值。如果指定的維度和數(shù)組的元素?cái)?shù)目不吻合,那么函數(shù)將拋出異常。變換數(shù)組的形態(tài)numpy.reshape(a, newshape, order=C)reshape函數(shù)的常用參數(shù)及其說(shuō)明如下表。在Num

54、Py中,可以使用ravel函數(shù)完成數(shù)組展平工作。flatten函數(shù)也可以完成數(shù)組展平工作。與ravel函數(shù)的區(qū)別在于,flatten函數(shù)可以選擇橫向或縱向展平。變換數(shù)組的形態(tài)參數(shù)名稱參數(shù)說(shuō)明a接收array_like。表示需要變換形態(tài)的數(shù)組。無(wú)默認(rèn)值newshape接收int或int型元組。表示變化后的形狀的維度。無(wú)默認(rèn)值order接收str。表示將元素放入數(shù)組中的順序,可選C、F、A。默認(rèn)為C除了可以改變數(shù)組“形狀”外,NumPy也可以對(duì)數(shù)組進(jìn)行組合。組合主要有橫向組合與縱向組合。使用hstack函數(shù)、vstack函數(shù)和concatenate函數(shù)可完成數(shù)組的組合。橫向組合是將ndarray對(duì)

55、象構(gòu)成的元組作為參數(shù),傳給hstack函數(shù)??v向組合同樣是將ndarray對(duì)象構(gòu)成的元組作為參數(shù),傳給vstack函數(shù)。concatenate函數(shù)也可以實(shí)現(xiàn)數(shù)組的橫向組合和縱向組合,其中當(dāng)參數(shù)axis=1時(shí),數(shù)組按照橫向組合,當(dāng)參數(shù)axis=0時(shí),數(shù)組按照縱向組合。變換數(shù)組的形態(tài)除了對(duì)數(shù)組進(jìn)行橫向和縱向的組合之外,還可以對(duì)數(shù)組進(jìn)行分割。NumPy提供了hsplit、vsplit、dsplit和split函數(shù),可以將數(shù)組分割成相同大小的子數(shù)組,也可以指定原數(shù)組中需要分割的位置。hsplit函數(shù):可以對(duì)數(shù)組進(jìn)行橫向分割,以ndarray對(duì)象構(gòu)成的元組作為參數(shù)。vsplit函數(shù):可以對(duì)數(shù)組進(jìn)行縱向分

56、割,以ndarray對(duì)象構(gòu)成的元組作為參數(shù)。split函數(shù):同樣可以實(shí)現(xiàn)數(shù)組分割。當(dāng)參數(shù)axis=1時(shí),可以對(duì)數(shù)組進(jìn)行橫向分割;當(dāng)參數(shù)axis=0時(shí),可以對(duì)數(shù)組進(jìn)行縱向分割。變換數(shù)組形態(tài)1掌握NumPy矩陣與通用函數(shù)目錄掌握NumPy數(shù)組對(duì)象ndarray2利用NumPy進(jìn)行統(tǒng)計(jì)分析3在NumPy中,矩陣是ndarray的子類,且數(shù)組和矩陣有著重要的區(qū)別。NumPy提供了兩個(gè)基本的對(duì)象,分別是N維數(shù)組對(duì)象和通用函數(shù)對(duì)象,其他對(duì)象都是在它們之上構(gòu)建的。矩陣是繼承自NumPy數(shù)組對(duì)象的二維數(shù)組對(duì)象。與數(shù)學(xué)概念中的矩陣一樣,NumPy中的矩陣也是二維的。使用mat、matrix和bmat函數(shù)可創(chuàng)建矩

57、陣。創(chuàng)建NumPy矩陣當(dāng)使用mat函數(shù)創(chuàng)建矩陣時(shí),如果輸入matrix或ndarray對(duì)象,那么不會(huì)創(chuàng)建相應(yīng)副本。因此,調(diào)用mat函數(shù)和調(diào)用matrix(data, copy=False)函數(shù)等價(jià)。在大多數(shù)情況下,用戶會(huì)根據(jù)小的矩陣來(lái)創(chuàng)建大的矩陣,即將小矩陣組合成大矩陣。在NumPy中,可以使用bmat分塊矩陣(block matrix)函數(shù)實(shí)現(xiàn)。在NumPy中,矩陣計(jì)算是針對(duì)整個(gè)矩陣中的每個(gè)元素進(jìn)行的。與使用for循環(huán)相比,其在運(yùn)算速度上更快。創(chuàng)建NumPy矩陣除了能夠?qū)崿F(xiàn)各類運(yùn)算外,矩陣還有其特有的屬性,如下表。創(chuàng)建NumPy矩陣屬性名稱屬性說(shuō)明T返回自身的轉(zhuǎn)置H返回自身的共軛轉(zhuǎn)置I返回自

58、身的逆矩陣A返回自身數(shù)據(jù)的二維數(shù)組的一個(gè)視圖(沒(méi)有做任何的復(fù)制)常用的ufunc函數(shù)運(yùn)算有四則運(yùn)算、比較運(yùn)算和邏輯運(yùn)算等。四則運(yùn)算:ufunc函數(shù)支持全部的四則運(yùn)算,并且保留習(xí)慣的運(yùn)算符,和數(shù)值運(yùn)算的使用方式一樣,但是需要注意的是,操作的對(duì)象是數(shù)組。數(shù)組間的四則運(yùn)算表示對(duì)每個(gè)數(shù)組中的元素分別進(jìn)行四則運(yùn)算,因此進(jìn)行四則運(yùn)算的兩個(gè)數(shù)組的形狀必須相同。比較運(yùn)算:在ufunc函數(shù)中也支持完整的比較運(yùn)算:、=、=、!=。比較運(yùn)算返回的結(jié)果是一個(gè)布爾數(shù)組,其每個(gè)元素為數(shù)組對(duì)應(yīng)元素的比較結(jié)果。邏輯運(yùn)算:在NumPy邏輯運(yùn)算中,numpy.all函數(shù)表示邏輯and,numpy.any函數(shù)表示邏輯or。掌握uf

59、unc函數(shù)1. 常用的ufunc函數(shù)運(yùn)算廣播(Broadcasting)是指不同形狀的數(shù)組之間執(zhí)行算術(shù)運(yùn)算的方式。當(dāng)使用ufunc函數(shù)進(jìn)行數(shù)組計(jì)算時(shí),ufunc函數(shù)會(huì)對(duì)兩個(gè)數(shù)組的對(duì)應(yīng)元素進(jìn)行計(jì)算。進(jìn)行這種計(jì)算的前提是兩個(gè)數(shù)組的shape一致。如果兩個(gè)數(shù)組的shape不一致,那么NumPy會(huì)實(shí)行廣播機(jī)制。NumPy中的廣播機(jī)制并不容易理解,特別是在進(jìn)行高維數(shù)組計(jì)算的時(shí)候。掌握ufunc函數(shù)2. ufunc函數(shù)的廣播機(jī)制為了更好地使用廣播機(jī)制,需要遵循以下4個(gè)原則。讓所有的輸入數(shù)組向其中shape最長(zhǎng)的數(shù)組看齊,shape中不足的部分通過(guò)在前面加1補(bǔ)齊。輸出數(shù)組的shape是輸入數(shù)組shape的各

60、個(gè)軸上的最大值。如果輸入數(shù)組的某個(gè)軸和輸出數(shù)組的對(duì)應(yīng)軸的長(zhǎng)度相同或其長(zhǎng)度為1,那么這個(gè)數(shù)組能夠用于計(jì)算,否則系統(tǒng)將會(huì)出錯(cuò)。當(dāng)輸入數(shù)組的某個(gè)軸的長(zhǎng)度為1時(shí),沿著此軸運(yùn)算時(shí)使用此軸上的第一組值。掌握ufunc函數(shù)1掌握NumPy矩陣與通用函數(shù)目錄掌握NumPy數(shù)組對(duì)象ndarray2利用NumPy進(jìn)行統(tǒng)計(jì)分析3NumPy的文件讀/寫主要有二進(jìn)制的文件讀/寫和文件列表形式的數(shù)據(jù)讀/寫兩種形式。NumPy提供了若干函數(shù),可以將結(jié)果保存到二進(jìn)制或文本文件中。除此之外,NumPy還提供了許多從文件讀取數(shù)據(jù)并將其轉(zhuǎn)換為數(shù)組的方法。讀/寫文件save函數(shù)以二進(jìn)制的格式保存數(shù)據(jù),load函數(shù)從二進(jìn)制的文件中讀取

溫馨提示

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

評(píng)論

0/150

提交評(píng)論