




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Python數(shù)據(jù)分析概述1Python數(shù)據(jù)分析的工具目錄認(rèn)識(shí)數(shù)據(jù)分析2安裝Python的Anaconda發(fā)行版3JupyterNotebook常用功能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è)管理層做出決策,增強(qiáng)行業(yè)、社會(huì)穩(wěn)步前行的信心,提升銳意創(chuàng)新、奮勇超越的不屈精神,為未來(lái)科學(xué)發(fā)展取得卓越建樹(shù)打下基礎(chǔ)。數(shù)據(jù)分析的概念廣義的數(shù)據(jù)分析包括狹義數(shù)據(jù)分析和數(shù)據(jù)挖掘。狹義數(shù)據(jù)分析是指根據(jù)分析目的,采用對(duì)比分析、分組分析、交叉分析和回歸分析等分析方法,對(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ì),主要是指從用戶(hù)提出的需求出發(fā),挖掘用戶(hù)內(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é)的第一步,也是非常重要的一步,決定了后續(xù)的分析方向和方法。數(shù)據(jù)分析中的需求分析的主要內(nèi)容是根據(jù)業(yè)務(wù)、生產(chǎn)和財(cái)務(wù)等部門(mén)的需要,結(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)中的各類(lèi)視頻、圖片、語(yǔ)音和文字等信息。本地?cái)?shù)據(jù)則是指存儲(chǔ)在本地?cái)?shù)據(jù)庫(kù)中的生產(chǎn)、營(yíng)銷(xiāo)和財(cái)務(wù)等系統(tǒng)的數(shù)據(jù)。本地?cái)?shù)據(jù)按照數(shù)據(jù)產(chǎn)生的時(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ù)是指最近一個(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ù)變換等操作,并將數(shù)據(jù)用于分析建模的這一過(guò)程的總稱(chēng)。其中,數(shù)據(jù)合并可以將多張互相關(guān)聯(lián)的表格合并為一張;數(shù)據(jù)清洗可以去除重復(fù)、缺失、異常、不一致的數(shù)據(jù);數(shù)據(jù)標(biāo)準(zhǔn)化可以去除特征間的量綱差異;數(shù)據(jù)變換則可以通過(guò)離散化、啞變量處理等技術(shù)滿(mǎn)足后期分析與建模的數(shù)據(jù)要求。在數(shù)據(jù)分析的過(guò)程中,數(shù)據(jù)預(yù)處理的各個(gè)過(guò)程互相交叉,并沒(méi)有明確的先后順序。數(shù)據(jù)分析的流程3.數(shù)據(jù)預(yù)處理分析與建模是指通過(guò)對(duì)比分析、分組分析、交叉分析、回歸分析等分析方法,以及聚類(lèi)模型、分類(lèi)模型、關(guān)聯(lián)規(guī)則、智能推薦等模型與算法,發(fā)現(xiàn)數(shù)據(jù)中有價(jià)值的信息,并得出結(jié)論的過(guò)程。在數(shù)據(jù)分析過(guò)程中,具體使用哪種數(shù)據(jù)獲取方式,需要依據(jù)需求分析的結(jié)果而定。分析與建模的方法按照目標(biāo)不同可以分為幾大類(lèi)。如果分析目標(biāo)是描述客戶(hù)行為模式的,那么可以采用描述型數(shù)據(jù)分析方法,同時(shí)還可以考慮關(guān)聯(lián)規(guī)則、序列規(guī)則和聚類(lèi)模型等。如果分析目標(biāo)是量化未來(lái)一段時(shí)間內(nèi)某個(gè)事件發(fā)生概率的,那么可以使用兩大預(yù)測(cè)分析模型,即分類(lèi)預(yù)測(cè)模型和回歸預(yù)測(cè)模型。在常見(jiàn)的分類(lèi)預(yù)測(cè)模型中,目標(biāo)特征通常為二元數(shù)據(jù),如欺詐與否、流失與否、信用好壞等。在回歸預(yù)測(cè)模型中,目標(biāo)特征通常為連續(xù)型數(shù)據(jù),常見(jiàn)的有股票價(jià)格預(yù)測(cè)等。數(shù)據(jù)分析的流程4.分析與建模模型評(píng)價(jià)是指對(duì)于已經(jīng)建立的一個(gè)或多個(gè)模型,根據(jù)其模型的類(lèi)別,使用不同的指標(biāo)評(píng)價(jià)模型性能優(yōu)劣的過(guò)程。常用的聚類(lèi)模型評(píng)價(jià)指標(biāo)有ARI評(píng)價(jià)法(蘭德系數(shù))、AMI評(píng)價(jià)法(互信息)、V-measure評(píng)分、FMI評(píng)價(jià)法和輪廓系數(shù)等。常用的分類(lèi)模型評(píng)價(jià)指標(biāo)有準(zhǔn)確率(Accuracy)、精確率(Precision)、召回率(Recall)、F1值(F1Value)、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)模型的性能并不理想,繼而對(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)景主要分為客戶(hù)分析、營(yíng)銷(xiāo)分析、社交媒體分析、網(wǎng)絡(luò)安全、設(shè)備管理、交通物流分析和欺詐行為檢測(cè)7類(lèi)。客戶(hù)分析主要是根據(jù)客戶(hù)的基本數(shù)據(jù)信息進(jìn)行商業(yè)行為分析,首先界定目標(biāo)客戶(hù),根據(jù)客戶(hù)的需求、目標(biāo)客戶(hù)的性質(zhì)、所處行業(yè)的特征和客戶(hù)的經(jīng)濟(jì)狀況等基本信息,使用統(tǒng)計(jì)分析方法和預(yù)測(cè)驗(yàn)證法分析目標(biāo)客戶(hù),提高銷(xiāo)售效率。其次了解客戶(hù)的采購(gòu)過(guò)程,根據(jù)客戶(hù)采購(gòu)類(lèi)型、采購(gòu)性質(zhì)進(jìn)行分類(lèi)分析,制定不同的營(yíng)銷(xiāo)策略。根據(jù)已有的客戶(hù)特征進(jìn)行客戶(hù)特征分析、客戶(hù)忠誠(chéng)度分析、客戶(hù)注意力分析、客戶(hù)營(yíng)銷(xiāo)分析和客戶(hù)收益分析。通過(guò)有效的客戶(hù)分析能夠掌握客戶(hù)的具體行為特征,將客戶(hù)細(xì)分,使得運(yùn)營(yíng)策略達(dá)到最優(yōu),提升企業(yè)整體效益等。數(shù)據(jù)分析應(yīng)用場(chǎng)景1.客戶(hù)分析(CustomerAnalytics)營(yíng)銷(xiāo)分析囊括了產(chǎn)品分析、價(jià)格分析、渠道分析、廣告與促銷(xiāo)分析這4類(lèi)分析。產(chǎn)品分析主要是競(jìng)爭(zhēng)產(chǎn)品分析,通過(guò)對(duì)競(jìng)爭(zhēng)產(chǎn)品的分析制定自身產(chǎn)品策略。價(jià)格分析又可以分為成本分析和售價(jià)分析。成本分析的目的是降低不必要的成本;售價(jià)分析的目的是制定符合市場(chǎng)的價(jià)格。渠道分析是指對(duì)產(chǎn)品的銷(xiāo)售渠道進(jìn)行分析,確定最優(yōu)的渠道配比。廣告與促銷(xiāo)分析則能夠結(jié)合客戶(hù)分析,實(shí)現(xiàn)銷(xiāo)量的提升、利潤(rùn)的增加。數(shù)據(jù)分析應(yīng)用場(chǎng)景2.營(yíng)銷(xiāo)分析(MarketingAnalytics)社交媒體分析是以不同的社交媒體渠道生成的內(nèi)容為基礎(chǔ),實(shí)現(xiàn)不同社交媒體的用戶(hù)分析、訪(fǎng)問(wèn)分析和互動(dòng)分析等。用戶(hù)分析主要根據(jù)用戶(hù)注冊(cè)信息、登錄平臺(tái)的時(shí)間點(diǎn)和平時(shí)發(fā)表的內(nèi)容等用戶(hù)數(shù)據(jù),分析用戶(hù)個(gè)人畫(huà)像和行為特征。訪(fǎng)問(wèn)分析則是通過(guò)用戶(hù)平時(shí)訪(fǎng)問(wèn)的內(nèi)容分析用戶(hù)的興趣愛(à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.社交媒體分析(SocialMediaAnalytics)大規(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)的訪(fǎng)問(wèn)行為,識(shí)別可能進(jìn)行入侵的可疑模式,做到未雨綢繆。在2016年11月7日第十二屆全國(guó)人民代表大會(huì)中通過(guò)了《中華人民共和國(guó)網(wǎng)絡(luò)安全法》,進(jìn)一步全面推進(jìn)國(guó)家各方面工作法治化。同時(shí)個(gè)人也需學(xué)會(huì)識(shí)別和防范網(wǎng)絡(luò)風(fēng)險(xiǎn),提高自身的網(wǎng)絡(luò)安全意識(shí)。數(shù)據(jù)分析應(yīng)用場(chǎng)景4.網(wǎng)絡(luò)安全(MassiveCybersecurity)設(shè)備管理同樣是企業(yè)關(guān)注的重點(diǎn)。設(shè)備維修一般采用標(biāo)準(zhǔn)修理法、定期修理法和檢查后修理法等方法。在這兩種辦法中,標(biāo)準(zhǔn)修理法可能導(dǎo)致設(shè)備的過(guò)度維修,進(jìn)而產(chǎn)生較高的修理費(fèi)用。而檢查后修理法雖然解決了高成本的問(wèn)題,但它需要繁瑣的準(zhǔn)備工作,導(dǎo)致設(shè)備停機(jī)時(shí)間延長(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è)備管理(FacilityManagement)物流是物品從供應(yīng)地向接收地的實(shí)體流動(dòng),是將運(yùn)輸、儲(chǔ)存、裝卸搬運(yùn)、包裝、流通加工、配送和信息處理等功能有機(jī)結(jié)合起來(lái)從而實(shí)現(xiàn)用戶(hù)要求的過(guò)程。用戶(hù)可以通過(guò)業(yè)務(wù)系統(tǒng)和GPS定位系統(tǒng)獲得數(shù)據(jù),使用數(shù)據(jù)構(gòu)建交通狀況預(yù)測(cè)分析模型,有效預(yù)測(cè)實(shí)時(shí)路況、物流狀況、車(chē)流量、客流量和貨物吞吐量,進(jìn)而提前補(bǔ)貨,制定庫(kù)存管理策略。數(shù)據(jù)分析應(yīng)用場(chǎng)景6.交通物流分析(TransportandLogisticsAnalytics)1Python數(shù)據(jù)分析的工具目錄認(rèn)識(shí)數(shù)據(jù)分析2安裝Python的Anaconda發(fā)行版3JupyterNotebook常用功能4目前主流的數(shù)據(jù)分析語(yǔ)言主要有Python、R、MATLAB這3種。其中,Python具有豐富和強(qiáng)大的庫(kù),同時(shí)Python常被稱(chēng)為膠水語(yǔ)言,能夠?qū)⑹褂闷渌Z(yǔ)言制作的各種模塊(尤其是C/C++)輕松地連接在一起,是一門(mén)更易學(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)建用戶(hù)界面和連接其他編程語(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í)難易程度、使用場(chǎng)景、第三方支持、流行領(lǐng)域和軟件成本5方面比較了Python、R、MATLAB這3種數(shù)據(jù)分析工具。數(shù)據(jù)分析常用工具PythonRMATLAB語(yǔ)言學(xué)習(xí)難易程度接口統(tǒng)一,學(xué)習(xí)曲線(xiàn)平緩接口眾多,學(xué)習(xí)曲線(xiàn)陡峭自由度大,學(xué)習(xí)曲線(xiàn)較為平緩使用場(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ǔ)言擁有大量專(zhuān)業(yè)的工具箱,在新版本中加入了對(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)非常顯著的組織效益,并降低企業(yè)的運(yùn)營(yíng)成本。Python是一門(mén)膠水語(yǔ)言。Python程序能夠以多種方式輕易地與其他語(yǔ)言的組件“粘接”在一起。例如,Python的C語(yǔ)言API可以幫助Python程序靈活地調(diào)用C程序,這意味著用戶(hù)可以根據(jù)需要給Python程序添加功能或在其他環(huán)境系統(tǒng)中使用Python。Python數(shù)據(jù)分析的優(yōu)勢(shì)1.NumPyNumPy是NumericalPython的簡(jiǎn)稱(chēng),是一個(gè)Python科學(xué)計(jì)算的基礎(chǔ)包。NumPy主要提供了以下內(nèi)容??焖俑咝У亩嗑S數(shù)組對(duì)象ndarray。對(duì)數(shù)組執(zhí)行元素級(jí)計(jì)算和直接對(duì)數(shù)組執(zhí)行數(shù)學(xué)運(yùn)算的函數(shù)。讀/寫(xiě)硬盤(pán)上基于數(shù)組的數(shù)據(jù)集的工具。線(xiàn)性代數(shù)運(yùn)算、傅里葉變換和隨機(jī)數(shù)生成的功能。將C、C++、Fortran代碼集成到Python的工具。Python數(shù)據(jù)分析常用類(lèi)庫(kù)使用Python進(jìn)行數(shù)據(jù)分析時(shí)所用到的類(lèi)庫(kù)主要有NumPy、SciPy、pandas、Matplotlib、seaborn、pyecharts、scikit-learn等。除了為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)編寫(xiě)的庫(kù)可以直接操作NumPy數(shù)組中數(shù)據(jù),無(wú)須進(jìn)行任何數(shù)據(jù)復(fù)制工作。Python數(shù)據(jù)分析常用類(lèi)庫(kù)SciPy是基于Python的開(kāi)源代碼,是一組專(zhuān)門(mén)解決科學(xué)計(jì)算中各種標(biāo)準(zhǔn)問(wèn)題域的模塊的集合,特別是與NumPy、Matplotlib和pandas這些核心包一起使用時(shí)。SciPy主要包含了8個(gè)模塊,不同的模塊有不同的應(yīng)用,如用于插值、積分、優(yōu)化、處理圖像和特殊函數(shù)等。Python數(shù)據(jù)分析常用類(lèi)庫(kù)2.SciPy模塊名稱(chēng)簡(jiǎn)介egrate數(shù)值積分和微分方程求解器scipy.linalg擴(kuò)展了由numpy.linalg提供的線(xiàn)性代數(shù)求解和矩陣分解功能scipy.optimize函數(shù)優(yōu)化器(最小化器)以及根查找算法scipy.signal信號(hào)處理工具scipy.sparse稀疏矩陣和稀疏線(xiàn)性系統(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ù)與方法,以及各類(lèi)描述性統(tǒng)計(jì)的函數(shù)與方法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)。pandas兼具NumPy高性能的數(shù)組計(jì)算功能以及電子表格和關(guān)系型數(shù)據(jù)庫(kù)(如MySQL)靈活的數(shù)據(jù)處理功能。它提供了復(fù)雜精細(xì)的索引功能,以便完成重塑、切片與切塊、聚合和選取數(shù)據(jù)子集等操作。pandas將是本書(shū)中使用的主要工具。Python數(shù)據(jù)分析常用類(lèi)庫(kù)3.pandasMatplotlib是較為流行的用于繪制數(shù)據(jù)圖表的Python庫(kù),是Python的2D繪圖庫(kù)。Matplotlib最初由約翰·亨特(JohnD.Hunter,JDH)創(chuàng)建,目前由一個(gè)龐大的開(kāi)發(fā)團(tuán)隊(duì)維護(hù)。Matplotlib的操作比較容易,用戶(hù)只需用幾行代碼即可生成直方圖、功率譜圖、條形圖、錯(cuò)誤圖和散點(diǎn)圖等圖形。Matplotlib提供了pylab的模塊,其中包括了NumPy和pyplot中許多常用的函數(shù),方便用戶(hù)快速進(jìn)行計(jì)算和繪圖。Matplotlib與IPython的結(jié)合,提供了一種非常好用的交互式數(shù)據(jù)繪圖環(huán)境。繪制的圖表也是交互式的,讀者可以利用繪圖窗口中工具欄中的相應(yīng)工具放大圖表中的某個(gè)區(qū)域,或?qū)φ麄€(gè)圖表進(jìn)行平移瀏覽。Python數(shù)據(jù)分析常用類(lèi)庫(kù)4.Matplotlibseaborn是基于Matplotlib的圖形可視化Python庫(kù),它提供了一種高度交互式界面,便于用戶(hù)能夠做出各種有吸引力的統(tǒng)計(jì)圖表。seaborn是在Matplotlib的基礎(chǔ)上進(jìn)行了更高級(jí)的API封裝,使得作圖更加容易。seaborn不需要了解大量的底層代碼,即可使圖形變得精致。在大多數(shù)情況下,使用seaborn能做出很具有吸引力的圖,而使用Matplotlib能制作具有更多特色的圖。因此,可將seaborn視為Matplotlib的補(bǔ)充,而不是替代物。同時(shí),seaborn能高度兼容NumPy與pandas數(shù)據(jù)結(jié)構(gòu)以及scipy與statsmodels等統(tǒng)計(jì)模式,可以在很大程度上幫助用戶(hù)實(shí)現(xiàn)數(shù)據(jù)可視化。Python數(shù)據(jù)分析常用類(lèi)庫(kù)5.seabornEcharts是一個(gè)由百度開(kāi)源的數(shù)據(jù)可視化工具,憑借著良好的交互性,精巧的圖表設(shè)計(jì),得到了眾多開(kāi)發(fā)者的認(rèn)可。而Python是一門(mén)富有表達(dá)力的語(yǔ)言,很適合用于數(shù)據(jù)處理。pyecharts是Python與Echarts的結(jié)合。pyecharts可以展示動(dòng)態(tài)交互圖,對(duì)于展示數(shù)據(jù)更方便,當(dāng)鼠標(biāo)懸停在圖上時(shí),即可顯示數(shù)值、標(biāo)簽等。pyecharts支持主流Notebook環(huán)境,如JupyterNotebook、JupyterLab等;可輕松集成至Flask、Django等主流Web框架;高度靈活的配置項(xiàng),可輕松搭配出精美的圖表。pyecharts囊括了30多種常見(jiàn)圖表,如Bar(柱形圖/條形圖)、Boxplot(箱形圖)、Funnel(漏斗圖)、Gauge(儀表盤(pán))、Graph(關(guān)系圖)、HeatMap(熱力圖)、Radar(雷達(dá)圖)、Sankey(?;鶊D)、Scatter(散點(diǎn)圖)、WordCloud(詞云圖)等。Python數(shù)據(jù)分析常用類(lèi)庫(kù)6.pyechartsscikit-learn是一個(gè)簡(jiǎn)單有效的數(shù)據(jù)挖掘和數(shù)據(jù)分析工具,可以供用戶(hù)在各種環(huán)境下重復(fù)使用。scikit-learn建立在NumPy、SciPy和Matplotlib基礎(chǔ)之上,對(duì)一些常用的算法方法進(jìn)行了封裝。目前,scikit-learn的基本模塊主要有數(shù)據(jù)預(yù)處理、模型選擇、分類(lèi)、聚類(lèi)、數(shù)據(jù)降維和回歸6個(gè)。在數(shù)據(jù)量不大的情況下,scikit-learn可以解決大部分問(wèn)題。對(duì)算法不精通的用戶(hù)在執(zhí)行建模任務(wù)時(shí),并不需要自行編寫(xiě)所有的算法,只需要簡(jiǎn)單地調(diào)用scikit-learn庫(kù)里的模塊即可。Python數(shù)據(jù)分析常用類(lèi)庫(kù)7.scikit-learn1Python數(shù)據(jù)分析的工具目錄認(rèn)識(shí)數(shù)據(jù)分析2安裝Python的Anaconda發(fā)行版3JupyterNotebook常用功能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、SciPy、Matplotlib、seaborn、pyecharts、pandas、scikit-learn庫(kù),使得數(shù)據(jù)分析人員能夠更加順暢、專(zhuān)注地使用Python解決數(shù)據(jù)分析相關(guān)問(wèn)題。推薦數(shù)據(jù)分析初學(xué)者(尤其是Windows系統(tǒng)用戶(hù))安裝此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、Mac;支持Python2.7、3.5、3.6、3.7、3.8、3.9、3.10、3.11等版本,可自由切換。Python的Anaconda發(fā)行版進(jìn)入Anaconda官方網(wǎng)站,下載適合Windows系統(tǒng)的Anaconda安裝包(本書(shū)將使用Anaconda32024.02-1)。安裝Anaconda的具體步驟如下。雙擊已下載好的Anaconda安裝包,再單擊“Next”按鈕進(jìn)入下一步。在Windows系統(tǒng)中安裝Anaconda單擊“IAgree”按鈕,同意上述協(xié)議并進(jìn)入下一步。在Windows系統(tǒng)中安裝Anaconda選擇圖中“AllUsers(requiresadminprivileges)”單選按鈕,單擊“Next”進(jìn)入下一步。在Windows系統(tǒng)中安裝Anaconda單擊“Browse”按鈕,選擇在指定的路徑安裝Anaconda,選擇完成后單擊“Next”按鈕,進(jìn)入下一步。在Windows系統(tǒng)中安裝Anaconda3個(gè)復(fù)選框分別代表創(chuàng)建“開(kāi)始”菜單快捷方式、將Anaconda3注冊(cè)為系統(tǒng)Python3.11、清除包緩存。全部勾選后,單擊“Install”按鈕,等待安裝結(jié)束。在Windows系統(tǒng)中安裝Anaconda完成安裝后單擊“Next”按鈕進(jìn)入下一步。在Windows系統(tǒng)中安裝Anaconda完成安裝后單擊“Next”按鈕進(jìn)入下一步。單擊“Finish”按鈕,即可完成安裝。在Windows系統(tǒng)中安裝Anaconda1Python數(shù)據(jù)分析的工具目錄認(rèn)識(shí)數(shù)據(jù)分析2安裝Python的Anaconda發(fā)行版3JupyterNotebook常用功能4jupyterNotebook(此前被稱(chēng)為IPythonNotebook)是一個(gè)交互式筆記本,支持運(yùn)行40多種編程語(yǔ)言,其本質(zhì)上是一個(gè)支持實(shí)時(shí)代碼、數(shù)學(xué)方程、可視化和Markdown的Web應(yīng)用程序。對(duì)于數(shù)據(jù)分析,JupyterNotebook最大的優(yōu)點(diǎn)是可以重現(xiàn)整個(gè)分析過(guò)程,并將說(shuō)明文字、代碼、圖表、公式和結(jié)論都整合在一個(gè)文檔中。用戶(hù)可以通過(guò)電子郵件、Dropbox、GitHub和JupyterNotebookViewer將分析結(jié)果分享給其他人。Anaconda中除了內(nèi)置了JupyterNotebook之外,還內(nèi)置了Jupyterlab、Spyder等工具,讀者可根據(jù)自己的需求選擇合適的工具,本書(shū)將主要介紹JupyterNotebook的使用。JupyterNotebook常用功能
Anaconda安裝完成后,在系統(tǒng)環(huán)境變量中配置python.exe和Scripts。環(huán)境變量配置完成后,在Windows系統(tǒng)下的命令行指示符窗口中,即可啟動(dòng)JupyterNotebook。JupyterNotebook的基本功能1.啟動(dòng)JupyterNotebook打開(kāi)JupyterNotebook以后會(huì)在系統(tǒng)默認(rèn)的瀏覽器中出現(xiàn)右圖的界面。單擊右上方的“New”下拉按鈕,出現(xiàn)下拉列表。JupyterNotebook的基本功能2.新建一個(gè)Notebook
在“New”下拉列表中選擇需要?jiǎng)?chuàng)建的Notebook類(lèi)型。其中,“Notebook”表示新建Notebook類(lèi)型文件,“Terminal”表示打開(kāi)終端,“Console”表示打開(kāi)控制臺(tái),“NewFile”表示新建純文本文件,“NewFolder”表示新建文件夾。選擇“Notebook”選項(xiàng),進(jìn)入Python腳本編輯界面。JupyterNotebook的基本功能JupyterNotebook中的Notebook文檔由一系列單元(Cell)構(gòu)成,主要有以下兩種形式的單元,在JupyterNotebook中的形式。JupyterNotebook的基本功能3.JupyterNotebook的界面及其構(gòu)成代碼單元。代碼單元是讀者編寫(xiě)代碼的地方,通過(guò)按“Shift+Enter”組合鍵運(yùn)行代碼,其結(jié)果顯示在本單元下方。代碼單元左邊有“In[]:”編號(hào),方便使用者查看代碼的執(zhí)行次序。Markdown單元。Markdown單元可對(duì)文本進(jìn)行編輯,采用Markdown的語(yǔ)法規(guī)范,可以設(shè)置文本格式,插入鏈接、圖片甚至數(shù)學(xué)公式。同樣,按“Shift+Enter”組合鍵可運(yùn)行Markdown單元,顯示格式化的文本。JupyterNotebook的基本功能JupyterNotebook編輯界面類(lèi)似于Linux的VIM編輯器界面,在Notebook中也有兩種模式,其模式如下。編輯模式。用于編輯文本和代碼。選中單元并按“Enter”鍵進(jìn)入編輯模式,此時(shí)單元顯示藍(lán)色邊框。命令模式。用于執(zhí)行鍵盤(pán)輸入的快捷命令。通過(guò)按“Esc”鍵進(jìn)入命令模式,此時(shí)單元顯示灰色邊框。JupyterNotebook的基本功能
如果要使用快捷鍵,那么首先按“Esc”鍵進(jìn)入命令模式,然后按相應(yīng)的鍵實(shí)現(xiàn)對(duì)文檔的操作。例如,切換到代碼單元按“Y”鍵,切換到Markdown單元按“M”鍵,在本單元的下方增加一單元按“B”鍵,查看所有快捷命令按“Ctrl+Shift+H”鍵。JupyterNotebook的基本功能在JupyterNotebook中,可以使用Markdown進(jìn)行文本標(biāo)記,以便用戶(hù)查看。同時(shí)JupyterNotebook還可以將Notebook導(dǎo)出形成HTML、PDF等多種格式。Markdown是一種可以使用普通文本編輯器編寫(xiě)的標(biāo)記語(yǔ)言,通過(guò)簡(jiǎn)單的標(biāo)記語(yǔ)法,便可以使普通文本內(nèi)容具有一定的格式。JupyterNotebook的Markdown單元功能較多,下面將從標(biāo)題、列表、字體、表格和數(shù)學(xué)公式編輯5個(gè)方面進(jìn)行介紹。JupyterNotebook的高級(jí)功能1.Markdown標(biāo)題是標(biāo)明文章和作品等內(nèi)容的簡(jiǎn)短語(yǔ)句。讀者寫(xiě)報(bào)告或?qū)懻撐臅r(shí),標(biāo)題是不可或缺的,尤其是論文的章節(jié)等,需要使用不同級(jí)別的標(biāo)題。一般使用Markdown中的類(lèi)Atx形式進(jìn)行標(biāo)題的排版,在首行前加一個(gè)“#”字符代表一級(jí)標(biāo)題,加兩個(gè)“#”字符代表二級(jí)標(biāo)題,以此類(lèi)推。JupyterNotebook的高級(jí)功能(1)標(biāo)題列表是一種由數(shù)據(jù)項(xiàng)構(gòu)成的有限序列,即按照一定的線(xiàn)性順序排列而成的數(shù)據(jù)項(xiàng)的集合。列表通常分為無(wú)序列表和有序列表兩種類(lèi)型。無(wú)序列表使用一些圖標(biāo)進(jìn)行標(biāo)記,沒(méi)有序號(hào),也沒(méi)有特定的排列順序。而有序列表則使用數(shù)字進(jìn)行標(biāo)記,具有明確的排列順序。在Markdown中,無(wú)序列表可以通過(guò)星號(hào)、加號(hào)或減號(hào)來(lái)表示,有序列表可使用數(shù)字、“.”和“”(一個(gè)空格)表示。JupyterNotebook的高級(jí)功能(2)列表文檔中為了凸顯部分內(nèi)容,一般對(duì)文字使用加粗或斜體格式,使得該部分內(nèi)容變得更加醒目。對(duì)于Markdown排版工具而言,通常使用星號(hào)“*”和下劃線(xiàn)“_”作為標(biāo)記字詞的符號(hào)。前后有兩個(gè)星號(hào)或下劃線(xiàn)表示加粗,前后有3個(gè)星號(hào)或下劃線(xiàn)表示斜體。JupyterNotebook的高級(jí)功能(3)字體使用Markdown同樣也可以繪制表格。代碼的第一行表示表頭,第二行分隔表頭和主體部分,從第三行開(kāi)始,每一行代表一個(gè)表格行。列與列之間用符號(hào)“|”隔開(kāi),表格每一行的兩邊也要有符號(hào)“|”JupyterNotebook的高級(jí)功能(4)表格LaTeX是寫(xiě)科研論文的必備工具,不但能實(shí)現(xiàn)嚴(yán)格的文檔排版,而且能編輯復(fù)雜的數(shù)學(xué)公式。在JupyterNotebook的Markdown單元中也可以使用LaTeX來(lái)插入數(shù)學(xué)公式。在文本行中插入數(shù)學(xué)公式,應(yīng)使用兩個(gè)“$”符號(hào),如質(zhì)能方程“$E=mc^2$”。如果要插入一個(gè)數(shù)學(xué)區(qū)塊,那么使用兩個(gè)“$$”符號(hào),如使用“$$z=\frac{x}{y}$$”表示式。JupyterNotebook的高級(jí)功能(5)數(shù)學(xué)公式編輯Notebook還有一個(gè)強(qiáng)大的特性,就是導(dǎo)出功能,可以將Notebook導(dǎo)出為多種格式,如HTML、Markdown、PDF等格式。其中,導(dǎo)出為PDF格式的文件,可以讓讀者不用寫(xiě)LaTeX即可創(chuàng)建漂亮的PDF文檔。讀者還可以將Notebook作為網(wǎng)頁(yè)發(fā)布在自己的網(wǎng)站上。導(dǎo)出功能可以依次選擇“File”→“SaveandExportNotebookAs”菜單中的命令實(shí)現(xiàn)。JupyterNotebook的高級(jí)功能2.導(dǎo)出功能本章主要介紹了數(shù)據(jù)分析的概念、流程、應(yīng)用場(chǎng)景和常用工具,闡述了使用Python進(jìn)行數(shù)據(jù)分析的優(yōu)勢(shì),列舉說(shuō)明了Python數(shù)據(jù)分析重要類(lèi)庫(kù)的功能。緊接著闡述了Anaconda的特點(diǎn),實(shí)現(xiàn)了在Windows系統(tǒng)中安裝Anaconda數(shù)據(jù)分析環(huán)境。最后介紹了Python數(shù)據(jù)分析工具JupyterNotebook的常用功能。小結(jié)糧食產(chǎn)量分析——
NumPy數(shù)組計(jì)算基礎(chǔ)1分析糧食產(chǎn)量增長(zhǎng)情況目錄創(chuàng)建糧食產(chǎn)量數(shù)據(jù)2對(duì)糧食產(chǎn)量進(jìn)行統(tǒng)計(jì)分析3任務(wù)描述創(chuàng)建糧食產(chǎn)量數(shù)據(jù)的數(shù)組對(duì)象,分析糧食產(chǎn)量的基本情況,對(duì)糧食產(chǎn)量的進(jìn)行一定的了解。2014年~2023年的糧食產(chǎn)量數(shù)據(jù)如下表。
創(chuàng)建糧食產(chǎn)量數(shù)據(jù)年份糧食產(chǎn)量/萬(wàn)噸2023年695412022年68652.772021年68284.752020年66949.152019年66384.34年份糧食產(chǎn)量/萬(wàn)噸2018年65789.222017年66160.732016年66043.512015年66060.272014年63964.83任務(wù)分析(1)使用NumPy數(shù)創(chuàng)建兩個(gè)一維數(shù)組,分別用于存儲(chǔ)年份數(shù)據(jù)和糧食產(chǎn)量數(shù)據(jù)。(2)創(chuàng)建與產(chǎn)量數(shù)據(jù)數(shù)組長(zhǎng)度相同的數(shù)組,模擬特定年份的糧食作物播種面積數(shù)據(jù)。(3)將數(shù)組轉(zhuǎn)換為二維數(shù)組,以便進(jìn)行更靈活的操作。創(chuàng)建糧食產(chǎn)量數(shù)據(jù)NumPy提供了兩種基本的對(duì)象。ndarray(N-dimensionalArrayObject):存儲(chǔ)單一數(shù)據(jù)類(lèi)型的多維數(shù)組。ufunc(UniversalFunctionObject):能夠?qū)?shù)組進(jìn)行處理的函數(shù)。創(chuàng)建數(shù)組對(duì)象在創(chuàng)建數(shù)組之前,需要先了解數(shù)組的基本屬性,數(shù)組的屬性及其說(shuō)明如下表。創(chuàng)建數(shù)組對(duì)象1.數(shù)組屬性屬性名稱(chēng)屬性說(shuō)明ndim返回int,表示數(shù)組的維數(shù)shape返回tuple,表示數(shù)組形狀的陣列,對(duì)于n行m列的矩陣,形狀為(n,m)size返回int,表示數(shù)組的元素總數(shù),等于數(shù)組形狀中各元素的乘積dtype返回data-type,表示數(shù)組中元素的數(shù)據(jù)類(lèi)型itemsize返回int,表示數(shù)組的每個(gè)元素的存儲(chǔ)空間(以字節(jié)為單位),例如,一個(gè)元素類(lèi)型為float64的數(shù)組的itemsiz屬性值為8(float64占用64個(gè)bits,每個(gè)字節(jié)長(zhǎng)度為8,所以64/8,占用8個(gè)字節(jié)),一個(gè)元素類(lèi)型為complex32的數(shù)組的itemsiz屬性值為4,即32/8NumPy提供的array函數(shù)可以創(chuàng)建一維或多維數(shù)組,其基本使用格式如下。array函數(shù)主要參數(shù)及其說(shuō)明如下表。創(chuàng)建數(shù)組對(duì)象2.數(shù)組創(chuàng)建參數(shù)名稱(chēng)參數(shù)說(shuō)明object接收array_like,表示所需創(chuàng)建的數(shù)組對(duì)象,無(wú)默認(rèn)值dtype接收data-type,表示數(shù)組所需的數(shù)據(jù)類(lèi)型,如果未給定,那么選擇保存對(duì)象所需的最小的數(shù)據(jù)類(lèi)型,默認(rèn)為Nonendmin接收int,表示指定生成數(shù)組應(yīng)該具有的最小維數(shù),默認(rèn)為0numpy.array(object,dtype=None,*,copy=True,order='K',subok=False,ndmin=0,like=None)除了使用array函數(shù)創(chuàng)建數(shù)組之外,還可以使用arange函數(shù)創(chuàng)建數(shù)組。arange函數(shù)類(lèi)似于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ù)名稱(chēng)參數(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ù)類(lèi)型,表示輸出數(shù)組的類(lèi)型,默認(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ù)名稱(chēng)參數(shù)說(shuō)明start接收array_like,表示起始值,無(wú)默認(rèn)值stop接收array_like,表示結(jié)束值,無(wú)默認(rèn)值num接收int,表示生成的樣本數(shù),默認(rèn)為50dtype接收數(shù)據(jù)類(lèi)型,表示輸出數(shù)組的類(lèi)型,默認(rèn)為Nonenumpy.linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None,axis=0)logspace函數(shù)和linspace函數(shù)類(lèi)似,它創(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、eye、diag和ones函數(shù)等。zeros函數(shù):用于創(chuàng)建值全部為0的數(shù)組,即創(chuàng)建的數(shù)組值全部填充為0。eye函數(shù):用于生成主對(duì)角線(xiàn)上的元素為1,其他的元素為0的二維數(shù)組,類(lèi)似單位矩陣。diag函數(shù):創(chuàng)建類(lèi)似對(duì)角矩陣的數(shù)組,即除對(duì)角線(xiàn)上的元素以外的其他元素都為0,對(duì)角線(xiàn)上的元素可以是0或其他值。ones函數(shù):用于創(chuàng)建元素全部為1的數(shù)組,即創(chuàng)建的數(shù)組元素全部填充為1。創(chuàng)建數(shù)組對(duì)象在實(shí)際的業(yè)務(wù)數(shù)據(jù)處理中,為了更準(zhǔn)確地計(jì)算結(jié)果,提高分析質(zhì)量,推動(dòng)高質(zhì)量發(fā)展,需要使用不同精度的數(shù)據(jù)類(lèi)型。NumPy極大程度地?cái)U(kuò)充了原生Python的數(shù)據(jù)類(lèi)型。在NumPy中,所有數(shù)組的數(shù)據(jù)類(lèi)型是同質(zhì)的,即數(shù)組中的所有元素的數(shù)據(jù)類(lèi)型必須是一致的。將元素?cái)?shù)據(jù)類(lèi)型保持一致可以更容易確定該數(shù)組所需要的存儲(chǔ)空間。創(chuàng)建數(shù)組對(duì)象3.數(shù)組數(shù)據(jù)類(lèi)型NumPy的基本數(shù)據(jù)類(lèi)型及其取值范圍如下表。創(chuàng)建數(shù)組對(duì)象類(lèi)型描述bool用一位存儲(chǔ)的布爾類(lèi)型(值為T(mén)rue或False)int_由所在平臺(tái)決定其精度的整數(shù)(一般為int32或int64)int8整數(shù),范圍為
128~127int16整數(shù),范圍為
32768~32767int32整數(shù),范圍為
231~231
1int64整數(shù),范圍為
263~263
1uint8無(wú)符號(hào)整數(shù),范圍為0~255uint16無(wú)符號(hào)整數(shù),范圍為0~65535uint32無(wú)符號(hào)整數(shù),范圍為0~232
1NumPy的基本數(shù)據(jù)類(lèi)型及其取值范圍(續(xù)表)。創(chuàng)建數(shù)組對(duì)象類(lèi)型描述uint64無(wú)符號(hào)整數(shù),范圍為0~264
1float16半精度浮點(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í)部和虛部手動(dòng)創(chuàng)建數(shù)組往往很難達(dá)到數(shù)量要求,NumPy提供了強(qiáng)大的生成隨機(jī)數(shù)的功能。然而,真正的隨機(jī)數(shù)很難獲得,在實(shí)際中使用的都是偽隨機(jī)數(shù)。在大部分情況下,偽隨機(jī)數(shù)就能滿(mǎn)足獲取的需求。當(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è)Python浮點(diǎn)數(shù),無(wú)默認(rèn)值。randn函數(shù)可以生成服從正態(tài)分布的隨機(jī)數(shù),randn函數(shù)的使用格式和參數(shù)說(shuō)明與rand函數(shù)類(lèi)似。生成隨機(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ù)名稱(chēng)參數(shù)說(shuō)明low接收int或類(lèi)似數(shù)組的整數(shù)。表示數(shù)組最小值。無(wú)默認(rèn)值high接收int或類(lèi)似數(shù)組的整數(shù)。表示數(shù)組最大值。默認(rèn)Nonesize接收int或整數(shù)元組。表示輸出數(shù)組的形狀。默認(rèn)為Nonedtype接收數(shù)據(jù)類(lèi)型。表示輸出數(shù)組的類(lèi)型。默認(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)生均勻分布的隨機(jī)數(shù)NumPy通常以提供高效率的數(shù)組著稱(chēng),這主要?dú)w功于索引的易用性。1.一維數(shù)組的索引一維數(shù)組的索引方法很簡(jiǎn)單,與Python中的list的索引方法一致。2.多維數(shù)組的索引多維數(shù)組的每一個(gè)維度都有一個(gè)索引,各個(gè)維度的索引之間用逗號(hào)隔開(kāi)。多維數(shù)組同樣也可以使用整數(shù)序列和布爾值索引進(jìn)行訪(fǎng)問(wèn)。通過(guò)索引訪(fǎng)問(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ō)明如下表。在NumPy中,可以使用ravel函數(shù)完成數(shù)組展平工作。flatten函數(shù)也可以完成數(shù)組展平工作。與ravel函數(shù)的區(qū)別在于,flatten函數(shù)可以選擇橫向或縱向展平。變換數(shù)組的形態(tài)參數(shù)名稱(chēng)參數(shù)說(shuō)明a接收array_like。表示需要變換形狀的數(shù)組。無(wú)默認(rèn)值newshape接收int或int型元組。表示變化后的形狀的維度。無(wú)默認(rèn)值除了可以改變數(shù)組“形狀”外,NumPy也可以對(duì)數(shù)組進(jìn)行組合。組合主要有橫向組合與縱向組合。使用hstack函數(shù)、vstack函數(shù)和concatenate函數(shù)可完成數(shù)組的組合。橫向組合是將由ndarray對(duì)象構(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、split函數(shù),可以將數(shù)組分割成相同大小的子數(shù)組,也可以指定原數(shù)組中需要分割的位置。hsplit函數(shù):可以對(duì)數(shù)組進(jìn)行橫向分割,以由ndarray對(duì)象構(gòu)成的元組作為參數(shù)。vsplit函數(shù):可以對(duì)數(shù)組進(jìn)行縱向分割,以由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分析糧食產(chǎn)量增長(zhǎng)情況目錄創(chuàng)建糧食產(chǎn)量數(shù)據(jù)2對(duì)糧食產(chǎn)量進(jìn)行統(tǒng)計(jì)分析3任務(wù)描述基于糧食產(chǎn)量數(shù)據(jù)表的糧食產(chǎn)量數(shù)據(jù),計(jì)算糧食產(chǎn)量的年增長(zhǎng)量,分析糧食產(chǎn)量增長(zhǎng)情況。任務(wù)分析(1)使用NumPy創(chuàng)建包含糧食產(chǎn)量數(shù)據(jù)的矩陣。(2)使用ufunc函數(shù)對(duì)矩陣進(jìn)行操作,計(jì)算每年糧食產(chǎn)量的增長(zhǎng)量。分析糧食產(chǎn)量增長(zhǎng)情況在NumPy中,矩陣是ndarray的子類(lèi),且數(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)建矩陣。創(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函數(shù)等價(jià)。在大多數(shù)情況下,用戶(hù)會(huì)根據(jù)小的矩陣來(lái)創(chuàng)建大的矩陣,即將小矩陣組合成大矩陣。在NumPy中,可以使用bmat分塊矩陣(blockmatrix)函數(shù)實(shí)現(xiàn)。在NumPy中,矩陣運(yùn)算是針對(duì)整個(gè)矩陣中的每個(gè)元素進(jìn)行的。與使用for循環(huán)相比,其在運(yùn)算速度上更快。創(chuàng)建NumPy矩陣除了能夠?qū)崿F(xiàn)各類(lèi)運(yùn)算外,矩陣還有其特有的屬性,如下表。創(chuàng)建NumPy矩陣屬性名稱(chēng)屬性說(shuō)明T返回自身的轉(zhuǎn)置矩陣H返回自身的共軛轉(zhuǎn)置矩陣I返回自身的逆矩陣A返回自身數(shù)據(jù)的二維數(shù)組常用的ufunc函數(shù)運(yùn)算有四則運(yùn)算、比較運(yùn)算和邏輯運(yùn)算等。四則運(yùn)算:ufunc函數(shù)支持全部的四則運(yùn)算,并且保留習(xí)慣的運(yùn)算符,和數(shù)值運(yùn)算的使用方式一樣,但是需要注意的是,ufunc函數(shù)操作的對(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.all函數(shù)用于測(cè)試所有數(shù)組元素的計(jì)算結(jié)果是否為T(mén)rue,numpy.any函數(shù)用于測(cè)試任何數(shù)組元素的計(jì)算結(jié)果是否為T(mén)rue。ufunc函數(shù)1.常用的ufunc函數(shù)運(yùn)算廣播(Broadcasting)機(jī)制是指不同形狀的數(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在各個(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分析糧食產(chǎn)量增長(zhǎng)情況目錄創(chuàng)建糧食產(chǎn)量數(shù)據(jù)2對(duì)糧食產(chǎn)量進(jìn)行統(tǒng)計(jì)分析3任務(wù)描述對(duì)糧食產(chǎn)量年度數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析,更好地把握我國(guó)糧食生產(chǎn)的現(xiàn)狀和未來(lái)發(fā)展趨勢(shì),為農(nóng)業(yè)生產(chǎn)的可持續(xù)發(fā)展提供科學(xué)依據(jù)。部分糧食產(chǎn)量年度如下表。對(duì)糧食產(chǎn)量進(jìn)行統(tǒng)計(jì)分析年份糧食產(chǎn)量/萬(wàn)噸谷物產(chǎn)量/萬(wàn)噸稻谷產(chǎn)量/萬(wàn)噸……2023年695416414320660.3……2022年68652.7763324.3420849.48……2021年68284.7563275.6921284.24……2020年66949.1561674.2821185.96……2019年66384.3461369.7320961.4……2018年65789.2261003.5821212.9……任務(wù)分析(1)使用NumPy讀取糧食產(chǎn)量年度數(shù)據(jù).CSV文件。(2)計(jì)算2014年~2023年的糧食產(chǎn)量標(biāo)準(zhǔn)差,并統(tǒng)計(jì)產(chǎn)量超過(guò)平均值的年份數(shù)量,找出產(chǎn)量最高和最低的年份。對(duì)糧食產(chǎn)量進(jìn)行統(tǒng)計(jì)分析NumPy的文件讀/寫(xiě)主要有二進(jìn)制的文件讀/寫(xiě)和文本文件讀/寫(xiě)兩種形式。NumPy提供了若干函數(shù),可以將結(jié)果保存到二進(jìn)制或文本文件中。除此之外,NumPy還提供了許多從文件讀取數(shù)據(jù)并將其轉(zhuǎn)換為數(shù)組的方法。讀/寫(xiě)文件save函數(shù)以二進(jìn)制的格式保存數(shù)據(jù),load函數(shù)從二進(jìn)制的文件中讀取數(shù)據(jù),save函數(shù)的語(yǔ)法格式如下。參數(shù)file接收str,表示要保存的文件的名稱(chēng),需要指定文件保存的路徑,如果未設(shè)置,那么將會(huì)保存到默認(rèn)路徑下面。參數(shù)arr接收array_like,表示需要保存的數(shù)組。save函數(shù)就是將數(shù)組arr保存至名稱(chēng)為“file”的文件中,其文件的擴(kuò)展名.npy是系統(tǒng)自動(dòng)添加的。如果將多個(gè)數(shù)組保存到一個(gè)文件中,那么可以使用savez函數(shù),其文件的擴(kuò)展名為.npz。當(dāng)需要讀取二進(jìn)制文件時(shí),可以使用load函數(shù),用文件名作為參數(shù),存儲(chǔ)時(shí)可以省略擴(kuò)展名,但讀取時(shí)不能省略擴(kuò)展名。讀/寫(xiě)文件numpy.save(file,arr,allow_pickle=True,fix_imports=True)在實(shí)際的數(shù)據(jù)分析任務(wù)中,更多地是使用文本格式的數(shù)據(jù),如TXT或CSV格式,因此通常會(huì)使用savetxt函數(shù)、loadtxt函數(shù)和genfromtxt函數(shù)執(zhí)行對(duì)文本格式數(shù)據(jù)的讀取任務(wù)。savetxt函數(shù)可將數(shù)組寫(xiě)到以某種分隔符隔開(kāi)的文本文件中,其基本使用格式如下。參數(shù)fname接收str,表示文件名。參數(shù)X接收array_like,表示數(shù)組數(shù)據(jù)。參數(shù)delimiter接收str,表示數(shù)據(jù)分隔符。讀/寫(xiě)文件numpy.savetxt(fname,X,fmt='%.18e',delimiter='',newline='\n',header='',footer='',comments='#',encoding=None)loadtxt函數(shù)執(zhí)行的是相反的操作,即將文件加載到一個(gè)二維數(shù)組中,其基本使用格式如下。loadtxt函數(shù)的常用參數(shù)主要有兩個(gè),分別是fname和delimiter。參數(shù)fname接收str,表示需要讀取的文件或生成器。參數(shù)delimiter接收str,表示用于分隔數(shù)值的分隔符。讀/寫(xiě)文件numpy.loadtxt(fname,dtype=<class'float'>,comments='#',delimiter=None,converters=None,skiprows=0,usecols=None,unpack=False,ndmin=0,encoding='bytes',max_rows=None,*,quotechar=None,like=None)genfromtxt函數(shù)和loadtxt函數(shù)相似,只不過(guò)genfromtxt函數(shù)面向的是結(jié)構(gòu)化數(shù)組和缺失數(shù)據(jù)。genfromtxt函數(shù)通常使用的參數(shù)有3個(gè)。即用于存放數(shù)據(jù)的文件參數(shù)“fname”。用于分隔數(shù)據(jù)的字符參數(shù)“delimiter”。是否含有列標(biāo)題參數(shù)“names”。讀/寫(xiě)文件在NumPy中,除了可以使用通用函數(shù)對(duì)數(shù)組進(jìn)行比較、邏輯等運(yùn)算之外,還可以使用統(tǒng)計(jì)函數(shù)對(duì)數(shù)組進(jìn)行排序、去重與重復(fù)、求最大和最小值以及求均值等統(tǒng)計(jì)分析。1.排序NumPy的排序方式主要可以概括為直接排序和間接排序兩種。直接排序指對(duì)數(shù)值直接進(jìn)行排序;間接排序是指根據(jù)一個(gè)或多個(gè)鍵對(duì)數(shù)據(jù)集進(jìn)行排序。在NumPy中,直接排序通常是使用sort函數(shù),間接排序通常是使用argsort函數(shù)和lexsort函數(shù)。使用函數(shù)進(jìn)行簡(jiǎn)單的統(tǒng)計(jì)分析sort函數(shù)是較為常用的排序方法,無(wú)返回值。如果目標(biāo)數(shù)據(jù)是一個(gè)視圖,那么原始數(shù)據(jù)將會(huì)被修改。當(dāng)使用sort函數(shù)排序時(shí),用戶(hù)可以指定一個(gè)axis參數(shù),使得sort函數(shù)可以沿著指定軸對(duì)數(shù)據(jù)集進(jìn)行排序。使用argsort函數(shù)和lexsort函數(shù),可以在給定一個(gè)或多個(gè)鍵時(shí),得到一個(gè)由整數(shù)構(gòu)成的索引數(shù)組,索引表示數(shù)據(jù)在新的序列中的位置。lexsort函數(shù)可以一次性對(duì)滿(mǎn)足多個(gè)鍵的數(shù)組執(zhí)行間接排序。使用函數(shù)進(jìn)行簡(jiǎn)單的統(tǒng)計(jì)分析在統(tǒng)計(jì)分析的工作中,難免會(huì)出現(xiàn)“臟”數(shù)據(jù)的情況。重復(fù)數(shù)據(jù)就是“臟”數(shù)據(jù)的情況之一。如果一個(gè)一個(gè)地手動(dòng)刪除,那么將會(huì)耗時(shí)費(fèi)力且效率低。在NumPy中,可以通過(guò)unique函數(shù)查找出數(shù)組中的唯一值并返回已排序的結(jié)果。另一種情況,在統(tǒng)計(jì)分析中也經(jīng)常遇到,即需要將一個(gè)數(shù)據(jù)重復(fù)若干次。在NumPy中主要使用tile函數(shù)和repeat函數(shù)實(shí)現(xiàn)數(shù)據(jù)重復(fù)。使用函數(shù)進(jìn)行簡(jiǎn)單的統(tǒng)計(jì)分析2.去重與重復(fù)數(shù)據(jù)tile函數(shù)的基本使用格式如下。tile函數(shù)主要有兩個(gè)參數(shù)。參數(shù)A接收array_like,表示輸入的數(shù)組。參數(shù)reps接收array_like,表示指定數(shù)組的重復(fù)次數(shù)。使用函數(shù)進(jìn)行簡(jiǎn)單的統(tǒng)計(jì)分析numpy.tile(A,reps)repeat函數(shù)的基本使用格式如下。repeat函數(shù)主要有3個(gè)參數(shù)。參數(shù)a接收array_like,表示輸入的數(shù)組。參數(shù)repeats接收int或整數(shù)的數(shù)組,表示每個(gè)元素的重復(fù)次數(shù)。參數(shù)axis接收int,表示用于指定沿著哪個(gè)軸進(jìn)行重復(fù)。tile函數(shù)和repeat函數(shù)的主要區(qū)別在于,tile函數(shù)是對(duì)數(shù)組進(jìn)行重復(fù)操作,repeat函數(shù)是對(duì)數(shù)組中的每個(gè)元素進(jìn)行重復(fù)操作。使用函數(shù)進(jìn)行簡(jiǎn)單的統(tǒng)計(jì)分析numpy.repeat(a,repeats,axis=None)在NumPy中,有許多可以用于統(tǒng)計(jì)分析的函數(shù)。常見(jiàn)的統(tǒng)計(jì)函數(shù)有sum、mean、std、var、min、max、argmin和argmax等。幾乎所有的統(tǒng)計(jì)函數(shù)在針對(duì)二維數(shù)組計(jì)算的時(shí)候都需要注意軸的概念。當(dāng)axis參數(shù)為0時(shí),表示沿著縱軸進(jìn)行計(jì)算;當(dāng)axis為1時(shí),表示沿著橫軸進(jìn)行計(jì)算。默認(rèn)情況下,函數(shù)并不按照任一軸向計(jì)算,而是計(jì)算一個(gè)總值。聚合計(jì)算將直接顯示計(jì)算的最終結(jié)果,在NumPy中,cumsum函數(shù)和cumprod函數(shù)采用不聚合計(jì)算,產(chǎn)生一個(gè)由中間結(jié)果組成的數(shù)組。使用函數(shù)進(jìn)行簡(jiǎn)單的統(tǒng)計(jì)分析3.常用的統(tǒng)計(jì)函數(shù)本章主要介紹了NumPy數(shù)組對(duì)象ndarray的創(chuàng)建、生成隨機(jī)數(shù)的方法、數(shù)組的訪(fǎng)問(wèn)和數(shù)組形態(tài)的變換方法。同時(shí)還介紹了矩陣的創(chuàng)建方法、使用通用函數(shù)對(duì)數(shù)組進(jìn)行計(jì)算。最后介紹了利用NumPy讀/寫(xiě)文件以及進(jìn)行統(tǒng)計(jì)分析的常用函數(shù),為后面真正進(jìn)入數(shù)據(jù)分析課程內(nèi)容的學(xué)習(xí)和學(xué)習(xí)其他數(shù)據(jù)分析庫(kù)(如pandas)打下堅(jiān)實(shí)的基礎(chǔ)。小結(jié)工業(yè)產(chǎn)品產(chǎn)量統(tǒng)計(jì)分析——pandas統(tǒng)計(jì)分析基礎(chǔ)1分析工業(yè)產(chǎn)品產(chǎn)量數(shù)據(jù)的基本情況目錄讀取工業(yè)產(chǎn)品產(chǎn)量數(shù)據(jù)2分析一定時(shí)間周期內(nèi)工業(yè)產(chǎn)品產(chǎn)量變化情況3工業(yè)產(chǎn)品產(chǎn)量數(shù)據(jù)統(tǒng)計(jì)分析4任務(wù)描述自2008年至2023年,中國(guó)工業(yè)產(chǎn)品產(chǎn)量經(jīng)歷了持續(xù)增長(zhǎng)和變化,加快建設(shè)制造強(qiáng)國(guó),反映了中國(guó)工業(yè)部門(mén)的發(fā)展與變革。隨著中國(guó)經(jīng)濟(jì)的快速發(fā)展和工業(yè)化進(jìn)程的推進(jìn),工業(yè)產(chǎn)品產(chǎn)量數(shù)據(jù)成為了評(píng)估和監(jiān)測(cè)中國(guó)工業(yè)經(jīng)濟(jì)狀況的重要指標(biāo)之一。讀取如右表(部分)的工業(yè)產(chǎn)品產(chǎn)量數(shù)據(jù),以便于后續(xù)進(jìn)行進(jìn)一步的分析。任務(wù)分析使用pandas庫(kù)讀取存儲(chǔ)工業(yè)產(chǎn)品產(chǎn)量數(shù)據(jù)文件。讀取工業(yè)產(chǎn)品產(chǎn)量數(shù)據(jù)工業(yè)產(chǎn)品名稱(chēng)時(shí)間產(chǎn)量原煤產(chǎn)量當(dāng)期值/萬(wàn)噸2023年12月41430.7原油產(chǎn)量當(dāng)期/萬(wàn)噸2023年12月1764.7天然氣產(chǎn)量當(dāng)期/億立方米2023年12月208.6原鹽產(chǎn)量當(dāng)期/萬(wàn)噸2023年12月401.7精制食用植物油產(chǎn)量當(dāng)期/萬(wàn)噸2023年12月497.3成品糖產(chǎn)量當(dāng)期/萬(wàn)噸2023年12月270.8啤酒產(chǎn)量當(dāng)期/萬(wàn)千升2023年12月214.8pandas是Python的核心數(shù)據(jù)分析支持庫(kù),提供了快速、靈活、明確的數(shù)據(jù)結(jié)構(gòu),旨在簡(jiǎn)單、直觀地處理關(guān)系型、標(biāo)記型數(shù)據(jù)。pandas建造在NumPy之上,所以使得pandas在以NumPy為中心的應(yīng)用中得以容易的使用,而pandas庫(kù)在與其它第三方科學(xué)計(jì)算支持庫(kù)結(jié)合時(shí)也能夠完美的進(jìn)行集成。在Python中,pandas庫(kù)的功能十分強(qiáng)大,它可提供高性能的矩陣運(yùn)算??捎糜跀?shù)據(jù)挖掘和數(shù)據(jù)分析,同時(shí)也提供數(shù)據(jù)清洗功能;支持類(lèi)似SQL的數(shù)據(jù)增、刪、查、改等操作,并且?guī)в胸S富的數(shù)據(jù)處理函數(shù);支持時(shí)間序列數(shù)據(jù)分析功能;支持靈活處理缺失數(shù)據(jù)等。認(rèn)識(shí)pandas庫(kù)pandas有兩個(gè)強(qiáng)大的利器。Series(一維數(shù)據(jù))是一種類(lèi)似于一維數(shù)組的對(duì)象,是由一組數(shù)據(jù)(各種NumPy數(shù)據(jù)類(lèi)型)以及一組與之相關(guān)的數(shù)據(jù)標(biāo)簽(即索引)組成,而僅由一組數(shù)據(jù)也可產(chǎn)生簡(jiǎn)單的Series對(duì)象。DataFrame是pandas中的一個(gè)表格型的數(shù)據(jù)結(jié)構(gòu),包含有一組有序的列,每列可以是不同的值類(lèi)型(數(shù)值、字符串、布爾型等),DataFrame既有行索引也有列索引,可以被看做是由Series組成的字典。認(rèn)識(shí)pandas庫(kù)文本文件是一種由若干行字符構(gòu)成的計(jì)算機(jī)文件,它是一種典型的順序文件。CSV是一種用分隔符分隔的文件格式,因?yàn)槠浞指舴灰欢ㄊ嵌禾?hào),所以又被稱(chēng)為字符分隔文件。文本文件以純文本形式存儲(chǔ)表格數(shù)據(jù)(數(shù)字和文本),它是一種通用、相對(duì)簡(jiǎn)單的文件格式,較廣泛地應(yīng)用是在程序之間轉(zhuǎn)移表格數(shù)據(jù),而這些程序本身是在其他程序不兼容的格式上進(jìn)行操作的(往往是私有的、無(wú)通用規(guī)范的格式)。大量程序都支持CSV或其變體,所以CSV或其變體可以作為大多數(shù)程序的輸入和輸出格式。讀/寫(xiě)文本文件CSV文件根據(jù)其定義也是一種文本文件。在數(shù)據(jù)讀取過(guò)程中可以使用文本文件的讀取函數(shù)對(duì)CSV文件進(jìn)行讀取。同時(shí),如果文本文件是字符分隔文件,那么可以使用讀取CSV文件的函數(shù)進(jìn)行讀取。pandas提供了read_table()函數(shù)讀取文本文件,提供了read_csv()函數(shù)讀取CSV文件。讀/寫(xiě)文本文件1.文本文件讀取read_table()函數(shù)和read_csv()函數(shù)具有許多參數(shù),如果有多個(gè)<expression>,那么表達(dá)式之間用逗號(hào)隔開(kāi),基本使用格式如下。讀/寫(xiě)文本文件pandas.read_table(filepath_or_buffer,*,sep=_NoDefault.no_default,delimiter=None,header='infer',names=_NoDefault.no_default,index_col=None,usecols=None,dtype=None,engine=None,converters=None,true_values=None,false_values=None,skipinitialspace=False,skiprows=None,skipfooter=0,nrows=None,na_values=None,keep_default_na=True,na_filter=True,verbose=_NoDefault.no_default,skip_blank_lines=True,parse_dates=False,infer_datetime_format=_NoDefault.no_default,keep_date_col=_NoDefault.no_default,date_parser=_NoDefault.no_default,date_format=None,dayfirst=False,cache_dates=True,iterator=False,chunksize=None,compression='infer',thousands=None,decimal='.',lineterminator=None,quotechar='"',quoting=0,doublequote=True,escapechar=None,comment=None,encoding=None,encoding_errors='strict',dialect=None,on_bad_lines='error',delim_whitespace=_NoDefault.no_default,low_memory=True,memory_map=False,float_precision=None,storage_options=None,dtype_backend=_NoDefault.no_default)讀/寫(xiě)文本文件pandas.read_csv(filepath_or_buffer,*,sep=_NoDefault.no_default,delimiter=None,header='infer',names=_NoDefault.no_default,index_col=None,usecols=None,dtype=None,engine=None,converters=None,true_values=None,false_values=None,skipinitialspace=False,skiprows=None,skipfooter=0,nrows=None,na_values=None,keep_default_na=True,na_filter=True,verbose=_NoDefault.no_default,skip_blank_lines=True,parse_dates=None,infer_datetime_format=_NoDefault.no_default,keep_date_col=_NoDefault.no_default,date_parser=_NoDefault.no_default,date_format=None,dayfirst=False,cache_dates=True,iterator=False,chunksize=None,compression='infer',thousands=None,decimal='.',lineterminator=None,quotechar='"',quoting=0,doublequote=True,escapechar=None,comment=None,encoding=None,encoding_errors='strict',dialect=None,on_bad_lines='error',delim_whitespace=_NoDefault.no_default,low_memory=True,memory_map=False,float_precision=None,storage_options=None,dtype_backend=_NoDefault.no_default)read_table()函數(shù)和read_csv()函數(shù)的多數(shù)參數(shù)相同,它們的常用參數(shù)及其說(shuō)明如下表。讀/寫(xiě)文本文件參數(shù)名稱(chēng)參數(shù)說(shuō)明filepath_or_buffer接收str。表示文件路徑。無(wú)默認(rèn)值sep接收str。表示分隔符。read_csv函數(shù)默認(rèn)為“,”,read_table函數(shù)默認(rèn)為制表符“Tab”header接收int或列表形式的int。表示將某行數(shù)據(jù)作為列名。默認(rèn)為infernames接收array。表示列名。無(wú)默認(rèn)值index_col接收int、sequence或False。表示索引列的位置,取
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 商業(yè)公司績(jī)效管理制度
- 路面機(jī)械改裝方案(3篇)
- 加固材料招商方案(3篇)
- 水費(fèi)支付優(yōu)惠方案(3篇)
- 公司活動(dòng)場(chǎng)地設(shè)置方案(3篇)
- 自己裝修家居方案(3篇)
- 商貿(mào)領(lǐng)域犯罪方案(3篇)
- 公司外包合同協(xié)議書(shū)
- 元旦團(tuán)建活動(dòng)方案(3篇)
- 婚慶轎車(chē)運(yùn)營(yíng)方案(3篇)
- 社工招聘筆試考試試題及答案
- 合作協(xié)議(國(guó)外開(kāi)礦甲乙雙方合同范本)
- 線(xiàn)性代數(shù)智慧樹(shù)知到期末考試答案章節(jié)答案2024年廣西師范大學(xué)
- MOOC 算法設(shè)計(jì)與分析-武漢理工大學(xué) 中國(guó)大學(xué)慕課答案
- 2023重癥血液凈化血管通路的建立與應(yīng)用中國(guó)專(zhuān)家共識(shí)
- 植物的植物生物技術(shù)
- 醫(yī)院檢驗(yàn)科實(shí)驗(yàn)室生物安全管理手冊(cè)
- 公交車(chē)司機(jī)急救培訓(xùn)課件
- 鐵路工程竣工驗(yàn)收辦法
- 慢性阻塞性肺疾病的緊急救治與護(hù)理細(xì)節(jié)
- DB53-T 1215-2023 陸生野生動(dòng)物收容救護(hù)技術(shù)規(guī)范
評(píng)論
0/150
提交評(píng)論