Python數據分析基礎教程PPT全套完整教學課件_第1頁
Python數據分析基礎教程PPT全套完整教學課件_第2頁
Python數據分析基礎教程PPT全套完整教學課件_第3頁
Python數據分析基礎教程PPT全套完整教學課件_第4頁
Python數據分析基礎教程PPT全套完整教學課件_第5頁
已閱讀5頁,還剩292頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

Python數據分析基礎教程第1章數據分析概述第2章Python與數據分析第3章Python語法基礎第4章NumPy數組與矢量計算第5章用NumPy進行簡單統計第6章數據可視化——Matplotlib庫第7章pandas數據分析基礎第8章用pandas進行數據預處理第9章機器學習庫scikit-learn入門第10章電影數據分析項目第1章數據分析概述學習目標:

了解數據、數據類型的基本概念。

了解數據分析的基本概念。

了解數據分析的過程。

了解數據分析的作用。

了解數據分析的常用工具。

所謂數據就是描述事物的符號,是對客觀事物的性質、狀態以及相互關系等進行記載的物理符號或者是這些物理符號的組合。在計算機系統中,各種文字、字母、數字符號的組合、圖形、圖像、視頻、音頻等統稱為數據,數據經過加工后就成為信息。在現實生活中,數據無所不在,如天氣預報、居民身份證號碼、快遞單和火車時刻表中就包含了大量的數據。人們就是通過數據來認識世界,交流信息。1.1.1數據的概念

數據與信息是既有聯系,又有區別。數據是信息的表現形式和載體,而信息則是數據的內涵,信息是加載于數據之上,對數據作具體含義的解釋。數據是符號,是物理性的,信息是對數據進行加工處理之后所得到的并對決策產生影響的數據,信息是數據有意義的表示。

當信息轉化為一組有助于更好地理解特定機制的規則時,信息就已經轉化為知識,人們就可以利用這些知識來預測事件的演變。1.1.1數據的概念

1.1.2數據類型

數據可以分為兩個不同的類別:

①類別型:定類和定序。

②數值型:離散和連續。

類別型數據是指可以被分成不同組或類別的值或觀察結果。有兩種類別型數據:定類(nominal)和定序(ordinal)。

數值型數據通過測量得到的數值或觀察結果。有兩種數值型數據:離散型和連續型。1.2.1數據分析的概念

數據分析是指用適當的統計分析方法對收集來的大量原始數據進行分析,為提取有用信息和形成結論而對數據加以詳細研究和概括總結的過程。數據分析的目的是抽取不易推斷的信息,而一旦理解了這些信息,就能夠對產生數據的系統的運行機制進行研究,從而對系統可能的響應和演變作出預測。

數據分析最初用作數據保護,現已發展成為數據建模的方法論。模型實際上是指將所研究的系統轉化成數學形式,一旦建立了數學或邏輯模型,對系統的響應能做出不同精度的預測。1.2.2數據分析的過程數據分析可以概括為下面幾個階段:1.

問題定義2.

數據采集3.

數據預處理4.

數據探索5.

數據可視化6.

預測模型7.評估模型8.部署解決方案1.2.2數據分析的過程問題定義

在數據分析前,首先需要明確數據分析目標,既本次數據分析要研究的主要問題和預期的分析目標等,這稱為問題定義。2.數據采集

問題定義步驟完成后,在分析數據之前,首先要做的就是獲取數據。數據的獲取方式有以下幾種:

①利用SQL語句直接從企業管理數據庫中調取相關業務數據。

②到特定的網站上去下載一些科研機構、企業、政府開放的公開數據集。③編寫網頁爬蟲,去收集互聯網上的數據。1.2.2數據分析的過程3.

數據預處理

數據預處理就是將數據采集所獲得的原始數據,經過數據清洗和數據轉換后,將原始數據轉變為“干凈”的數據。4.

數據探索

探索數據的本質是從圖形或統計數字中搜尋數據,以發現數據中的模式、聯系和關系。5.

數據可視化

數據可視化是獲得信息的最佳方式之一。通過視覺化呈現數據的方式,不僅能快速抓住要點信息,而且,還可以揭示通過簡單統計不能觀察到的模式和結論。1.2.2數據分析的過程6.

預測模型

預測模型是指用于預測的,用數學語言或公式所描述的事物間的數量關系。

模型主要有兩個方面的用途。

①使用回歸模型來預測系統所產生數據的值。

②使用分類模型或聚類模型為新數據分類。

根據輸出結果的類型,模型可分為以下三種。

①分類模型:模型輸出結果為類別型。

②回歸模型:模型輸出結果為數值型。

③聚類模型:模型輸出結果為描述型。1.2.2數據分析的過程7.

評估模型

模型評估階段也就是測試階段,該階段是從整個數據分析的初始數據集中抽取出一部分用作驗證集,并用驗證集去評估使用先前采集的數據所創建的模型是否有效。一般來說,用于建模的數據稱為訓練集,用于驗證模型的數據稱為驗證集。8.

部署解決方案

數據分析的最后一步是部署,旨在展示結果,也就是給出數據分析的結論,通常這個階段也稱為數據報告的撰寫。數據報告的撰寫應詳細描述分析結果、決策部署、風險分析和商業影響評估。1.2.3數據分析的作用

數據分析具有三大作用:

第一:現狀分析。所謂現狀有兩層含義,一層含義是指已經發生的事情,另一層含義是指現在所發生的事情。通過對企業的基礎周報或月報分析,可了解企業的整體運營情況,發現企業經營中的問題,明確企業的現狀。

第二:原因分析。如果通過現狀分析,了解了企業存在著某種隱患,則需要去分析該隱患。了解該隱患為什么會存在?是如何產生的?

第三:預測分析。在分析了現狀,也分析了原因后,就需要進行預測分析。通過現在所掌握的數據,來預測未來發展的趨勢等。

1.2.4數據分析的常用工具

目前主流的數據分析語言有Python、R、MATLAB這3種。表1-1從語言學習難易程度、使用場景、第三方支持、流行領域和軟件成本5方面比較了Python、R、MATLAB這3種數據分析工具。

本章小結

本章介紹了數據和數據分析的基本概念,重點介紹數據分析的過程,包括問題定義、數據采集、數據預處理、數據探索與數據可視化、預測模型、評估模型和部署等,以及數據分析的作用和數據分析的常用工具。謝謝!第2章Python與數據分析學習目標:

了解Python語言的特點。

了解Python與數據分析的關系。

了解Python數據分析常用的類庫。

掌握Python的環境搭建。

掌握PyCharm安裝與使用。

掌握JupyterNotebook安裝與使用。Python是一種面向對象的解釋型計算機程序設計語言,Python語言特點如下:

①Python是一種解釋型編程語言。

②Python是一種交互式編程語言。

③Python是一種面向對象編程語言。

④Python具有很高的可移植性。

⑤Python具有可擴展性。

⑥Python具有可嵌入性。

⑦Python提供了許多商業數據庫的接口,同時,還支持GUI編程。

⑧Python是一門開源的編程語言。

2.1.1Python語言的特點Python是一種解釋型編程語言,每次運行Python命令時,Python的解釋器就會啟動,此時就會出現Python命令提示符>>>。Python的解釋器可分為CPython、IPython、Jython、PyPy和IronPython幾種。2.1.2Python解釋器2.2Python與數據分析關系

常用的數據分析工具有Python語言、R語言、MATLAB等,但在大數據分析領域,Python是最受歡迎的主流程序語言。究其原因主要有:

第一,Python是一種解釋型編程語言。

第二,Python語言擁有和數據分析相關的大量開源庫和分析框架,可直接使用,非常方便。

第三,Python其實不是只能專用于數據分析,它還有很多其他方面的用途。如Python是一門通用型的編程語言,它也可以作為腳本來使用,還能操作數據庫;而且由于Django等框架的問世,Python近年來還用于開發Web應用。2.3Python數據分析常用的類庫Python數據分析中常用的庫有NumPy、pandas、Matplotlib和SciPy等,這些庫在數據分析中起著很重要的作用。

①NumPy(NumericalPython的簡稱)是Python科學計算的基礎包。

②pandas是Python數據分析的核心庫,它是基于NumPy構建的含有復雜數據結構和工具的數據分析包。

③Matplotlib是最流行的用于繪制數據圖表的Python庫,它非常適合創建出版物中用的圖表。Matplotlib提供了一整套和MATLAB相似的命令API,十分適合交互式地進行制圖。2.3Python數據分析常用的類庫④SciPy是一組專門用于科學計算的開源Python庫,它是構建于NumPy之上,提供了一個用于在Python中進行科學計算的工具集。SciPy經常與NumPy、pandas、Matplotlib和IPython這些核心庫一起使用。

⑤scikit-learn是一個簡單有效的數據挖掘和數據分析工具,scikit-learn是建立在NumPy、SciPy和Matplotlib的基礎之上,對一些常用的算法方法進行了封裝。Scikit-learn的基本功能主要被分為六大部分:分類,回歸,聚類,數據降維,模型選擇和數據預處理。

⑥IPython是Python科學計算標準工具集組成部分,它為交互式和探索式計算提供了一個高效率的開發環境。2.4Python的開發環境搭建Python3.6.3軟件安裝環境變量配置3.測試Python

按【win】+【r】鍵,進入cmd,輸入python,按回車鍵,進入Python的交互式終端,如圖2-7所示。在Python命令提示符>>>后可輸入Python命令代碼,按回車鍵后直接運行。2.5.1PyCharm安裝與使用1.PyCharm簡介PyCharm是由JetBrains公司開發的一款Python的集成開發環境軟件。2.PyCharm安裝

①在jetbrains官網(/pycharm/download/#section=windows)上下載社區版本的PyCharm軟件,軟件名稱為pycharm-community-2017.3.exe。

雙擊pycharm-community-2017.3.exe,打開PyCharm軟件安裝界面,參考教材安裝說明進行安裝和啟動PyCharm。2.5.1PyCharm安裝與使用3.PyCharm簡單設置,如更換主題、修改源代碼字體大小、編碼設置等。【操作演示】4PyCharm使用①新建項目

操作步驟:打開PyCharm,單擊“File->NewProject”,操作演示。

創建Python文件

操作步驟:右擊項目名稱,選擇“New->PythonFile”,操作演示。

③編寫和運行Python程序。

【操作演示】2.5.2JupyterNotebook安裝與使用1.JupyterNotebook簡介JupyterNotebook(又稱IPythonNotebook)是一個交互式的在線編輯器,它可以每編輯一行代碼就運行一行代碼,并且將運行的結果顯示在代碼的下方,以方便用戶查看。2.JupyterNotebook安裝

安裝步驟如下:

①按【win】+【r】鍵,進入cmd狀態。

②在cmd狀態的打開欄中輸入pipinstalljupyter命令,按回車鍵,進入jupyter模塊安裝。2.5.2JupyterNotebook安裝與使用③啟動JupyterNotebook。

安裝完成后,進入cmd狀態,在cmd狀態的打開欄中輸入JupyterNotebook命令,按回車鍵,即可啟動JupyterNotebook。3.新建一個Notebook【操作演示】2.5.2JupyterNotebook安裝與使用4.JupyterNotebook使用

①JupyterNotebook界面構成JupyterNotebook界面是由Notebook的名稱,菜單欄、工具欄和Notebook的內容編輯區組成。

②菜單欄組成

菜單欄中有File、Edit、View、Insert、Cell、Kernel、Help等功能。

③具欄組成

工具欄從左到右的按鈕依次為:保存、新建、剪切、復制、粘貼、上移cell、下移cell、運行代碼、終止運行、重啟內核、改變cell類型和命令面板等。2.5.2JupyterNotebook安裝與使用④單元模式

在Notebook中的單元有兩種模式:命令模式(CommandMode)與編輯模式(EditMode)。

⑤標題單元(Headingcell)使用⑥代碼單元(codecell)使用⑦Markdown單元使用

⑧單元操作⑨

其他操作JupyterNotebook其他操作如表2-9所示。5.JupyterNotebook高級功能項目實踐1、在Windows系統下搭建Python的開發環境。2、在Windows系統下安裝使用PyCharm,創建輸出“helloworld!”的程序。3、在Windows系統下安裝使用JupyterNotebook,創建輸出“helloworld!”的程序。本章小結

本章介紹了Python語言的特點,Python語言在數據分析中優勢,以及Python數據分析常用的類庫。重點是要掌握Python的環境搭建,Python集成開發環境PyCharm安裝與使用和JupyterNotebook安裝與使用。謝謝!第3章Python語言基礎學習目標:

掌握Python的基礎語法。

掌握Python的數據類型。

掌握Python流程控制語句的使用方法。

掌握Python函數的使用方法。

掌握數據結構、流程控制語句和函數的綜合運用。1.Python編碼設置Python3安裝后,系統默認其源碼文件為UTF-8編碼,但是如果編輯器不支持UTF-8編碼文件,或者要使用其編碼方式,就要為源文件指定特定的字符編碼。此時,需要在文件首行或者第二行插入一行特殊的注釋行作為字符編碼聲明,其格式如下。#-*-coding:UTF-8-*-

或者:

#coding:UTF-8和#coding=UTF-83.1.1Python的語法規則2.代碼注釋

在程序設計中,常常要對程序代碼添加注釋,Python的代碼注釋有下:①單行注釋

單行注釋通常是以#號開頭,在#號后面緊接的是注釋說明的文字。

注意:注釋行是不會被機器解釋的。編碼聲明也是以#號開頭,但它不是代碼注釋行,而且編碼聲明要放在首行或第二行才能被機器解釋。

3.1.1Python的語法規則

#這是輸出語句(單行注釋)

print("你好!歡迎到Python社區來!");#這是輸出語句(單行注釋)示例②多行注釋

在實際的程序文檔中常常需要進行多行注釋,多行注釋有以下兩種方法。

在每一行前加#號即可。

使用3個單引號或3個雙引號將注釋的內容括起來。3.1.1Python的語法規則

'''

這是使用3個單引號的多行注釋

這是使用3個單引號的多行注釋

'''

print("你好!歡迎到Python社區來!");示例3.Python標識符(1)Python標識符是由英文字母、數字及下劃線(_)組成。(2)Python中的標識符不能以數字開頭。(3)Python標識符是區分大小寫的。(4)以下劃線開頭的標識符是有特殊意義的,參見教材說明。4.Python關鍵字Python中的關鍵字見教材表3-1。

5.縮進代碼Python最具特色的就是用縮進方式來標識代碼塊。在同一個代碼塊的語句必須保證相同的縮進空格數,否則,程序會報錯。3.1.1Python的語法規則6.多行語句

在Python編程中,如果一條語句太長,可以使用反斜杠(\)將一行的語句換行分為多行,而不會被機器識別為多條語句。

但是在Python中,如果[],{}或()括號里面有多行語句,在換行時不需要使用反斜杠(\),而是使用逗號換行即可。

如果一行包含多條語句,則使用分號(;)對多條語句分隔。

3.1.1Python的語法規則7.Python空行

在Python中,一般在函數之間或類的方法之間用空行分隔,以表示一段新的代碼的開始。類和函數入口之間也可以用一行空行分隔,以突出函數入口的開始。

空行的作用是用于分隔兩段不同功能或含義的代碼,以便于代碼的閱讀、維護或重構。8.

用戶輸入函數

在Python中用戶輸入信息的語句是input()函數。9.代碼組

縮進相同的一組語句構成一個代碼塊,也稱之代碼組。3.1.1Python的語法規則10.print()輸出函數print()函數默認輸出是換行的,如果要實現不換行輸出就需要在變量末尾加上end=“”,參見教材示例。11.import與from...import語句

在Python中可以使用import或者from...import語句來導入相應的模塊。import與from...import的作用如表3-2。3.1.1Python的語法規則1.

常量Python中的常量,就如同數字3,2.34,1.3e-2和字符串“thisisastring”一樣,常量的值是不能改變的。2.變量(1)變量的特性Python中的變量是指存儲在計算機內存中的值。通過id()函數可以查看創建變量和變量重新賦值時內存空間的變化過程。

在Python中,變量是不需要提前聲明,創建時直接對其賦值即可,變量的數據類型是由賦值給變量的值決定。創建一個變量,首先要定義變量名和變量值,然后再通過賦值語句將變量值賦值給變量名。3.1.2常量、變量與標準數據類型2.變量(2)變量的命名規則(3)變量值就是賦值給變量的數據。(4)變量賦值

通過單變量賦值創建變量和輸出變量,除了單變量賦值外,Python還允許為多個變量賦值相同的值,其格式:a=b=c=1

另外,Python還可以為多個對象指定多個變量,

其格式:a,b,c=1,2,"john”3.1.2常量、變量與標準數據類型3.標準數據類型Python定義了一些標準的數據類型,以用于存儲各種類型的數據。其中,Python的六個標準的數據類型分別為numbers(數字)、string(字符串)、list(列表)、tuple(元組)、dictionary(字典)和集合(set)等。3.1.2常量、變量與標準數據類型

利用PyCharm開發工具編寫第一個Python的腳本程序的方法。

【例3-1】設計一個Python的腳本程序,該程序的功能是:當用戶輸入的成績大于85分,則輸出“優秀學生”,否則輸出“合格學生”,并設置程序編碼方式為UTF-8。3.1.3第一個Python程序1.Python3的數值型數據類型Python中的數字是用于存儲數值的,Python3支持的數值型數據類型有int(整數)、float(浮點數)、bool(布爾型)和complex(復數)。而數值型數據類型的表示方法見表3-3。

表3-3數值型數據類型

3.2.1數字2、數字創建與刪除

當給變量賦值一個數字時,數字(Number)對象就會被創建。如果要刪除這些對象引用可使用del語句。del語句的語法:delvar1[,var2[,var3[….,varN]]]3、數字類型轉換

在Python中,如果需要對數據內置的類型進行轉換,只需要將數據類型作為函數名即可。

如在Python交互式終端的命令提示符后輸入var=10.2;int(var),則會輸出10整數。3.2.1數字4、數字運算

數字運算有+(加)、-(減)、*(乘)、/(除)或//(除)、%(取余)、**(乘方)。如6+7、6-4、3*2、6/4(6除4,返回是浮點數)、6//4(6除4,返回是整數)、6%4(6除4取余)、6**2(6的2次方)。

【例3-2】說明Python中數字的運用。具體示例參見教材。

3.2.1數字3.2.2字符串Python中的字符串是一個有序的字符集合,是用于存儲表示文本的信息。1.字符串定義

在Python中,可以使用單引號(‘),雙引號(“)或三引號(’‘’”“”)來標識字符串,引號的開始與結束必須是相同類型的。具體示例參見教材。2.Python轉義字符

在Python的字符串中如需要使用特殊字符時,可使用反斜杠(\)轉義字符來定義,如換行符用”\n”表示。Python中常用的轉義字符見表3-4。3.2.2字符串3.字符串索引

字符串的索引分為正索引和負索引,通常說的索引就是指正索引。在Python中,正索引是從左到右去標記字母,索引是從0開始,也就是說從左邊開始第一個字母索引是0,第二個字母索引是1,依此類推。負索引是從右到左去標記字母,然后加上一個負號(-),負索引的第一個值是-1,也就是說從右邊開始第一個字母索引是-1,第二個字母索引是-2,依此類推。3.2.2字符串4.字符串的操作(1)

字符串提取

字符串的提取就是通過索引獲取字符串中指定位置的字符。字符串提取的方法是在變量名后使用方括號([])將需要提取的字符索引放置在方括號中即可。

例如變量var=‘Hello’,如果要提取出字符串中字母“H”和“e”,可用var[0]輸出“H”字母,用var[1]輸出“e”字母。3.2.2字符串字符串的操作(2)字符串切片

字符串切片方法是變量名后使用方括號([i:j]),其中i表示截取字符串的開始索引,j表示結束索引。注意:在截取字符串時將包含起始字符,但不包含結束字符,這是一個半開閉區間。同時,Python還提供了一個len()內置函數用于返回字符串(或其他有長度對象)的長度。

例如變量var=‘Hello’,如果要截取出子字符串“ell”,則使用var[1:4]即可。而使用var[2:5]則輸出“llo”子字符串。注意:在Python中,字符串是不可以更改的。3.2.2字符串字符串的操作(3)

字符串拼接

字符串拼接也就是將字符串連接,字符串連接的方法就是使用加號(+)將字符串變量連接起來。如果需要重復輸出字符串,可使用星號(*),重復輸出字符串格式:重復次數*字符串或者字符串*重復次數。另外,相鄰的兩個字符串本文會自動拼接在一起。(4)判斷字符串是否包含指定字符串

判斷字符串是否包含指定字符串的方法:使用(in)操作符。(5)判斷字符串中不包含指定字符串

判斷字符串中不包含指定字符串的方法:使用(notin)操作符。3.2.2字符串字符串的操作(6)字符串格式化Python格式化字符串方法,就是在格式化操作符(%)的左側放一個格式化字符串(包含%的字符串),在右側放一個或多個對象,這些對象是想在左側插入的轉換目標。Python字符串格式化符號見表3-5。

【例3-3】說明Python中字符串的運用。參見教材。3.2.3Python數據結構組成1.數據結構類型

除了數字和字符串外,Python還有4個內建的數據結構,也稱為容器(container),其中主要包含序列(如列表和元組)、映射(如字典)以及集合3種基本的數據結構類型。(1)序列類型

序列是數據結構對象的有序排列,Python中有6種內建的序列,包括字符串(string)、列表(list)、元組(tuple)、Unicode字符串、buffer對象和xrange對象,其中列表和元組是最常見的類型。3.2.3Python數據結構組成數據結構類型(2)映射類型

映射類型就是存儲了對象與對象之間的映射關系的數據結構類型,Python中唯一的映射類型的數據類型是字典。字典中的每個元素都存在相應的名稱(稱為鍵)與之一一對應。字典相當于帶有各自名稱的元素組成的集合,與序列不同的是字典中的元素沒有排列順序。(3)集合類型Python還提供了一種稱為集合的數據結構。集合當中的元素是不能重復出現,集合中的元素是相對唯一的,并且元素不存在排列順序。集合類型包括可變集合(set)和不可變集合(frozenset)。3.2.3Python數據結構組成2.可變數據類型與不可變數據類型區別Python中可變數據類型有列表(list)和字典(dict),不可變數據類型有整型(int)、浮點型(float)、字符串型(string)和元組(tuple)。

可變數據類型可以直接對數據結構對象進行元素的賦值修改、刪除或增加操作,而不需要重新創建一個對象。

不可變數據類型是不允許變量的值發生變化,如果改變了變量的值,相當于是新建了一個對象。3.2.4列表

列表(list)是Python對象作為其元素并按順序排列構成的有序集合。列表中的每個元素都有各自的位置編號,稱為索引。列表中的元素不需要具有相同的數據類型。1.創建列表

在Python中創建列表的方法有兩種,一種是使用方括號[]創建,另一種是使用list()函數創建。

(1)

使用方括號[]創建列表,只需要把所需的列表元素用逗號分隔開,并將這些列表元素用方括號([])括起來即可。3.2.4列表1.創建列表(2)使用list()函數創建列表Python中list()函數的作用實質上是將傳入的數據結構換成列表類型。例如向函數傳入一個元組對象,就會將對象從元組類型轉變為列表類型。如果不傳入任何對象到list()函數中,則會創建一個空列表,而通過list()函數對字符串創建列表非常有效。2.列表索引

列表是屬于序列類型的數據結構,列表中的每個元素都是有各自的位置編號(稱為索引)。列表索引與字符串的索引類似,也分為正索引(也稱為索引)和負索引兩種。3.2.4列表3.列表元素的提取和切片操作(1)通過索引訪問提取列表元素

為提取列表中的某個元素,可采用在列表對象后面緊接方括號[i],其中i是指定的索引。如果索引超出了列表正索引或負索引的范圍,Python會返回一個錯誤。(2)列表切片操作

列表切片操作時,需要傳入所提取子序列起始元素的索引,終止元素的索引和提取的步長值,此時得到的序列切片將包含從起始元素開始,以提取步長為間隔,到終止元素之前的所有元素。

切片操作的格式:序列對象[起始元素索引:終止元素索引:步長值]3.2.4列表4.列表中常用函數和方法

(1)列表元素的添加

①append()函數:使用append()函數向列表對象中添加元素的方法就是向append傳入需要添加到列表對象的一個元素,則該元素會被追加到列表的尾部。

②extend()函數:使用extend()函數能夠將另一個列表添加到列表的末尾,相當于將兩個列表進行拼接。

③insert()函數:使用insert()函數也可以向列表添加一個元素,但與append()函數不同是,insert()函數可以在指定位置添加。

具體示例見教材。3.2.4列表

(2)刪除列表元素

使用del語句刪除列表元素

格式:del列表[索引號]

使用pop語句刪除列表元素

使用pop語句刪除列表元素的方法是將元素的索引傳入pop語句中,將會獲取該元素,并將其在列表中刪除,相當于把列表中的元素抽離出來。若不指定元素位置,pop語句將指定是列表中最后一個元素。

使用pop語句格式:列表對象.pop(索引號)。3.2.4列表

(2)刪除列表元素

③使用remove語句刪除列表元素

除了指定元素的位置進行元素的刪除外,還可以指定元素進行刪除。將指定的元素放入remove語句,則列表中第一次出現的該元素會被刪除。

使用remove語句格式如下:列表對象.remove(元素值)。(3)

修改列表元素

由于列表是可變的,修改列表元素最簡單的方法是提取該元素并進行賦值操作。在對列表進行添加元素、刪除元素和修改元素操作時,如果需要保留原來的列表不變,只有采用copy語句創建列表的副本。copy語句的格式:列表對象.copy()3.2.4列表

(4)查詢列表元素位置

利用列表方法index來查詢指定元素在列表中第一次出現的位置索引。

判斷列表中是否包含某個元素,還可以使用in函數。in函數的格式如下。

元素in列表對象Python中還有其他常用的操作見表3-6。

3.2.5元組

元組與列表相似,都是有序元素的集合,并可以包含任意類型的元素。但元組與列表不同的是元組是不可變的,也就是說元組一旦創建后就不能修改。1.創建元組

(1)使用園括號()創建元組

元組創建很簡單,只需要使用園括號將有序元素括起來,并用逗號隔開。(2)使用tuple()函數創建元組tuple()函數能夠將其他數據結構對象轉換成元組類型。

具體示例見教材。

3.2.5元組2.元組索引

元組與列表類似,也分為正索引(也稱為索引)和負索引兩種。3.元組元素的提取和切片操作

(1)通過索引訪問提取元素

與列表索引訪問提取元素一樣,只要傳入元素索引,就可以獲得對應的元素。

(2)元組切片操作

元組切片操作與列表類似,只需要傳入所提取子序列起始元素的索引,終止元素的索引和提取的步長值即可。具體示例見教材。

3.2.5元組4.元組解包

將元組中的各個元素賦值給多個不同變量的操作通常稱為元組解包,元組解包的格式如下。var1,var2,…varn=tuple5.元組中常用方法和函數

元組中常用函數和方法見表3-7。【例3-4】說明Python中列表與元組的運用3.2.6字典

字典主要是通過鍵來訪問對應的元素,為了獲取指定鍵所關聯的值,將鍵放到一對方括號中,如“值=字典對象[鍵]”。1.創建字典

(1)使用花括號{}創建字典

字典是用花括號({})括起來的一系列鍵值對,其中每個鍵值(key=>value)對的鍵與值之間用冒號(:)分隔,各鍵值對之間用逗號(,)隔開,字典的格式如下。{key1:value1,key2:value2…,keyn:valuen}

(2)使用dict()函數創建字典

具體示例見教材。3.2.6字典2.獲取字典的元素

(1)通過鍵獲取字典元素

(2)使用字典get()函數具體示例見教材。3.字典常用函數和方法

(1)添加字典元素

通過向字典中傳入一個新的鍵,并對這個新鍵進行賦值操作,可實現向字典中添加一個元素的功能,其格式如下。dict_name[new_key]=new_value

字典中的update方法可實現將兩個字典中的鍵值對進行合并。3.2.6字典(2)刪除字典元素

使用del語句可以刪除某個鍵值對,另外,字典也包含pop語句,只要傳入鍵,函數就能將對應的值從字典中抽離,若要清空字典內容,可以使用字典方法的clear()函數。(3)修改字典元素,可使用鍵訪問賦值來修改。(4)查詢和獲取字典元素信息

除了可以使用字典元素提取的方法進行查詢外,還可以使用in()函數進行判斷。在字典方法中,可以使用keys獲取字典中的所有鍵,values獲取字典中的所有值,itmes得到字典中的所有鍵值對。

【例3-5】說明Python中字典的運用。3.2.7集合

集合(set)就是一個由唯一元素組成的非排序的集合體。1.創建集合

創建可變集合方法是使用花括號{}或set()函數。其格式如下。value0,value1,value2…}#花括號中元素是數字、字符串、元組set(value)#value是列表或元組2.集合的運算

見表3-8集合運算方法和表3-9集合運算符,。3.集合常用函數和方法

見表3-10集合常用函數和方法

【例3-6】說明Python中集合的運用。3.3.1if條件語句if條件語句的基本語法格式如下。

if條件表達式:

語句塊if語句執行過程,首先判斷條件表達式(也就是布爾表達式)是否成立,即條件表達式是否為真(True),如果為真(True),則執行冒號(:)下面的語句塊,否則,就不執行該語句塊。if語句控制結構圖如圖3-4所示。

3.3.1if條件語句

除了單路分支語句外,還會經常遇到多路分支語句。多路分支語句的語法格式如下。if條件表達式1:

分支一語句塊elif條件表達式2:

分支二語句塊else:

分支三語句塊

3.3.2while循環控制語句Python中的循環控制語句有while語句和for語句,其中,while語句是常用的循環控制語句之一,它的語法格式如下。while(條件表達式):

語句塊

while語句的執行過程,首先判斷條件表達式是否為真,如果結果為真,則執行條件表達式冒號(:)后的語句塊,執行完畢后再次判斷條件表達式是否為真,如果仍然為真,則再次執行冒號(:)后的語句塊,如此反復,直到條件表達式為假。循環控制語句的控制結構如圖3-5所示。

3.3.3for循環控制語句

在Python中,for循環是一個通用的序列迭代器,可以遍歷任何有序列的序列,如字符串、列表、元組等。Python中的for語句接收可迭代對象,如序列和迭代器作為其參數,每次循環可以調取其中的一個元素。Python的for循環看上去像偽代碼,非常簡潔。for循環控制語句的格式如下。

for<變量>in<序列>:

語句塊

3.3.4range()函數作用range()函數是Python的內置函數,它可以返回一系列連續添加的整數,生成一個列表對象。range()函數常用在for循環中可作為索引使用。

在Python3.0中range()函數是一個迭代器。range()函數語法格式如下。range(start,end[,step])1、函數中的參數說明2、在Python中,range()函數的作用

3.3.5break、continue、pass語句1.break語句

在while和for循環中,break語句的作用是終止循環語句,即循環條件沒有False條件或者序列還沒被完全遞歸完,就停止執行循環語句,跳出循環。在嵌套循環中,break語句可以停止執行最深層的循環,并開始執行下一行代碼。

在Python中,break語句的語法為break。

3.3.5break、continue、pass語句2.continue語句

在while和for循環中,continue語句作用是告訴Python跳過當前循環的剩余語句,然后繼續進行下一輪循環。continue語句與break語句不同,continue語句是跳出本次循環,而break語句是跳出整個循環。continue語句的語法格式為continue。3.pass語句pass是空語句,作用是保持程序結構的完整性。pass語句不做任何事情,一般用做占位語句。pass語句的語法格式為pass。

3.4.1自定義函數

在Python中定義函數方法是以def關鍵詞開頭,其后緊接函數標識符名稱和圓括號()。園括號內包含將要在函數體中使用的形式參數(簡稱形參),各參數之間用逗號分割,定義語句以冒號(:)結束。函數體編寫另起一行,函數體的縮進為4個空格或者一個制表符,函數定義的語法格式如下。def函數名(參數列表):

函數體3.4.2設置函數參數

參數對于函數而言,只是作為函數的輸入,目的是調用函數時,可以傳遞不同的值給函數,然后得到相應的結果。

在定義函數時,函數名后面,園括號中的變量名稱為形式參數,或者稱為"形參";在調用函數時,函數名后面,園括號中的變量名稱叫做實際參數,或者稱為"實參"。Python中的函數參數主要有位置參數、關鍵字參數、默認參數和可變參數。3.4.3返回函數值

函數可以處理一些數據,并返回一個或一組值。函數返回的值稱為返回值。如果想要保存或者調用函數的返回值,需要用到return語句。

Python對函數返回值的數據類型沒有限制,包括列表或字典等復雜的數據結構。當程序執行到函數中的return語句時,就會將指定的值返回并結束函數,后面語句不會被執行。3.4.4調用自定義函數Python中使用“函數名()”的格式對函數進行調用,根據參數傳入方式不同,總共有3種函數調用方式,分別為位置參數調用、關鍵字參數調用、可變參數調用。具體示例見教材。

3.4.5局部變量和全局變量1.局部變量

在定義函數時,往往需要在函數內部對變量進行定義和賦值,在函數體內定義的變量為局部變量,局部變量只能在其被賦值的函數內部訪問。2.全局變量

定義在函數體外的變量稱為全局變量。全局變量可以在函數體內被調用。具體示例見教材。3.4.6函數嵌套Python允許在函數中定義另外一個函數,這就是函數的嵌套。定義在其他函數內部的函數稱為內建函數,而包含有內建函數的函數稱為外部函數。其中,內建函數中的局部變量獨立于外部函數,如果想使用外部函數的變量,則需要聲明該變量為全局變量。具體示例見教材3.4.7匿名函數Python是使用lambda創建匿名函數。所謂匿名,就是不使用def語句定義一個函數。lambda的主體是一個表達式,只能在lambda表達式中封裝有限的邏輯。lambda函數擁有自己的命名空間,并且不能訪問自己參數列表之外或全局命名空間里的參數。具體示例見教材。項目實踐項目描述

設計一個購物車處理程序,完成如下操作。創建商品價格表,包括商品名稱、商品價格,商品內容自擬。創建一個購物車,購物車用于保存所購商品名稱和商品價格。輸入提示信息:購物金額上限、商品編號或p打印,m移出,v查看,q退出操作符。當購物車內商品貨款合計大于購物金額時,提示不能購買商品。當購物車內商品貨款合計小于購物金額時,返回重新選擇購物操作。選擇“p”打印出購物清單,包括商品名稱、商品價格、購物合計金額和余額選擇“m”移出購買商品,首先顯示購物清單,輸入購買車中商品編號,刪除購物車中商品,重新顯示修改后購物清單。選擇“v”查看購物清單。選擇“q”退出購物程序。本章小結

本章介紹了Python基礎語法,Python的數字、字符串、列表、元組、字典和集合等數據類型的特點和運用,Python的條件分支語句、for循環和while循環語句運用,以及函數的基本概念,創建函數和調用函數的方法等。最后通過項目實踐,介紹了運用Python的列表、流程控制語句和函數,設計一個Python購物車項目。謝謝!第4章NumPy數組與矢量計算學習目標:

了解NumPy和SciPy作用與安裝。

掌握創建數組對象方法。

掌握數組的索引、切片和其他操作。

掌握數組的運算和通用函數使用。

掌握NumPy矩陣創建、計算和操作。

掌握隨機數生成的方法。NumPy(NumericalPython的縮寫)是一個開源的Python科學計算庫,它是一個由多維數組對象和用于處理數組的例程集合組成的庫。

1.NumPy的基本功能如下。提供了一個具有矢量算術運算和復雜廣播功能的快速且節省空間的多維數組對象ndarray。用于對數組執行元素級計算以及直接對數組執行數學運算的函數。用于讀寫硬盤上基于數組的數據集的工具,以及用于操作內存映射文件的工具。提供了線性代數、隨機數生成以及傅立葉變換功能。用于集成由C、C++、Fortran等語言編寫的代碼的工具。在數據分析方面,NumPy還可作為在算法之間傳遞數據的容器。

4.1.1NumPy簡介2.在Python中使用NumPy的優勢①在數值計算時,使用NumPy能夠直接對數組和矩陣進行操作。②NumPy中數組的存儲效率和輸入輸出性能均遠遠優于Python中等價的基本數據結構。③NumPy的大部分代碼都是用C語言寫成的,這使得NumPy比純Python代碼高效得多。④NumPy通常與SciPy(ScientificPython)和Matplotlib(繪圖庫)一起使用。⑤NumPy是開源的庫。4.1.1NumPy簡介1.測試Python環境中是否安裝了NumPy

在Windows操作系統下,按【win】+【r】鍵,進入cmd命令窗口,輸入“python”命令,按回車鍵,進入Python命令窗口。在Python命令窗口中輸入“fromnumpyimport*”命令,如果在命令窗口中出現“ModuleNotFoundError:Nomodulenamed‘numpy’”的錯誤提示,則需要安裝NumPy。在Windows操作系統下安裝NumPy方法PyCharm安裝NumPy方法

4.1.2NumPy安裝與測試

SciPy是世界著名的Python開源科學計算庫,它是建立在NumPy基礎之上,增加了眾多的數學、科學以及工程計算中常用的庫函數。它增加的功能包括插值、積分、最優化、統計、線性代數、傅里葉變換、圖像處理和常微分方程求解器等一些專用函數。

與NumPy庫相同,SciPy也是需要單獨安裝,安裝步驟如下。1.測試Python環境中是否安裝了SciPy2.在Windows操作系統下安裝SciPy3.

PyCharm安裝SciPy4.1.3SciPy簡介及其安裝與測試

在科學計算中,常常會遇到數組和矩陣的計算,如有兩個一維數組x和y,其中,x的值為0-10的整數,y的值為0-10的整數的平方,需要計算x與y的一維數組相加。1.利用Python的循環語句來實現兩個一維數組相加示例2.利用NumPy實現兩個一維數組相加的示例3.比較兩種方法的計算速度4.1.4NumPy的簡單應用:一維數組相加

NumPy提供了兩種基本對象:ndarray(N-dimensionalArrayObject)和ufunc(UniversalFunctionObject)。其中ndarray是一個多維數組對象,而ufunc則是能夠對數組進行處理的函數。NumPy數組一般是同質的(但特殊的數組類型可以是異質的),即數組中所有元素的數據類型必須一致。NumPy數組的下標也是從0開始的。數組元素的數據類型用數據類型對象表示,數據類型對象是numpy.dtype類的實例。4.2.1創建數組對象

利用NumPy提供的array()函數可以創建一維或多維數組,其基本語法格式如下。numpy.array(object,dtype=None,copy=True,order=None,subok=False,ndmin=0)

其中:object:表示想要創建數組,無默認。dtype:表示數組的所需要的數據類型,默認為None。ndmin:指定生成數組應該具有的最小維數,默認為None。

在創建數組時,object是唯一必要的參數,其余參數均為默認的可選參數。4.2.1創建數組對象創建數組后,選取數組中的某個特定元素的方法如下。

數組名[m,n]

其中m和n為數組元素下標。注意,數組的下標是從0開始。

例如在example4-3示例中,創建了一個二維數組arr2,arr2數組元素及與其對應的位置如表4-1、表4-2所示。4.2.2選取數組元素數組的屬性及說明如表4-3所示4.2.3數組的屬性

說明,數組的shape屬性不僅能顯示數組的行數或列數,而且還可以調整數組的行和列的大小。1.使用arange()函數創建一維數組2.使用linspace()函數創建數組3.使用logspace()函數創建等比數列4.使用zeros()、eye()、identity()、diag()和ones()函數創建特殊數組5.使用asarray()函數創建數組6.使用empty()函數創建數組具體示例見教材。4.2.4創建數組的其他方法Python支持的數據類型有整型、浮點型以及復數型,但這些類型不足以滿足科學計算的需求,因此NumPy添加了很多其他的數據類型。在實際應用中,為了提高計算結果的準確度,需要使用不同精度的數據類型,并且不同的數據類型所占用的內存空間也是不同的。在NumPy中,大部分數據類型名是以數字結尾的,這個數字表示其在內存中占用的位數。

1.NumPy中支持的數據類型

見表4-4NumPy的基本數據類型及描述4.2.5Numpy的數據類型2.數組的數據類型轉換數組有一個dtype屬性,通過該屬性可以查看數組的數據類型,方法是數組名.dtype。而數組的數據類型在創建數組時就已經通過dtype參數確定了,如果想實現數組中數值類型的轉換可采用astype()函數。astype()函數的格式如下。數組名.astype(numpy.數據類型)4.2.5Numpy的數據類型3.自定義數據類型

自定義數據類型是一種異構數據類型,可以將它看作是電子表格的標題行的數據。例如,創建一個存儲產品價格信息的數據類型。其中,產品名稱是用字符串表示的長度為50個字符,產品價格是用32位單精度浮點數表示。那么,使用自定義數據類型來創建數組的方法如下。

(1)使用dtype創建自定義數據類型

(2)

查看數據類型,可直接查看或使用numpy.dtype()函數查看

(3)使用array()函數創建數組時,使用dtype指定數組的數據類型為pro_type(自定義數據類型)具體示例見教材4.2.5Numpy的數據類型1.一維數組的索引與切片

一維數組的操作類似于Python中列表(list)類型的操作。如:

一維數組arr=[a0,a1,a2,a3,a4……,an]

數組索引(下標)01234n(1)利用數組索引(下標)獲取指定元素

獲取數組中指定元素的方法如下。

數組名[索引(下標)]

例如,獲取數組arr中第4個元素a3用arr[3]即可。4.3.1數組的索引和切片一維數組的索引與切片(2)數組的切片

截取數組中某個范圍之間元素的方法如下。

數組名[start:end:step]

其中,start表示截取數組中開始元素的索引(下標),end表示截取數組中結束元素的索引(下標),但是不包括end索引(下標)所指定的元素,step表示步長。

例如,截取arr數組中第2個元素至第5個元素,包括第5個元素,則使用arr[1:5]。4.3.1數組的索引和切片2.二維數組的索引與切片

二維數組是由行和列組成,二維數組中的每一行相當于一維數組。二維數組中元素的索引是由該元素所在的行下標和列下標組成,即由元素的行索引和列索引組成。

如arr是二維數組,該二維數組元素用arr[行索引,列索引]表示,該二維數組中元素與索引的對應關系如下。4.3.1數組的索引和切片(1)利用二維數組的行索引和列索引獲取指定元素

方法:

數組名[行索引,列索引]

例如,獲取二維數組中第2行第2列的元素,用arr[1,1]即可。(2)二維數組的切片

截取二維數組中某個區域之間元素的方法:

數組名[rows_start:rows_end:rows_step,cols_start:cols_end:cols_step]

其中:rows_start:rows_end表示截取數組中元素的行索引范圍,

cols_start:cols_end表示截取數組中元素的列索引范圍,但不包括rows_end行索引和cols_end列索引所指定的元素,rows_step表示行索引的步長,cols_step表示列索引的步長。4.3.1數組的索引和切片

示例代碼example4-5見教材3.整數索引

整數索引就是從兩個序列的對應位置取出兩個整數來組成行下標和列下標。

示例代碼example4-6見教材。4.布爾值索引

當結果對象是布爾運算(例如比較運算符)的結果時,將使用布爾值索引。

示例代碼example4-7見教材。4.3.1數組的索引和切片1.用元組設置維度修改數組的形狀方法:

數組名.shape=(x0,x1,x2…,xn)

參數x0-xn表示數組中每個維度上的大小,例如arr.shape=(3,4)表示將arr數組修改成3行4列數組,利用該方法會改變原數組arr的形狀。2.reshape()函數

用reshape()函數修改數組的形狀方法:

數組名.reshape(x0,x1,x2…,xn)

參數x0-xn表示數組中每個維度上的大小。例如arr.reshape(3,4)生成一個3行4列新數組,而原數組arr不會改變。如果指定的維度和數組的元素數目不吻合,則函數將拋出異常。

4.3.2修改數組形狀3.resize()函數

該函數是返回指定大小的新數組。如果新數組的大小大于原始數組的大小,則包含原始數組中的元素的重復副本,該函數修改數組形狀方法:

數組名.resize(x0,x1,x2…,xn)

參數x0-xn表示數組中每個維度上的大小。例如arr.resize(3,4)表示將arr數組修改成3行4列數組,原數組arr形狀改變。這種方法與用shape屬性修改數組的形狀相似。4.修改數組的形狀示例代碼example4-8見教材。

4.3.2修改數組形狀1.ravel()函數

在NumPy中,可以使用ravel()函數將多維數組展平(即變成一維數組),展平數組元素的順序通常是“C風格”的,就是以行為基準。

用ravel()函數展平數組的方法:數組名.ravel()

例如arr.ravel()返回將arr數組展平成一維新數組視圖,原數組arr不改變。2.flatten()函數flatten()函數也是將多維數組展平,用flatten()函數展平數組的方法:

數組名.flatten()

例如arr.flatten()表示將arr數組展平成一維新數組,原數組arr不改變。3.數組的展平示例代碼example4-9見教材。4.3.3數組的展平1.transpose()函數

該函數可實現翻轉給定數組的維度,并且返回數組的1個視圖(view)。

使用transpose()函數的方法:

numpy.transpose(arr)

參數arr表示是要轉置的數組。

例如arr是一個3行5列數組,numpy.transpose(arr)函數就會返回arr數組轉置為5行3列的數組視圖,而原數組arr不改變。2.ndarray.T函數

該函數是屬于ndarray類,作用類似于numpy.transpose4.3.4數組轉置和軸對換3.rollaxis()函數

該函數可實現向后滾動特定的軸,直到1個特定位置。

使用rollaxis()函數方法:

numpy.rollaxis(arr,axis,start)

該函數中參數arr表示數組,axis表示要向后滾動的軸,其它軸的相對位置不會改變,start表示滾動到特定位置,默認為零,表示完整的滾動。4.swapaxes()函數

該函數是交換數組的兩個軸。對于1.10之前的NumPy版本,會返回交換后數組的視圖。

使用swapaxes()函數的方法:numpy.swapaxes(arr,axis1

溫馨提示

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

評論

0/150

提交評論