




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)挖掘與機器學(xué)習(xí)理解數(shù)據(jù)分析與挖掘的基本概念和方法、熟練掌握數(shù)據(jù)挖掘業(yè)務(wù)流程和典型應(yīng)用場景,主要包括認(rèn)識數(shù)據(jù)、數(shù)據(jù)預(yù)處理、數(shù)據(jù)挖掘技術(shù)等。掌握數(shù)據(jù)分析與挖掘中用到的典型機器學(xué)習(xí)算法,包括回歸分析方法、關(guān)聯(lián)規(guī)則挖掘、分類和聚類中的典型算法原理和應(yīng)用。掌握利用Python進行數(shù)據(jù)分析與挖掘的方法,重點闡述典型數(shù)據(jù)挖掘方法利用scikit-learn實現(xiàn)的過程。熟悉Python數(shù)據(jù)分析常用的Numpy、Pandas和Matplotlib,熟練使用JupyterNotebook進行數(shù)據(jù)分析與挖掘。數(shù)據(jù)挖掘與機器學(xué)習(xí)第一章概論本章內(nèi)容數(shù)據(jù)挖掘簡介數(shù)據(jù)分析與數(shù)據(jù)挖掘數(shù)據(jù)挖掘的主要任務(wù)數(shù)據(jù)挖掘的數(shù)據(jù)源數(shù)據(jù)挖掘存在的主要問題數(shù)據(jù)挖掘工具Python數(shù)據(jù)挖掘常用類庫10十一月20243數(shù)據(jù)分析與挖掘從文明之初的“結(jié)繩計數(shù)”到文字發(fā)明后的“文以載道”,再到近代科學(xué)的“數(shù)據(jù)建?!?,數(shù)據(jù)一致伴隨著人類社會的成長變遷。然而,直到以電子計算機為代表的現(xiàn)代信息技術(shù)出現(xiàn)后,才使人類掌握數(shù)據(jù)、處理數(shù)據(jù)的能力得到空前高速的發(fā)展。信息技術(shù)及其在社會經(jīng)濟生活方方面面的應(yīng)用(即信息化)推動數(shù)據(jù)(信息)稱為繼物質(zhì)、能源之后的第三大戰(zhàn)略資源。大數(shù)據(jù)(存儲管理、分析、處理)知識是人類對客觀世界的觀察和了解,是人類對客觀世界是什么、為什么、應(yīng)該怎么做的認(rèn)知,知識推動人類的進步和發(fā)展。人類所作出的正確判斷和決策,以及采取正確的行動都是基于智慧和知識。數(shù)據(jù)是反映客觀事物的數(shù)字、詞語、聲音和圖像等,是可以進行計算加工的“原料”。數(shù)據(jù)是對客觀事物的數(shù)量、屬性、位置及其相互關(guān)系的抽象表示,適合于保存、傳遞和處理。TheExplosiveGrowthofData-------fromterabytestopetabytes數(shù)據(jù)分析與挖掘簡介數(shù)據(jù)分析與挖掘簡介自動數(shù)據(jù)收集工具和成熟的數(shù)據(jù)庫技術(shù)使得大量的數(shù)據(jù)被收集,存儲在數(shù)據(jù)庫、數(shù)據(jù)倉庫或其他信息庫中以待分析。主要的數(shù)據(jù)來源與領(lǐng)域:Web,e-commerce,transactions,stocks,…Science:Remotesensing,bioinformatics,scientificsimulation,…Societyandeveryone:news,YouTube62016年每分鐘產(chǎn)生的海量數(shù)據(jù)“數(shù)據(jù)豐富,信息貧乏”數(shù)據(jù)分析與挖掘簡介面對大量的數(shù)據(jù),迫使人們不斷尋找新的工具,對規(guī)律進行探索,為決策提供有價值的信息。數(shù)據(jù)挖掘有助于發(fā)現(xiàn)趨勢,揭示已知的事實,預(yù)測未知的結(jié)果。人們迫切希望能夠?qū)A繑?shù)據(jù)進行分析挖掘,發(fā)現(xiàn)并提取隱含在數(shù)據(jù)中的有價值信息。10十一月20247WhyDataMining?Wearedrowningindata,butstarvingforknowledge!
“Necessityisthemotherofinvention”解決辦法:數(shù)據(jù)倉庫(DataWarehouse)和在線分析處理(OLAP)數(shù)據(jù)挖掘—在大量數(shù)據(jù)中發(fā)現(xiàn)有用的知識、模式、規(guī)律、約束等數(shù)據(jù)挖掘簡介數(shù)據(jù)挖掘(DataMining)是人工智能和數(shù)據(jù)庫領(lǐng)域研究的熱點問題,是指從大量有噪聲的、不完全的、模糊和隨機的數(shù)據(jù)中,提取出隱含在其中的、事先不知道但具有潛在利用價值的信息的過程。這個定義包括幾層含義:數(shù)據(jù)必須是真實的、大量的并且含有噪聲的;發(fā)現(xiàn)的是用戶感興趣的可以接受、理解和運用的知識;僅支持特定的問題,并不要求放之四海而皆準(zhǔn)的知識。與數(shù)據(jù)挖掘的含義類似的還有一些術(shù)語如從數(shù)據(jù)中心挖掘知識、知識提取、數(shù)據(jù)/模式分析等。10十一月20249WhatIsDataMining?Datamining(knowledgediscoveryfromdata)數(shù)據(jù)挖掘--從大量數(shù)據(jù)中尋找其規(guī)律的技術(shù),是統(tǒng)計學(xué)、數(shù)據(jù)庫技術(shù)和人工智能技術(shù)的綜合。數(shù)據(jù)挖掘是從數(shù)據(jù)中自動地抽取模式、關(guān)聯(lián)、變化、異常和有意義的結(jié)構(gòu);數(shù)據(jù)挖掘大部分的價值在于利用數(shù)據(jù)挖掘技術(shù)改善預(yù)測模型。AlternativenamesKnowledgediscovery(mining)indatabases(KDD),knowledgeextraction,data/patternanalysis,dataarcheology,datadredging,informationharvesting,businessintelligence,etc.并非所有東西都是數(shù)據(jù)挖掘查詢、專家系統(tǒng)、小型的科學(xué)計算、統(tǒng)計10數(shù)據(jù)挖掘簡介ThisisaviewfromtypicalmachinelearningandstatisticscommunitiesInputDataPatternInformationKnowledgeDataMiningDataPre-ProcessingPost-ProcessingDataintegrationNormalizationFeatureselectionDimensionreductionPatterndiscoveryAssociation&correlationClassificationClusteringOutlieranalysis…………PatternevaluationPatternselectionPatterninterpretationPatternvisualization數(shù)據(jù)分析與數(shù)據(jù)挖掘數(shù)據(jù)分析(DataAnalysis,DA)是數(shù)學(xué)與計算機科學(xué)相結(jié)合的產(chǎn)物,是指用適當(dāng)?shù)慕y(tǒng)計分析方法對收集來的大量數(shù)據(jù)進行分析,提取有用信息和形成結(jié)論,對數(shù)據(jù)加以詳細(xì)研究和概括總結(jié)的過程。數(shù)據(jù)分析和數(shù)據(jù)挖掘都是基于搜集來的數(shù)據(jù),應(yīng)用數(shù)學(xué)、統(tǒng)計和計算機等技術(shù)抽取出數(shù)據(jù)中的有用信息,進而為決策提供依據(jù)和指導(dǎo)方向。數(shù)據(jù)分析有廣義與狹義之分。廣義的數(shù)據(jù)分析包括了狹義數(shù)據(jù)分析和數(shù)據(jù)挖掘。10十一月202412數(shù)據(jù)分析與數(shù)據(jù)挖掘10十一月202413數(shù)據(jù)分析與數(shù)據(jù)挖掘10十一月202414差異數(shù)據(jù)分析數(shù)據(jù)挖掘定義描述和探索性分析,評估現(xiàn)狀和修正不足技術(shù)性的“采礦”過程,發(fā)現(xiàn)未知的模式和規(guī)律側(cè)重點實際的業(yè)務(wù)知識挖掘技術(shù)的落地,完成“采礦”過程技能統(tǒng)計學(xué)、數(shù)據(jù)庫、Excel和可視化等過硬的數(shù)學(xué)功底和編程技術(shù)結(jié)果需結(jié)合業(yè)務(wù)知識解讀統(tǒng)計結(jié)果模型或規(guī)則數(shù)據(jù)分析與數(shù)據(jù)挖掘?qū)Ρ葦?shù)據(jù)挖掘的主要任務(wù)數(shù)據(jù)挖掘是通過分析每個數(shù)據(jù),從大量數(shù)據(jù)中尋找其規(guī)律的技術(shù)。10十一月202415數(shù)據(jù)挖掘:知識挖掘的核心DataCleaningDataIntegrationDataWarehouseKnowledgeTask-relevantDataSelectionDataMiningPatternEvaluation數(shù)據(jù)挖掘的主要任務(wù)數(shù)據(jù)挖掘的主要任務(wù)有關(guān)聯(lián)分析、聚類分析、分類分析、異常分析、特異群組分析和演變分析等。(1)關(guān)聯(lián)規(guī)則挖掘由RakeshApwal等人首先提出。兩個或兩個以上變量的取值之間存在的規(guī)律稱為關(guān)聯(lián)。(2)預(yù)測建模是指根據(jù)已知的數(shù)據(jù)構(gòu)建出一個數(shù)據(jù)模型,然后應(yīng)用這個模型對未知數(shù)據(jù)的所屬分類進行預(yù)測,主要包括分類和回歸兩類問題。(3)聚類是把數(shù)據(jù)按照相似性歸納成若干類別,使得同一類中的數(shù)據(jù)彼此相似,不同類中的數(shù)據(jù)盡量相異。(4)離群點指全局或局部范圍內(nèi)偏離一般水平的觀測對象。離群點等異常值會對數(shù)據(jù)分析與挖掘產(chǎn)生不良影響。10十一月202416數(shù)據(jù)挖掘的數(shù)據(jù)源作為一門通用的技術(shù),只要數(shù)據(jù)對目標(biāo)應(yīng)用是有用的,數(shù)據(jù)挖掘就可以用于任何類型的數(shù)據(jù)。對于挖掘的應(yīng)用,數(shù)據(jù)的基本形式主要有數(shù)據(jù)庫數(shù)據(jù)、數(shù)據(jù)倉庫、事務(wù)數(shù)據(jù)庫和其它數(shù)據(jù)源。(1)數(shù)據(jù)庫系統(tǒng)是由一組內(nèi)部相關(guān)的數(shù)據(jù)和用于管理這些數(shù)據(jù)的程序組成,通過軟件程序?qū)?shù)據(jù)進行高效的存儲和管理,并發(fā)、共享或分布式訪問,并保證數(shù)據(jù)的完整性和安全性。10十一月202417數(shù)據(jù)挖掘的數(shù)據(jù)源(2)數(shù)據(jù)倉庫是依照分析需求、分析維度和分析指標(biāo)進行設(shè)計的,它是數(shù)據(jù)庫的一種概念上的升級。(3)事務(wù)數(shù)據(jù)庫的每個記錄代表一個事務(wù),例如一個航班的訂票、顧客的一個交易等。(4)其它類型數(shù)據(jù)時間相關(guān)的數(shù)據(jù)和序列數(shù)據(jù),數(shù)據(jù)流,空間數(shù)據(jù),Web數(shù)據(jù)(HTML等)等。10十一月202418數(shù)據(jù)挖掘使用的技術(shù)作為一個應(yīng)用驅(qū)動的領(lǐng)域,數(shù)據(jù)挖掘吸納了諸如統(tǒng)計學(xué)、機器學(xué)習(xí)、數(shù)據(jù)庫和數(shù)據(jù)倉庫、數(shù)據(jù)可視化、算法、高性能計算和許多應(yīng)用領(lǐng)域的先進技術(shù)10十一月202419數(shù)據(jù)庫系統(tǒng)與數(shù)據(jù)倉庫數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementSystem,DBMS)是一種操縱和管理數(shù)據(jù)庫的大型軟件,主要關(guān)注數(shù)據(jù)庫的創(chuàng)建、維護和使用。數(shù)據(jù)倉庫(Datawarehouse)是面向主題的、集成的與時間相關(guān)且不可修改的數(shù)據(jù)集合。數(shù)據(jù)庫主要用于事務(wù)處理,數(shù)據(jù)倉庫主要用于數(shù)據(jù)分析,用途上的差異決定了兩種架構(gòu)的特點不同。10十一月202420數(shù)據(jù)挖掘與機器學(xué)習(xí)10十一月202421從數(shù)據(jù)分析的角度來看,數(shù)據(jù)挖掘與機器學(xué)習(xí)有很多相似之處,但不同之處也十分明顯,例如:數(shù)據(jù)挖掘并沒有機器學(xué)習(xí)探索人的學(xué)習(xí)機制這一科學(xué)發(fā)現(xiàn)任務(wù),數(shù)據(jù)挖掘中的數(shù)據(jù)分析是針對海量數(shù)據(jù)的,等。從某種意義上說,機器學(xué)習(xí)的科學(xué)成分更重一些,二數(shù)據(jù)挖掘的技術(shù)成分更中一些。機器學(xué)習(xí)(MachineLearning,ML)是一門多領(lǐng)域交叉學(xué)科,涉及概率論、統(tǒng)計學(xué)、逼近論、凸分析、算法復(fù)雜度理論等多門學(xué)科。其專門研究計算機是怎樣模擬或?qū)崿F(xiàn)人類的學(xué)習(xí)行為,以獲取新的知識或技能,重新組織已有的知識結(jié)構(gòu),使之不斷改善自身性能。數(shù)據(jù)挖掘(DataMining)是從海量數(shù)據(jù)中獲取有效的、新穎的、潛在有用的、最終可理解的模式的過程。數(shù)據(jù)挖掘中用到了大量的機器學(xué)習(xí)界提供的數(shù)據(jù)分析技術(shù)和數(shù)據(jù)庫界提供的數(shù)據(jù)管理技術(shù)。數(shù)據(jù)挖掘存在的問題目前,數(shù)據(jù)挖掘在很多領(lǐng)域取得了巨大成功,但依然存在一些具有挑戰(zhàn)性的問題。(1)數(shù)據(jù)類型多樣化(2)噪聲數(shù)據(jù)(3)高維度數(shù)據(jù)(4)數(shù)據(jù)挖掘的可視化10十一月202422數(shù)據(jù)挖掘建模常用工具1商用工具商用工具主要由商用的開發(fā)商提供,通過市場銷售,提供相關(guān)的服務(wù)。與開源軟件相比,商用軟件更強大、軟件性能更加成熟穩(wěn)定。主要的商用數(shù)據(jù)挖掘工具有SASEnterpriseMiner、SPSSClementine和IBMIntelligentMiner等。2開源工具開源軟件的最大優(yōu)勢在于免費,而且讓任何有能力的人參與并完善軟件。相對于商用工具,開源軟件工具更容易學(xué)習(xí)和掌握。常用的開源工具有R語言、Python、Weka和RapidMiner等。10十一月202423SASEnterpriseMinerSPSSClementineIntelligentMinerQUEST1商用工具數(shù)據(jù)挖掘常用工具RWekaMahoutRapidMinerPythonSparkMLlib2開源工具數(shù)據(jù)挖掘常用工具PythonPython是一種功能強大的、開源的、解釋性、面向?qū)ο笥嬎銠C編程語言,內(nèi)建有各種高級數(shù)據(jù)結(jié)構(gòu),支持模塊和包,支持多種平臺并可擴展。Python語言簡潔、易學(xué)習(xí)、易閱讀,并在數(shù)據(jù)統(tǒng)計、機器學(xué)習(xí)方面得到廣泛應(yīng)用,是人工智能研究領(lǐng)域中一個非常重要的工具。數(shù)據(jù)挖掘常用工具利用Python進行數(shù)據(jù)挖掘的優(yōu)勢1.爬取數(shù)據(jù)需要Python2.數(shù)據(jù)分析需要Python3.Python語言簡單高效10十一月202427利用Python進行數(shù)據(jù)挖掘的優(yōu)勢10十一月202428Python數(shù)據(jù)挖掘常用類庫Python的第三方模塊很豐富,而且語法非常簡練,自由度很高。10十一月202429數(shù)據(jù)科學(xué)計算平臺——Anaconda10十一月202430Anaconda是一個集成的Python數(shù)據(jù)科學(xué)環(huán)境,簡單的說,Anaconda除了有Python外,還安裝了180多個用于數(shù)據(jù)分析的第三方庫,而且可以使用conda命令安裝第三方庫和創(chuàng)建多個環(huán)境。相對于只安裝Python而言,避免了安裝第三方庫的麻煩。網(wǎng)站:/help/anaconda/數(shù)據(jù)科學(xué)計算平臺——AnacondaJupyterNotebook(Julia+Python+R=Jupyter)基于Web技術(shù)的交互式計算文檔格式,支持Markdown和Latex語法,支持代碼運行、文本輸入、數(shù)學(xué)公式編輯、內(nèi)嵌式畫圖和其他如圖片文件的插入,是一個對代碼友好的交互式筆記本。10十一月202431確認(rèn)勾選將Python添加到系統(tǒng)環(huán)境變量
數(shù)據(jù)科學(xué)計算平臺——Anaconda數(shù)據(jù)科學(xué)計算平臺——AnacondaAnacondaNavigator數(shù)據(jù)科學(xué)計算平臺——Anaconda
conda:一個工具,用于包管理和環(huán)境管理,其中:
包管理與pip類似,管理python第三方;
環(huán)境管理能夠允許用戶使用不同版本的Python,并能靈活切換數(shù)據(jù)科學(xué)計算平臺——AnacondaWin+R:運行CMD命令;conda–V:顯示python版本,說明環(huán)境變量設(shè)置成功;condaupgrade-all
:先把所有工具包進行升級
包的安裝和卸載:condainstallxxx#xxx為包名condaremovexxxpipinstallxxxpipuninstallxxxJupyterNotebook的使用JupyterNotebook(Julia+Python+R=Jupyter)基于Web技術(shù)的交互式計算文檔格式,支持Markdown和Latex語法,支持代碼運行、文本輸入、數(shù)學(xué)公式編輯、內(nèi)嵌式畫圖和其他如圖片文件的插入,是一個對代碼友好的交互式筆記本。10十一月202436數(shù)據(jù)科學(xué)計算平臺——Anaconda數(shù)據(jù)科學(xué)計算平臺—Anaconda1.JupyterNotebook中的代碼輸入與編輯10十一月202437Files基本上列出了所有的文件,Running顯示了當(dāng)前已經(jīng)打開的終端和Notebooks,Clusters由IPythonparallel包提供,用于并行計算。若要創(chuàng)建新的Notebook,只需單擊頁面右上角的New按鈕,在下拉選項中選擇python3,即可得到一個空的notebook界面如圖1-3所示數(shù)據(jù)科學(xué)計算平臺—Anaconda主要由以下部分組成:notebook標(biāo)題、主工具欄、快捷鍵、notebook編輯區(qū)。若要重新命名notebook標(biāo)題,可選擇File|Rename,輸入新的名稱,更改后的名字就會出現(xiàn)在Jupyter圖標(biāo)的右側(cè)。10十一月202438數(shù)據(jù)科學(xué)計算平臺—Anaconda10十一月202439數(shù)據(jù)科學(xué)計算平臺—Anaconda在編輯區(qū)可以看到一個個單元(cell)。如圖1-4所示,每個cell以“In[]”開頭,可以輸入正確的Python代碼并執(zhí)行。例如,輸入"python"+"program",然后按“Shift+Enter”,代碼將被運行后,編輯狀態(tài)切換到新的cell。10十一月202440數(shù)據(jù)科學(xué)計算平臺—Anaconda選擇Insert|Insertcellabove,則在當(dāng)前cell上面會添加一個新的默認(rèn)是code類型的單元。通過選擇cell|celltype菜單選擇Markdown(標(biāo)記),這樣就可以獲得一個優(yōu)美,解釋性更強的Notebook。Notebook還具備導(dǎo)出功能,可導(dǎo)出為如下幾種形式的文件:HTML、Markdown、ReST、 PDF(ThroughLaTex)、RawPython。10十一月202441數(shù)據(jù)科學(xué)計算平臺—Anaconda10十一月202442Markdowm:Markdown是一種輕量級標(biāo)記語言,它允許人們使用易讀易寫的純文本格式編寫文檔。運行后:JupyterNotebook的使用快捷鍵10十一月202443本章小結(jié)數(shù)據(jù)挖掘數(shù)據(jù)分析數(shù)據(jù)挖掘的過程數(shù)據(jù)挖掘相關(guān)的技術(shù)Python數(shù)據(jù)挖掘的類庫JupyterNotebook10十一月202444數(shù)據(jù)挖掘與機器學(xué)習(xí)第2章python數(shù)據(jù)分析與挖掘基礎(chǔ)本章內(nèi)容Python基礎(chǔ)Python內(nèi)建數(shù)據(jù)結(jié)構(gòu)Numpy數(shù)值運算基礎(chǔ)Pandas統(tǒng)計分析基礎(chǔ)Matplotlib圖表繪制基礎(chǔ)Scikit-learn基礎(chǔ)10十一月2024461.Python基礎(chǔ)Python是一個結(jié)合了解釋性、編譯性、互動性和面向?qū)ο蟮母呒壋绦蛟O(shè)計語言。其結(jié)構(gòu)簡單,語法定義清晰。Python最具特色的就是使用縮進來表示代碼塊,不需要使用大括號{}。Python3中有六種標(biāo)準(zhǔn)的數(shù)據(jù)類型:Number(數(shù)字)、String(字符串)、List(列表)、Tuple(元組)、Set(集合)和Dictionary(字典)。其中,不可變數(shù)據(jù)類型有Number、String和Tuple;可變數(shù)據(jù)類型有List、Dictionary和Set。Python中的變量是不需要聲明數(shù)據(jù)類型的,變量的“類型”是所指的內(nèi)存中被賦值對象的類型。同一變量可以反復(fù)賦值,而且可以是不同類型的變量。10十一月202447Python基礎(chǔ)操作符和表達式運算符用于執(zhí)行程序代碼運算,會針對一個以上的操作數(shù)進行運算。Python語言支持算術(shù)運算符、關(guān)系運算符和邏輯運算符。10十一月202448操作符描述+,-,*,/,%,//,**算術(shù)運算:加、減、乘、除、取模、整除、冪<,<=,>,>=,!=,==關(guān)系運算符and,or,not,邏輯運算符Python基礎(chǔ)字符串1.轉(zhuǎn)義字符字符串被定義為引號之間的字符集合,在Python中,字符串用單引號('),雙引號("),三引號(''')括起來。當(dāng)Python字符串中有一個反斜杠時表示一個轉(zhuǎn)義序列的開始,稱反斜杠為轉(zhuǎn)義符。10十一月202449表2-2轉(zhuǎn)義字符示例轉(zhuǎn)義序列說明\n換行\(zhòng)\反斜杠\”雙引號\t制表符Python允許用r+“
”的方式表示“
”內(nèi)部的字符串默認(rèn)不轉(zhuǎn)義。Python基礎(chǔ)字符串2.字符串的運算Python特有的索引規(guī)則為:第一個字符的索引是0,后續(xù)字符索引依次遞增,或者從右向左編號,最后一個字符的索引號為-1,前面的字符依次減1,主要運算+*切片。3.字符串的常見方法屬性,見表2-4字符串的方法描述10十一月202450Python基礎(chǔ)11/10/2024表2-4字符串的常用方法描述方法/函數(shù)作用str.capitalize()返回字符串的副本,其首字符大寫str.count(sub[,start[,end]])
返回[start,end]范圍內(nèi)sub的非重疊出現(xiàn)次數(shù),start和end可選str.endswith(sub[,start[,end]])返回布爾值,表示字符串是否以指定的sub結(jié)束,同類方法str.startswith()str.find(sub[,start[,end]])
返回字符串中首次出現(xiàn)子串sub的索引位置,start和end可選,若未找到sub,返回-1,類似方法str.index()str.split(sep=None)使用sep作為分隔符拆分字符串,返回字符串中單詞的列表str.strip([chars])刪除字符串前端和尾部chars指定的字符集,如果省略或None則刪除空白字符str.upper()/str.lower()將字符串中所有字符轉(zhuǎn)換為大寫/小寫Python基礎(chǔ)
流程控制條件語句ifcondition:if-block[elifcondition: elif-blockelse: else-block]10十一月202452其中,冒號(:)是語句塊開始標(biāo)記,[]內(nèi)為可選項。另外,在Python中,當(dāng)condition的值為False、0、None、””、()、[]、{}時,會被解釋器解釋為假(False)。Python基礎(chǔ)
流程控制2.循環(huán)語句10十一月202453while語句語法格式:whilecondition:while-block【例2-4】求1+2+3+4+5的值。In[4]:sum=0i=1whilei<6:sum=sum+ii=i+1print("sumis%d."%sum)Out[4]:sumis15.Python基礎(chǔ)
流程控制2.循環(huán)語句10十一月202454for語句語法格式:for
v
in
Seq:for_block其中,v是循環(huán)變量,Seq是序列類型,涵蓋字符串、列表及元組。在每輪循環(huán)中,循環(huán)變量被設(shè)置為序列類型中的當(dāng)前對象,for_block是循環(huán)體,用來完成具體功能。Python基礎(chǔ)
流程控制2.循環(huán)語句10十一月202455for語句語法格式:for
v
in
Seq:for_block【例2-5】將下面數(shù)組中的奇數(shù)變成它的平方,偶數(shù)保持不變。In[5]:x=[1,2,3,4,8,7,22,33,88]print("原數(shù)據(jù):",x)foriinrange(len(x)):if(x[i]%2)!=0:#判讀第i個元素是否為奇數(shù)
x[i]=x[i]*x[i]print("處理后:",x)Out[5]:原數(shù)據(jù):
[1,2,3,4,8,7,22,33,88]處理后:
[1,2,9,4,8,49,22,1089,88]Python基礎(chǔ)函數(shù)是對程序邏輯進行過程化和結(jié)構(gòu)化的一種方法。有了函數(shù),可將大塊的代碼巧妙合理地隔離成容易管理和維護的小塊。1.函數(shù)的定義函數(shù)定義語法格式如下所示:deffunction_name(arguments):function_block10十一月202456函數(shù)代碼塊以def關(guān)鍵詞開頭,后接函數(shù)標(biāo)識符名稱和圓括號();function_name是用戶自定義的函數(shù)名稱;arguments是零個或多個參數(shù),且任何傳入?yún)?shù)必須放在圓括號內(nèi);最后必須跟一個冒號(:),函數(shù)體從冒號開始,并且縮進;function_block實現(xiàn)函數(shù)功能的語句塊。Python基礎(chǔ)10十一月202457【例2-6】定義函數(shù)計算n!。In[6]:deffac(n):s=1;foriinrange(2,n+1):s=s*ireturnsn=5print('%d!=%d'%(n,fac(n)))Out[6]:5!=120Python基礎(chǔ)2.lambda函數(shù)Python使用lambda來創(chuàng)建匿名函數(shù)。準(zhǔn)確地說,lambda只是一個表達式,函數(shù)體比def定義的函數(shù)簡單得多,在lambda表達式中只能封裝有限的邏輯。除此之外,lambda函數(shù)擁有自己的命名空間,且不能訪問自有參數(shù)列表之外或全局命名空間里的參數(shù)。10十一月202458【例2-7】定義一個lambda函數(shù)計算多項式1+2*x+y2+z*y的值。In[7]:polynominal=lambdax,y,z:1+2*x+y**2+z*ypolynominal(1,2,3)Out[7]:132Pyhton內(nèi)建數(shù)據(jù)結(jié)構(gòu)在Python中,最基本的數(shù)據(jù)結(jié)構(gòu)是序列。序列中的成員有序排列,可以通過下標(biāo)偏移量訪問到它的一個或幾個成員。除了前面已經(jīng)介紹過的字符串,最常見的序列是列表和元組。列表是Python中最具靈活性的有序集合對象類型。和字符串不同的是,列表具有可變長度、異構(gòu)以及任意嵌套列表的特點。列表是可變對象,支持在原處修改。10十一月2024592Pyhton內(nèi)建數(shù)據(jù)結(jié)構(gòu)
列表的常用方法(1)增加元素
L.append(v)(2)查找給定的元素L.index(x)(3)刪除列表中的元素L.remove(v)(4)列表元素倒排、統(tǒng)計和排序
L.reverse()用以倒排列表中的元素,L.count(x)實現(xiàn)返回x在列表中出現(xiàn)的次數(shù)。10十一月2024602Pyhton內(nèi)建數(shù)據(jù)結(jié)構(gòu)列表的推導(dǎo)式列表推導(dǎo)式提供了從序列創(chuàng)建列表的簡單途徑。通常應(yīng)用程序?qū)⒁恍┎僮鲬?yīng)用于某個推導(dǎo)序列的每個元素,用其獲得的結(jié)果作為生成新列表的元素,或者根據(jù)確定的判定條件創(chuàng)建子序列。10十一月202461語法格式為:[<expr1>forkinLif<expr2>]語義:
returnList=[]forkinL:if<expr2>:returnList.append(<expr1>)returnreturnList;2Pyhton內(nèi)建數(shù)據(jù)結(jié)構(gòu)元組
元組有很多用途,例如,坐標(biāo)(x,y),數(shù)據(jù)庫中的員工記錄等等。元組和字符串一樣,不可改變,即不能給元組的一個獨立的元素賦值。元組用的是圓括號(),而列表用的是方括號[]。10十一月202462In[13]:tup=tuple('bar')#創(chuàng)建元組print('輸出元組tup:',tup)#輸出元組nested_tup=(4,5,6),(7,8)print('輸出元組tup:',nested_tup)#元素是元組的元組print('元組的連接',tup+tuple('wwy'))a,b,c=tup#元組的拆分print(a,b,c)print(tup.count(a))#統(tǒng)計某個數(shù)值在元組中出現(xiàn)的次數(shù)Out[13]:輸出元組tup:('b','a','r')輸出元組tup:((4,5,6),(7,8))元組的連接
('b','a','r','w','w','y')bar12Pyhton內(nèi)建數(shù)據(jù)結(jié)構(gòu)字典字典也稱映射,是一個由鍵/值對組成的非排序可變集合體。鍵值對在字典中以下面的方式標(biāo)記:dict={key1:value1,key2:value2}10十一月202463方法描述dict.get()返回指定鍵的值,若值不在字典中則返回defaultdict.items()以列表返回可遍歷的(鍵,值)元組數(shù)組dict.keys()以列表返回一個字典所有的鍵dict.values()以列表返回字典中的所有值2Pyhton內(nèi)建數(shù)據(jù)結(jié)構(gòu)集合是一個由唯一元素組成的非排序集合體。也就是說,集合中的元素沒有特定順序,也沒有重復(fù)項。集合可以使用大括號{}或者set()函數(shù)創(chuàng)建集合,但是,創(chuàng)建一個空集合必須用set(),因為{}是用來創(chuàng)建一個空字典。10十一月202464In[15]:set1=set([0,1,2,3,4])set2=set([1,3,5,7,9])print(set1.issubset(set2))print(set1.union(set2))print(set2.difference(set1))print(set1.issubset(set2))Out[15]:False{0,1,2,3,4,5,7,9}{9,5,7}FalseNumPy數(shù)值運算基礎(chǔ)Numpy是一個開源的Python科學(xué)計算庫,它是python科學(xué)計算庫的基礎(chǔ)庫,許多其他著名的庫(如Pandas、
Scikit-learn等)都要用到Numpy庫的一些功能。Numpy常用的導(dǎo)入格式:importnumpyasnp創(chuàng)建數(shù)組對象NumPy庫能將數(shù)據(jù)(列表、元組、數(shù)組或其他序列類型)轉(zhuǎn)換為ndarray數(shù)組。利用array函數(shù)創(chuàng)建數(shù)組對象專門創(chuàng)建數(shù)組的函數(shù)10十一月202465NumPy數(shù)值運算基礎(chǔ)利用array函數(shù)創(chuàng)建數(shù)組對象10十一月202466array函數(shù)的格式:np.array(object,dtype,ndmin)表2-6array函數(shù)的主要參數(shù)及說明參數(shù)名稱說明object接收array,表示想要創(chuàng)建的數(shù)組dtype接收data-type,表示數(shù)組所需的數(shù)據(jù)類型,默認(rèn)為Nonendmin接收int,指定生成數(shù)組應(yīng)該具有的最小維數(shù),默認(rèn)為NoneNumPy數(shù)值運算基礎(chǔ)利用array函數(shù)創(chuàng)建數(shù)組對象importnumpyasnpdata1=[1,3,5,7]#列表w1=np.array(data1)print('w1:',w1)data2=(2,4,6,8)#元組w2=np.array(data2)print('w2:',w2)data3=[[1,2,3,4],[5,6,7,8]]#多維數(shù)組w3=np.array(data3)print('w3:',w3)10十一月202467NumPy數(shù)值運算基礎(chǔ)2.專門創(chuàng)建數(shù)組的函數(shù)10十一月202468表2-7常用專門創(chuàng)建數(shù)組的函數(shù)np.arange(n)類似range()函數(shù),返回ndarray類型,元素從0到n-1np.ones(shape)根據(jù)shape生成一個全1數(shù)組,shape為元組類型np.zeros(shape)根據(jù)shape生成一個全0數(shù)組,shape為元組類型np.full(shape,val)根據(jù)shape生成一個值全為val的數(shù)組np.eye(n)創(chuàng)建一個對角線全為1其余元素為0的方陣np.linspace()指定開始值、終值和元素個數(shù)創(chuàng)建一維數(shù)組np.logspace()指定開始值、終值和元素個數(shù)創(chuàng)建一維等比數(shù)組NumPy數(shù)值運算基礎(chǔ)NumPy創(chuàng)建的ndarray對象屬性,主要有shape、size等屬性10十一月202469屬性說明ndim秩,即數(shù)據(jù)軸的個數(shù)shape數(shù)組的維度size數(shù)組元素個數(shù)dtype數(shù)據(jù)類型itemsize數(shù)組中每個元素的字節(jié)大小nbytes整個數(shù)組所需的字節(jié)數(shù)NumPy數(shù)值運算基礎(chǔ)生成隨機數(shù)在NumPy.random模塊中,提供了多種隨機數(shù)的生成函數(shù)。如randint生成指定范圍的隨機整數(shù)。用法:np.random.randint(low,high=None,size=None)10十一月202470arr1=np.random.randint(100,200,size=(2,4))print('arr1:\n',arr1)arr2=np.random.rand(5)print('arr2:\n',arr2)arr3=np.random.rand(3,2)print('arr3:\n',arr3)arr1:
[[117175143145]
[116158166192]]arr2:
[0.0591052
0.135920070.492438250.972930620.67059451]arr3:
[[0.717379740.39455845]
[0.945141410.34930551]
[0.927437750.26501378]]運行結(jié)果NumPy數(shù)值運算基礎(chǔ)生成隨機數(shù)函數(shù)10十一月202471函數(shù)說明seed確定隨機數(shù)生成器的種子permutation返回一個序列的隨機排列或返回一個隨機排列的范圍shuffle對一個序列進行隨機排序binomial產(chǎn)生二項分布的隨機數(shù)normal產(chǎn)生正態(tài)(高斯)分布的隨機數(shù)beta產(chǎn)生beta分布的隨機數(shù)chisquare產(chǎn)生卡方分布的隨機數(shù)gamma產(chǎn)生gamma分布的隨機數(shù)uniform產(chǎn)生在[0,1)中均勻分布的隨機數(shù)NumPy數(shù)值運算基礎(chǔ)2.3.4數(shù)組變換
數(shù)組重塑
reshape方法改變其數(shù)據(jù)維度,傳入的參數(shù)為新維度的元組。reshape的參數(shù)中的其中一個可以設(shè)置為-1,表示數(shù)組的維度可以通過數(shù)據(jù)本身來推斷。10十一月202472Out[23]:arr1:[01234567891011]arr2:[[0123][4567][891011]]arr3:[[012345][67891011]]In[23]:arr1=np.arange(12)print('arr1:\n',arr1)arr2=arr1.reshape(3,4)print('arr2:\n',arr2)arr3=arr1.reshape(2,-1)print('arr3:\n',arr3)NumPy數(shù)值運算基礎(chǔ)2.3.4數(shù)組變換
數(shù)組重塑
與reshape相反的方法是數(shù)據(jù)散開(ravel)或數(shù)據(jù)扁平化(flatten)。10十一月202473In[24]:arr1=np.arange(12).reshape(3,4)print('arr1:\n',arr1)arr2=arr1.ravel()print('arr2:',arr2)arr3=arr1.flatten()print('arr3:',arr3)Out[24]:arr1:[[0123][4567][891011]]arr2:[01234567891011]arr3:[01234567891011]NumPy數(shù)值運算基礎(chǔ)2.3.4數(shù)組變換
數(shù)組合并完成數(shù)組的組合,包括數(shù)組的橫向組合和縱向組合。NumPy利用hstack、vstack和concatenate函數(shù)完成數(shù)組的組合。橫向組合是將ndarray對象構(gòu)成的元組作為參數(shù),傳給hstack函數(shù)。縱向組合是利用vstack將數(shù)組縱向合并。10十一月202474In[25]:arr1=np.arange(6).reshape(3,2)arr2=arr1*2arr3=np.hstack((arr1,arr2))print('橫向合并:\n',arr3)arr4=np.vstack((arr1,arr2))print('縱向合并:\n',arr4)Out[25]:橫向合并:
[[0102][2346][45810]]縱向合并:
[[01][23][45][02][46][810]]NumPy數(shù)值運算基礎(chǔ)2.3.4數(shù)組變換
數(shù)組合并concatenate函數(shù)可以實現(xiàn)數(shù)組的橫向或縱向合并,其中的參數(shù)axis=1時進行橫向合并,axis=0時進行縱向合并。10十一月202475In[26]:arr1=np.arange(6).reshape(3,2)arr2=arr1*2print('橫向組合為:\n',np.concatenate((arr1,arr2),axis=1))print('縱向組合為:\n',np.concatenate((arr1,arr2),axis=0))Out[26]:橫向組合為:
[[0102][2346][45810]]縱向組合為:
[[01][23][45][02][46][810]]NumPy數(shù)值運算基礎(chǔ)2.3.4數(shù)組變換數(shù)組分割:與數(shù)組合并相反,NumPy提供了hsplit、vsplit和split分別實現(xiàn)數(shù)組的橫向、縱向和指定方向的分割。10十一月202476同樣,split在參數(shù)axis=1時實現(xiàn)數(shù)組的橫向分割,axis=0時則進行縱向分割。NumPy數(shù)值運算基礎(chǔ)2.3.4數(shù)組變換數(shù)組轉(zhuǎn)置和軸對換數(shù)組轉(zhuǎn)置是數(shù)組重塑的一種特殊形式,可以通過transpose方法進行轉(zhuǎn)置。transpose方法需要傳入軸編號組成的元組。10十一月202477除了使用transpose外,可以直接利用數(shù)組的T屬性進行數(shù)組轉(zhuǎn)置。NumPy數(shù)值運算基礎(chǔ)數(shù)組的索引和切片一維數(shù)組的索引和切片一維數(shù)組的切片和索引與python的list索引類似10十一月202478In[29]:arr=np.arange(10)print(arr)print(arr[2])print(arr[-1])print(arr[1:4])Out[29]:[0123456789]29[123]NumPy數(shù)值運算基礎(chǔ)數(shù)組的索引和切片一維數(shù)組的索引和切片數(shù)組的切片返回的是原始數(shù)組的視圖,并不會產(chǎn)生新的數(shù)據(jù),這就意味著在視圖上的操作會使原數(shù)組發(fā)生改變。如果需要的并非視圖而是要復(fù)制數(shù)據(jù),則可以通過copy方法實現(xiàn)。10十一月202479In[30]:arr1=arr[-4:-1].copy()print(arr)print(arr1)Out[30]:[0123456789][678]NumPy數(shù)值運算基礎(chǔ)數(shù)組的索引和切片多維數(shù)組的索引對于多維數(shù)組,它的每一個維度都有一個索引,各個維度的索引之間用逗號分隔。也可以使用整數(shù)函數(shù)和布爾值索引訪問多維數(shù)組。10十一月202480In[31]:arr=np.arange(12).reshape(3,4)print(arr)print(arr[0,1:3])#索引第0行中第1列到第2列的元素print(arr[:,2])#索引第2列元素print('索引結(jié)果1:',arr[(0,1),(1,3)])#索引第1、2行中第0、2、3列的元素print('索引結(jié)果2:',arr[1:2,(0,2,3)])mask=np.array([1,0,1],dtype=np.bool)#mask是一個布爾數(shù)組,它索引第0,2行中第1列元素print('索引結(jié)果3:',arr[mask,1])Out[31]:[[0123][4567][891011]][12][2610]索引結(jié)果1:[17]索引結(jié)果2:[[467]]索引結(jié)果3:[19]NumPy數(shù)值運算基礎(chǔ)數(shù)組的運算數(shù)組的運算支持向量化運算,將本來需要在Python級別進行的運算,放到C語言的運算中,明顯地提高了程序的運算速度。1.數(shù)組和標(biāo)量間的運算數(shù)組之所以強大是因為不需要通過循環(huán)就可以完成批量計算,比如相同維度的數(shù)組的算術(shù)運算直接應(yīng)用到元素中。10十一月202481【例2-32】數(shù)組元素的追加。In[32]:a=[1,2,3]b=[]foriina:b.append(i*i)print('b數(shù)組:',b)wy=np.array([1,2,3])c=wy*2print('c數(shù)組:',c)Out[32]:b數(shù)組:[1,4,9]c數(shù)組:[246]NumPy數(shù)值運算基礎(chǔ)數(shù)組的運算2.ufunc函數(shù)ufunc函數(shù)全稱為通用函數(shù),是一種能夠?qū)?shù)組中的所有元素進行操作的函數(shù)。ufunc函數(shù)是針對數(shù)組進行操作,而且以NumPy數(shù)組作為輸出。對一個數(shù)組進行重復(fù)運算時,使用ufunc函數(shù)比使用math庫中的函數(shù)效率更高。常用的ufunc函數(shù)運算有四則運算、比較運算和邏輯運算。10十一月202482NumPy數(shù)值運算基礎(chǔ)數(shù)組的運算2.ufunc函數(shù)常用的ufunc函數(shù)運算有四則運算、比較運算和邏輯運算。1)四則運算:加(+)、減(-)、乘(*)、除(/)、冪(**)。數(shù)組間的四則運算表示對每個數(shù)組中的元素分別進行四則運算,所以形狀必須相同。2)比較運算:>、<、==、>=、<=、!=。比較運算返回的結(jié)果是一個布爾數(shù)組,每個元素為每個數(shù)組對應(yīng)元素的比較結(jié)果。3)邏輯運算:np.any函數(shù)表示邏輯“or”,np.all函數(shù)表示邏輯“and”。運算結(jié)果返回布爾值。10十一月202483NumPy數(shù)值運算基礎(chǔ)數(shù)組的運算2.ufunc函數(shù)常用的ufunc函數(shù)運算有四則運算、比較運算和邏輯運算。10十一月202484In[33]:x=np.array([1,2,3])y=np.array([4,5,6])print('數(shù)組相加結(jié)果:',x+y)print('數(shù)組相減結(jié)果:',x-y)print('數(shù)組相乘結(jié)果:',x*y)print('數(shù)組冪運算結(jié)果:',x**y)Out[33]:數(shù)組相加結(jié)果:
[579]數(shù)組相減結(jié)果:
[-3-3-3]數(shù)組相乘結(jié)果:
[41018]數(shù)組冪運算結(jié)果:
[132729]NumPy數(shù)值運算基礎(chǔ)數(shù)組的運算2.ufunc函數(shù)常用的ufunc函數(shù)運算有四則運算、比較運算和邏輯運算。10十一月202485數(shù)組的比較運算。In[34]:x=np.array([1,3,6])y=np.array([2,3,4])print('比較結(jié)果(<):',x<y)print('比較結(jié)果(>):',x>y)print('比較結(jié)果(==):',x==y)print('比較結(jié)果(>=):',x>=y)print('比較結(jié)果(!=):',x!=y)Out[34]:比較結(jié)果(<):[TrueFalseFalse]比較結(jié)果(>):[FalseFalseTrue]比較結(jié)果(==):[FalseTrueFalse]比較結(jié)果(>=):[FalseTrueTrue]比較結(jié)果(!=):[TrueFalseTrue]NumPy數(shù)值運算基礎(chǔ)數(shù)組的運算2.ufunc函數(shù)ufunc函數(shù)的廣播機制廣播(broadcasting)是指不同形狀的數(shù)組之間執(zhí)行算術(shù)運算的方式。10十一月202486In[35]:arr1=np.array([[0,0,0],[1,1,1],[2,2,2]])arr2=np.array([1,2,3])print('arr1:\n',arr1)print('arr2:\n',arr2)print('arr1+arr2:\n',arr1+arr2)Out[35]:arr1:[[000][111][222]]arr2:[123]arr1+arr2:[[123][234][345]]NumPy數(shù)值運算基礎(chǔ)條件邏輯運算在NumPy中可以利用基本的邏輯運算就可以實現(xiàn)數(shù)組的條件運算。這種方法對大規(guī)模數(shù)組處理效率不高,也無法用于多維數(shù)組。NumPy提供的where方法可以解決這些問題。where的用法:np.where(condition,x,y)滿足條件(condition),輸出x,不滿足則輸出y。10十一月202487NumPy數(shù)值運算基礎(chǔ)條件邏輯運算在NumPy中可以利用基本的邏輯運算就可以實現(xiàn)數(shù)組的條件運算。10十一月202488In[37]print(np.where([[True,False],[True,True]],[[1,2],[3,4]],[[9,8],[7,6]]))w=np.array([2,5,6,3,10])print(np.where(w>4))Out[37]array([[1,8],[3,4]])(array([1,2,4],dtype=int64),)NumPy數(shù)值運算基礎(chǔ)NumPy中的數(shù)據(jù)統(tǒng)計與分析1.排序
numpy.sort(a,axis,kind,order)
sort主要參數(shù)及其說明10十一月202489參數(shù)說明a要排序的數(shù)組kind排序算法,默認(rèn)為“quicksort”order如果數(shù)組包含字段,則是要排序的字段axis按指定軸對數(shù)據(jù)集排序。axis=1為沿橫軸排序;axis=0為沿縱軸排序;axis=None,將數(shù)組平坦化之后進行排序NumPy數(shù)值運算基礎(chǔ)NumPy中的數(shù)據(jù)統(tǒng)計與分析1.排序
numpy.sort(a,axis,kind,order)
10十一月202490In[38]:arr=np.array([7,9,5,2,9,4,3,1,4,3])print('原數(shù)組:',arr)arr.sort()print('排序后:',arr)Out[38]:原數(shù)組:
[7952943143]排序后:
[1233445799]NumPy數(shù)值運算基礎(chǔ)NumPy中的數(shù)據(jù)統(tǒng)計與分析1.排序
numpy.sort(a,axis,kind,order)
10十一月202491帶軸向參數(shù)的sort排序。In[39]:arr=np.array([[4,2,9,5],[6,4,8,3],[1,6,2,4]])print('原數(shù)組:\n',arr)arr.sort(axis=1)#沿橫向排序print('橫向排序后:\n',arr)Out[39]:原數(shù)組:
[[4295][6483][1624]]橫向排序后:
[[2459][3468][1246]]NumPy數(shù)值運算基礎(chǔ)NumPy中的數(shù)據(jù)統(tǒng)計與分析1.排序
使用argsort和lexsort函數(shù),可以在給定一個或多個鍵時,得到一個由整數(shù)構(gòu)成的索引數(shù)組,索引值表示數(shù)據(jù)在新的序列中的位置。10十一月202492使用argsort和lexsort函數(shù)進行排序。In[40]:arr=np.array([7,9,5,2,9,4,3,1,4,3])print('原數(shù)組:',arr)print('排序后:',arr.argsort())#返回值為數(shù)組排序后的下標(biāo)排列a=[2,5,8,4,3,7,6]b=[9,4,0,4,0,2,1]c=np.lexsort((a,b))print(c)Out[40]:原數(shù)組:
[7952943143]排序后:
[7369582014][4265310]NumPy數(shù)值運算基礎(chǔ)NumPy中的數(shù)據(jù)統(tǒng)計與分析2.重復(fù)數(shù)據(jù)與去重在數(shù)據(jù)統(tǒng)計分析中,需要提前將重復(fù)數(shù)據(jù)剔除。在NumPy中,可以通過unique函數(shù)找到數(shù)組中的唯一值并返回已排序的結(jié)果。
10十一月202493數(shù)組內(nèi)數(shù)據(jù)去重。In[41]:names=np.array(['紅色','藍(lán)色','黃色','白色','紅色'])print('原數(shù)組:',names)print('去重后的數(shù)組:',np.unique(names))Out[41]:原數(shù)組:
['紅色''藍(lán)色''黃色''白色''紅色']去重后的數(shù)組:
['白色''紅色''藍(lán)色''黃色']NumPy數(shù)值運算基礎(chǔ)NumPy中的數(shù)據(jù)統(tǒng)計與分析2.重復(fù)數(shù)據(jù)與去重10十一月202494統(tǒng)計分析中有時需要把一個數(shù)據(jù)重復(fù)若干次,在NumPy中主要使用tile和repeat函數(shù)實現(xiàn)數(shù)據(jù)重復(fù)?!纠?-42】使用tile函數(shù)實現(xiàn)數(shù)據(jù)重復(fù)。In[42]:arr=np.arange(5)print('原數(shù)組:',arr)wy=np.tile(arr,3)print('重復(fù)數(shù)據(jù)處理:\n',wy)Out[42]:原數(shù)組:
[01234]重復(fù)數(shù)據(jù)處理:
[012340123401234]NumPy數(shù)值運算基礎(chǔ)NumPy中的數(shù)據(jù)統(tǒng)計與分析2.重復(fù)數(shù)據(jù)與去重repeat函數(shù)的格式:numpy.repeat(A,reps,axis=None)其中參數(shù)“a”是需要重復(fù)的數(shù)組元素,參數(shù)“repeats”是重復(fù)次數(shù),參數(shù)“axis”指定沿著哪個軸進行重復(fù),axis=0表示按行進行元素重復(fù);axis=1表示按列進行元素重復(fù)。10十一月202495In[43]:arr1=np.arange(5)print('原數(shù)組:',arr1)w1=np.tile(arr,3)print('原數(shù)組重復(fù)3次:\n',np.tile(arr1,3))arr2=np.array([[1,2,3],[4,5,6]])print('重復(fù)數(shù)據(jù)處理:\n',arr2.repeat(2,axis=0))Out[43]:原數(shù)組:
[01234]原數(shù)組重復(fù)3次:
[012340123401234]重復(fù)數(shù)據(jù)處理:
[[123][123][456][456]]NumPy數(shù)值運算基礎(chǔ)3.常用統(tǒng)計函數(shù)NumPy中提供了很多用于統(tǒng)計分析的函數(shù),常見的有sum、mean、std、var、min和max等。幾乎所有的統(tǒng)計函數(shù)在針對二維數(shù)組的時候需要注意軸的概念。10十一月202496NumPy數(shù)值運算基礎(chǔ)3.常用統(tǒng)計函數(shù)10十一月202497【例2-44】NumPy中常用函數(shù)的使用。In[44]:arr=np.arange(20).reshape(4,5)print('創(chuàng)建的數(shù)組:\n',arr)print('數(shù)組的和:',np.sum(arr))print('數(shù)組縱軸的和:',np.sum(arr,axis=0))print('數(shù)組橫軸的和:',np.sum(arr,axis=1))print('數(shù)組的均值:',np.mean(arr))print('數(shù)組橫軸的均值:',np.mean(arr,axis=1))print('數(shù)組的標(biāo)準(zhǔn)差:',np.std(arr))print('數(shù)組橫軸的標(biāo)準(zhǔn)差:',np.std(arr,axis=1))Out[44]:創(chuàng)建的數(shù)組:
[[01234][56789][1011121314][1516171819]]數(shù)組的和:
190數(shù)組縱軸的和:[3034384246]數(shù)組橫軸的和:[10356085]數(shù)組的均值:
8.5數(shù)組橫軸的均值:[2.7.12.17.]數(shù)組的標(biāo)準(zhǔn)差:
4.766281297335398數(shù)組橫軸的標(biāo)準(zhǔn)差:[1.414213561.414213561.414213561.41421356]Pandas統(tǒng)計分析基礎(chǔ)Pandas(PythonDataAnalysisLibrary)是基于NumPy的數(shù)據(jù)分析模塊,它提供了大量標(biāo)準(zhǔn)數(shù)據(jù)模型和高效操作大型數(shù)據(jù)集所需的工具,可以說Pandas是使得Python能夠成為高效且強大的數(shù)據(jù)分析環(huán)境的重要因素之一。導(dǎo)入方式:importpandasaspd10十一月202498Pandas統(tǒng)計分析基礎(chǔ)Pandas中的數(shù)據(jù)結(jié)構(gòu)Pandas有三種數(shù)據(jù)結(jié)構(gòu)Series、DataFrame和Panel。Series類似于數(shù)組,DataFrame類似于表格,而Panel則可以視為Excel的多表單Sheet。10十一月202499Pandas統(tǒng)計分析基礎(chǔ)SeriesSeries是一種一維數(shù)組對象,包含了一個值序列,并且包含了數(shù)據(jù)標(biāo)簽,稱為索引(index),通過索引來訪問數(shù)組中的數(shù)據(jù)。Series的創(chuàng)建1)通過列表創(chuàng)建2)通過字典創(chuàng)建10十一月2024100Pandas統(tǒng)計分析基礎(chǔ)Series的創(chuàng)建1)通過列表創(chuàng)建10十一月2024101In[45]:importpandasaspdobj1=pd.Series([1,-2,3,-4])print(obj1)i=["a","c","d","a"]v=[2,4,5,7]obj2=pd.Series(v,index=i,name="col")print(obj2)Out[45]:011-2233-4dtype:int64a2c4d5a7Name:col,dtype:int64輸出的第一列為index,第二列為數(shù)據(jù)value。如果創(chuàng)建Series時沒有指定index,Pandas會采用整型數(shù)據(jù)作為該Series的index。所以Series有兩套描述某條數(shù)據(jù)的手段,即位置和標(biāo)簽。Pandas統(tǒng)計分析基礎(chǔ)Series的創(chuàng)建2)通過字典創(chuàng)建10十一月2024102如果數(shù)據(jù)被存放在一個Python字典中,也可以直接通過這個字典來創(chuàng)建Series。【例2-46】通過字典創(chuàng)建Series。In[46]:sdata={'Ohio':35000,'Texas':71000,'Oregon':16000,'Utah':5000}obj3=pd.Series(sdata)print(obj3)Out[46]:Ohio35000Texas71000Oregon16000Utah5000dtype:int64Pandas統(tǒng)計分析基礎(chǔ)Series的創(chuàng)建2)通過字典創(chuàng)建10十一月2024103對于許多應(yīng)用而言,Series域重要的一個功能是:它在算術(shù)運算中會自動對齊不同索引的數(shù)據(jù)?!纠?-47】不同索引數(shù)據(jù)的自動對齊。In[47]:sdata={'Ohio':35000,'Texas':71000,'Oregon':16000,'Utah':5000}obj1=pd.Series(sdata)states=['California','Ohio','Oregon','Texas']obj2=pd.Series(sdata,index=states)print(obj1+obj2)Out[47]:CaliforniaNaNOhio70000.0Oregon32000.0Texas142000.0UtahNaNdtype:float64Pandas統(tǒng)計分析基礎(chǔ)DataFrameDataFrame是一個表格型的數(shù)據(jù)結(jié)構(gòu),它含有一組有序的列,每列可以是不同的值類型(數(shù)值、字符串、布爾值等)。DataFrame既有行索引也有列索引,它可以被看作由Series組成的字典(共用同一個索引)。構(gòu)建DataFrame的方式有很多,最常用的是直接傳入一個由等長列表或NumPy數(shù)組組成的字典來構(gòu)建DataFrame。10十一月2024104Pandas統(tǒng)計分析基礎(chǔ)DataFrame10十一月2024105【例2-49】DataFrame的索引。In[49]:data={'name':['張三','李四','王五','小明'],'sex':['female','female','male','male'],'year':[2001,2001,2003,2002],'city':['北京','上海','廣州','北京']}df1=pd.DataFrame(data,columns=['name','year','sex','city'])display(df1)Out[49]:Pandas統(tǒng)計分析基礎(chǔ)索引對象Pandas的索引對象負(fù)責(zé)管理軸標(biāo)簽和其他元數(shù)據(jù)(如軸名稱等)。構(gòu)建Series或DataFrame時,所用到的任何數(shù)組或其他序列的標(biāo)簽都會被轉(zhuǎn)換成一個Index。10十一月2024106【例2-50】顯示DataFrame的索引和列。In[50]:display(df1)print(df1.index)print(df1.columns)Out[50]:
RangeIndex(start=0,stop=4,step=1)Index(['name','year','sex','city'],dtype='object')Pandas統(tǒng)計分析基礎(chǔ)索引對象1.重新索引索引對象是無法修改的,因此,重新索引是指對索引重新排序而不是重新命名,如果某個索引值不存在的話,會引入缺失值。10十一月2024107重建索引In[51]:obj=pd.Series([7.2,-3.3,3.5,3.6],index=['b','a',
'd','c'])obj.reindex(['a','b','c','d','e'])Out[51]:a-3.3b7.2c3.6d3.5eNaNdtype:float64對于重建索引引入的缺失值,可以利用fill_value參數(shù)填充。Pandas統(tǒng)計分析基礎(chǔ)索引對象1.重新索引10十一月2024108【例2-52】重建索引時填充缺失值。In[52]:obj.reindex(['a','b','c','d','e'],fill_value=0)Out[52]:a-3.3b7.2c3.6d3.5e0.0dtype:float64Pandas統(tǒng)計分析基礎(chǔ)索引對象1.重新索引10十一月2024109對于順序數(shù)據(jù),比如時間序列,重新索引時可能需要進行插值或填值處理,利用參數(shù)method選項可以設(shè)置:?
method=‘ffill’或‘pad’,表示前向值填充?
method=‘bfill’或‘backfill’,表示后向值填充【例2-53】缺失值的前向填充。In[53]:importnumpyasnpobj1=pd.Series(['blue','red','black'],index=[0,2,4])obj1.reindex(np.arange(6),method='ffill')Out[53]:0blue1blue2red3red4black5blackdtype:objectPandas統(tǒng)計分析基礎(chǔ)索引對象1.重新索引10十一月2024110缺失值的后向填充則對空缺值用后面的數(shù)據(jù)值進行填充,參數(shù)method取值'backfill'。對于DataFrame,reindex可以修改行索引或列索引。如果
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 陶瓷彩繪考試題及答案
- 電力考試試題及答案
- 國企工會面試題及答案
- 中醫(yī)針灸畢業(yè)考試試題及答案
- 警校色覺測試題及答案
- 水果導(dǎo)購考試題及答案
- 校園信息化安全知識培訓(xùn)課件
- 金融精算考試題及答案
- 自然音程測試題及答案
- 北京知識產(chǎn)權(quán)培訓(xùn)師課件
- 2025至2030年中國繼電保護及自動化設(shè)備行業(yè)市場現(xiàn)狀調(diào)查及發(fā)展趨向研判報告
- 關(guān)于醫(yī)院“十五五”發(fā)展規(guī)劃(2026-2030)
- 單元整體設(shè)計下教、學(xué)、評一體化的實施策略
- 云倉代發(fā)貨合同協(xié)議書
- DB32T 5124.3-2025 臨床護理技術(shù)規(guī)范 第3部分:成人危重癥患者有創(chuàng)動脈血壓監(jiān)測
- 本質(zhì)安全培訓(xùn)課件
- 技術(shù)團隊分紅協(xié)議書
- 應(yīng)聘個人簡歷標(biāo)準(zhǔn)版范文
- 全面深化信息安全培訓(xùn)提高醫(yī)護人員的保護意識與能力水平
- 2025-2030中國工業(yè)CT行業(yè)市場運行分析及發(fā)展趨勢與投資研究報告
- 2025年全球郵輪旅游的復(fù)蘇與創(chuàng)新探討
評論
0/150
提交評論