Python數(shù)據(jù)分析報告-3_第1頁
Python數(shù)據(jù)分析報告-3_第2頁
Python數(shù)據(jù)分析報告-3_第3頁
Python數(shù)據(jù)分析報告-3_第4頁
Python數(shù)據(jù)分析報告-3_第5頁
已閱讀5頁,還剩79頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Python學(xué)習(xí)數(shù)據(jù)分析與數(shù)據(jù)挖掘?第一頁,編輯于星期六:一點四十分。認(rèn)識PythonPython是一種解釋型、面向?qū)ο蟆討B(tài)數(shù)據(jù)類型的高級程序設(shè)計語言。Python由Guido

van

Rossum于1989年底發(fā)明,第一個公開發(fā)行版發(fā)行于1991年。

Python是純粹的自由軟件,源代碼和解釋器CPython遵循GPL(GNUGeneral

Public

License)協(xié)議

Python具有豐富和強大的庫。它常被昵稱為膠水語言,能夠把用其他語言制作的各種模塊(尤其是C/C++)很輕松地聯(lián)結(jié)在一起。常見的一種應(yīng)用情形是,使

用Python快速生成程序的原型,然后對其中有特別要求的部分,用更合適的語言改寫,比如3D游戲中的圖形渲染模塊,性能要求特別高,就可以用C/C++重寫,而后封裝為Python可以調(diào)用的擴展類庫。第二頁,編輯于星期六:一點四十分。Python優(yōu)點有哪些Python是一種開源的、解析性的,面向?qū)ο蟮木幊陶Z言Python使用一種優(yōu)雅的語法,可讀性強Python具有豐富的庫,可以處理各種工作Python支持類和多層繼承等的面向?qū)ο缶幊碳夹g(shù)

Python可運行在多種計算機平臺和操作系統(tǒng)中,如Unix、Windows、MacOS、Ubuntu、OS/2等等第三頁,編輯于星期六:一點四十分。為什么選擇Python進行數(shù)據(jù)分析

在眾多解釋型語言中,Python最大的特點是擁有一個巨大而活躍的科學(xué)計算社區(qū)。進入21世紀(jì)以來,在行業(yè)應(yīng)用和學(xué)術(shù)研究中采用python進行科學(xué)計算的勢頭越

來越猛。

近年來,由于Python有不斷改良的庫(主要是pandas),使其成為數(shù)據(jù)處理任務(wù)的一大代替方案,結(jié)合其在通用編程方面的強大實力,完全可以只是用Python這一種語言去構(gòu)建以數(shù)據(jù)為中心的應(yīng)用程序。

作為一個科學(xué)計算平臺,Python的成功源于能夠輕松的集成C、C++以及

Fortran代碼。大部分現(xiàn)代計算機環(huán)境都利用了一些Fortran和C庫來是西安線性代數(shù)、優(yōu)選、積分、快速傅里葉變換以及其他諸如此類的算法。第四頁,編輯于星期六:一點四十分。課程內(nèi)容Python環(huán)境搭建python版本選擇1.2

python安裝2.Python基礎(chǔ)2.1

python基礎(chǔ)語法2.2

python數(shù)據(jù)類型2.3

條件和循環(huán)2.4

Python函數(shù)2.5

Python模塊2.6

Python文件I/OPython庫介紹NumPy庫介紹3.2

Pandas庫介紹4.數(shù)據(jù)處理與分析4.1

數(shù)據(jù)探索

4.2

數(shù)據(jù)預(yù)處理4.3

挖掘建模實例分析Titanic數(shù)據(jù)集分析5.2

餐飲客戶價值分析第五頁,編輯于星期六:一點四十分。1.1

Python環(huán)境搭建Python2.X和Python3.X–Python的3.0版本,常被稱為Python

3000,或簡稱Py3k。相對于Python的

期版本,這是一個較大的升級。–為了不帶入過多的累贅,Python3.0在設(shè)計的時候沒有考慮向下相容,許多針對

期Python版本設(shè)計的程式都無法在Python

3.0上正常執(zhí)行。–大多數(shù)第三方庫都正在努力地相容Python

3.0版本。即使無法立即使用Python

3.0,也建議編寫相容Python

3.0版本的程式,然后使用Python

2.6,Python

2.7來執(zhí)行。In

summary

:

Python

2.x

is

legacy,

Python

3.x

is

the

presentand

future

of

the

language第六頁,編輯于星期六:一點四十分。1.2

Python安裝Unix

&

Linux平臺安裝Python–打開WEB瀏覽器訪問h

tp:/w./download/選擇適用于Unix/Linux的源碼壓縮包。下載及解壓壓縮包。如果你需要自定義一些選項修改Modules/Setup執(zhí)行./configure腳本makemake

insta

l第七頁,編輯于星期六:一點四十分。Window平臺安裝Python打開WEB瀏覽器訪問/download/在下載列表中選擇Window平臺安裝包,包格式為:python-XYZ.msi

文件,XYZ

為你要安裝的版本號。要使用安裝程序python-XYZ.msi,Windows系統(tǒng)必須支持MicrosoftInstaller2.0搭配使用。只要保存安裝文件到本地計算機,然后運行它,看看你的機器支持MSI。WindowsXP和更高版本已經(jīng)有MSI,很多老機器也可以安裝MSI。下載后,雙擊下載包,進入Python安裝向?qū)?,安裝非常簡單,你只需要使用默認(rèn)的設(shè)置一直點擊"下一步"直到安裝完成即可。第八頁,編輯于星期六:一點四十分。集成開發(fā)環(huán)境選擇PyCharmPyCharm

是由JetBrains

打造的一款Python

IDE,支持macOS、Windows、Linux

系統(tǒng)。PyCharm

功能:調(diào)試、語法高亮、Project管理、代碼跳轉(zhuǎn)、智能提示、自動完成、單元測試、版本控制……PyCharm

下載地址

:

h

tps:

/

w./pycharm/download/第九頁,編輯于星期六:一點四十分。Pycharm軟件界面第十頁,編輯于星期六:一點四十分。編寫我的第一個Python程序Hello

World程序簡單的計算器第十一頁,編輯于星期六:一點四十分。2.1

Python基本語法Python標(biāo)識符在Python

里,標(biāo)識符由字母、數(shù)字、下劃線組成。在Python中,所有標(biāo)識符可以包括英文、數(shù)字以及下劃線(_),但不能以數(shù)字開頭。Python

中的標(biāo)識符是區(qū)分大小寫的。Python

可以同一行顯示多條語句,方法是用分號;分開。

以下劃線開頭的標(biāo)識符是有特殊意義的。以單下劃線開頭_foo

的代表不能直接訪問的類屬性,需通過類提供的接口進行訪問,不能用from

xxx

import

*

而導(dǎo)入以雙下劃線開頭的

foo

代表類的私有成員;以雙下劃線開頭和結(jié)尾的

foo

代表

Python里特殊方法專用的標(biāo)識,如

init

()

代表類的構(gòu)造函數(shù)。第十二頁,編輯于星期六:一點四十分。Python保留字符下面的列表顯示了在Python中的保留字。這些保留字不能用作常數(shù)或變數(shù),或任何其他標(biāo)識符名稱。所有Python

的關(guān)鍵字只包含小寫字母。andexecnota

sertfinalyorbreakforpa

scla

sfromprintcontinueglobalraisedefifreturndelimporttryelifinwhileelseiswithexceptlambdayield第十三頁,編輯于星期六:一點四十分。行和縮進學(xué)習(xí)Python

與其他語言最大的區(qū)別就是,Python

的代碼塊不使用大括號{}來控制類,函數(shù)以及其他邏輯判斷。python

最具特色的就是用縮進來寫模塊??s進的空白數(shù)量是可變的,但是所有代碼塊語句必須包含相同的縮進空白數(shù)量,這個必須嚴(yán)格執(zhí)行。以下代碼會執(zhí)行錯誤:第十四頁,編輯于星期六:一點四十分。?Python引號Python

可以使用引號(")、雙引號(")、三引號("""或""")來表示字符串,引號的開始與結(jié)束必須的相同類型的。其中三引號可以由多行組成,編寫多行文本的快捷語法,常用于文檔字符串,在文件的特定地點,被當(dāng)做注釋。第十五頁,編輯于星期六:一點四十分。Python注釋python中單行注釋采用#開頭python

中多行注釋使用三個單引號(""")或三個雙引號(""")。第十六頁,編輯于星期六:一點四十分。2.2

Python數(shù)據(jù)類型標(biāo)準(zhǔn)數(shù)據(jù)類型Python

定義了一些標(biāo)準(zhǔn)類型,用于存儲各種類型的數(shù)據(jù)。Python有五個標(biāo)準(zhǔn)的數(shù)據(jù)類型:–Numbers(數(shù)字)–String(字符串)–List(列表)–Tuple(元組)–Dictionary(字典)第十七頁,編輯于星期六:一點四十分。Python數(shù)字–數(shù)字?jǐn)?shù)據(jù)類型用于存儲數(shù)值。他們是不可改變的數(shù)據(jù)類型,這意味著改變數(shù)字?jǐn)?shù)據(jù)類型會分配一個新的對象。當(dāng)你指定一個值時,Number對象就會被創(chuàng)建。var1

=

1var2

=

10–可以通過使用del語句刪除單個或多個對象的引用。例如:del

vardel

var_a,

var_b–Python支持四種不同的數(shù)字類型:int(有符號整型)long(長整型[也可以代表八進制和十六進制])float(浮點型)complex(復(fù)數(shù))第十八頁,編輯于星期六:一點四十分。Python字符串–字符串或串(String)是由數(shù)字、字母、下劃線組成的一串字符。s="a1a2···an"(n>=0)–python的字串列表有2種取值順序:從左到右索引默認(rèn)0開始的,最大范圍是字符串長度少1從右到左索引默認(rèn)-1開始的,最大范圍是字符串開頭–如果你要實現(xiàn)從字符串中獲取一段子字符串的話,可以使用變量[頭下標(biāo):尾下標(biāo)],就可以截取相應(yīng)的字符串,其中下標(biāo)是從0

開始算起,可以是正數(shù)或負(fù)數(shù),下標(biāo)可以為空表示取到頭或尾。S="ilovepython‘s[1:5]的結(jié)果是love。第十九頁,編輯于星期六:一點四十分。Python列表List(列表)是Python

中使用最頻繁的數(shù)據(jù)類型。列表可以完成大多數(shù)集合類的數(shù)據(jù)結(jié)構(gòu)實現(xiàn)。它支持字符,數(shù)字,字符串甚至可以包含列表(即嵌套)。列表用[]標(biāo)識,是python

最通用的復(fù)合數(shù)據(jù)類型。

列表中值的切割也可以用到變量[頭下標(biāo):尾下標(biāo)],就可以截取相應(yīng)的列表,從左到右索引默認(rèn)0

開始,從右到左索引默認(rèn)-1

開始,下標(biāo)可以為空表示取到頭或尾。加號+是列表連接運算符,星號*是重復(fù)操作。如下實例:第二十頁,編輯于星期六:一點四十分。Python元組元組是另一個數(shù)據(jù)類型,類似于List(列表)。元組用"()"標(biāo)識。內(nèi)部元素用逗號隔開。但是元組不能二次賦值,相當(dāng)于只讀列表。第二十一頁,編輯于星期六:一點四十分。Python

字典

字典(dictionary)是除列表以外python之中最靈活的內(nèi)置數(shù)據(jù)結(jié)構(gòu)類型。列表是有序的對象結(jié)合,字典是無序的對象集合。兩者之間的區(qū)別在于:字典當(dāng)中的元素是通過鍵來存取的,而不是通過偏移存取。字典用"{}"標(biāo)識。字典由索引(key)和它對應(yīng)的值value組成。第二十二頁,編輯于星期六:一點四十分。Python數(shù)據(jù)類型轉(zhuǎn)換函數(shù)

int(x

[,base])long(x

[,base]

)

float(x)

complex(real

[,imag])

str(x)repr(x)

eval(str)描述將x轉(zhuǎn)換為一個整數(shù)將x轉(zhuǎn)換為一個長整數(shù)將x轉(zhuǎn)換到一個浮點數(shù)創(chuàng)建一個復(fù)數(shù)將對象x轉(zhuǎn)換為字符串將對象x轉(zhuǎn)換為表達式字符串用來計算在字符串中的有效Python表達式,并返回一個對象tuple(s)

list(s)

set(s)

dict(d)將序列s轉(zhuǎn)換為一個元組將序列s轉(zhuǎn)換為一個列表轉(zhuǎn)換為可變集合創(chuàng)建一個字典。d必須是一個序列(key,value)元組。frozenset(s)

chr(x)

unichr(x)

ord(x)hex(x)轉(zhuǎn)換為不可變集合將一個整數(shù)轉(zhuǎn)換為一個字符

將一個整數(shù)轉(zhuǎn)換為Unicode字符將一個字符轉(zhuǎn)換為它的整數(shù)值將一個整數(shù)轉(zhuǎn)換為一個十六進制字符串oct(x)將一個整數(shù)轉(zhuǎn)換為一個八進制字符串第二十三頁,編輯于星期六:一點四十分。2.3條件和循環(huán)Python

條件語句Python條件語句是通過一條或多條語句的執(zhí)行結(jié)果(True或者False)來決定執(zhí)行的代碼塊。–Python程序語言指定任何非0和非空(null)值為true,0

或者null為false。–Python

編程中if

語句用于控制程序的執(zhí)行,基本形式為第二十四頁,編輯于星期六:一點四十分。Python循環(huán)語句循環(huán)語句允許我們執(zhí)行一個語句或語句組多次。–Python提供了for循環(huán)和while循環(huán)(在Python中沒有do..while循環(huán))循環(huán)類型while

循環(huán)for

循環(huán)

嵌套循環(huán)描述在給定的判斷條件為true時執(zhí)行循環(huán)體,否則退出循環(huán)體。重復(fù)執(zhí)行語句你可以在while循環(huán)體中嵌套for循環(huán)第二十五頁,編輯于星期六:一點四十分。演示Python

while

語句執(zhí)行過程第二十六頁,編輯于星期六:一點四十分。2.4

Python函數(shù)函數(shù)是組織好的,可重復(fù)使用的,用來實現(xiàn)單一,或相關(guān)聯(lián)功能的代碼段。?定義函數(shù)遵循的相關(guān)規(guī)則函數(shù)代碼塊以def

關(guān)鍵詞開頭,后接函數(shù)標(biāo)識符名稱和圓括號()。任何傳入?yún)?shù)和自變量必須放在圓括號中間。圓括號之間可以用于定義參數(shù)。函數(shù)的第一行語句可以選擇性地使用文檔字符串—用于存放函數(shù)說明。函數(shù)內(nèi)容以冒號起始,并且縮進。return[表達式]結(jié)束函數(shù),選擇性地返回一個值給調(diào)用方。不帶表達式的return相當(dāng)于返回None。第二十七頁,編輯于星期六:一點四十分。函數(shù)語法實例第二十八頁,編輯于星期六:一點四十分。2.5

Python模塊Python

模塊(Module),是一個Python

文件,以.py結(jié)尾,包含了Python

對象定義和Python語句。定義模塊好處模塊讓你能夠有邏輯地組織你的Python

代碼段。把相關(guān)的代碼分配到一個模塊里能讓你的代碼更好用,更易懂。模塊能定義函數(shù),類和變量,模塊里也能包含可執(zhí)行的代碼。第二十九頁,編輯于星期六:一點四十分。模塊的引入模塊定義好后,我們可以使用import

語句來引入模塊,語法如下:import

module1[,

module2[,

.

moduleN]比如要引用模塊math,就可以在文件最開始的地方用import

math

來引入。在調(diào)用math模塊中的函數(shù)時,必須這樣引用:模塊名.函數(shù)名第三十頁,編輯于星期六:一點四十分。2.6

Python文件I/O打印到屏幕最簡單的輸出方法是用print語句,你可以給它傳遞零個或多個用逗號隔開的表達式。此函數(shù)把你傳遞的表達式轉(zhuǎn)換成一個字符串表達式,并將結(jié)果寫到標(biāo)準(zhǔn)輸出如下:第三十一頁,編輯于星期六:一點四十分。讀取鍵盤輸入Python提供了兩個內(nèi)置函數(shù)從標(biāo)準(zhǔn)輸入讀入一行文本,默認(rèn)的標(biāo)準(zhǔn)輸入是鍵盤。raw_inputinput二者區(qū)別–raw_input會提示你輸入任意字符串,然后在屏幕上顯示相同的字符串。–input函數(shù)和raw_input函數(shù)基本類似,但是input

可以接收一個Python表達式作為輸入,并將運算結(jié)果返回。第三十二頁,編輯于星期六:一點四十分。打開和關(guān)閉文件Python

提供了必要的函數(shù)和方法進行默認(rèn)情況下的文件基本操作。你可以用file

對象做大部分的文件操作。open

函數(shù)你必須先用Python內(nèi)置的open()函數(shù)打開一個文件,創(chuàng)建一個file對象,相關(guān)的方法才可以調(diào)用它進行讀寫。語法:file

object

=

open(file_name

[,

access_mode][,

buffering])–file_name:file_name變量是一個包含了你要訪問的文件名稱的字符串值。–buffering:如果buffering的值被設(shè)為0,就不會有寄存。如果buffering的值取1,訪問文件時會寄存行。如果將buffering的值設(shè)為大于1的整數(shù),表明了這就是的寄存區(qū)的緩沖大小。如果取負(fù)

值,寄存區(qū)的緩沖大小則為系統(tǒng)默認(rèn)。–access_mode:access_mode決定了打開文件的模式:只讀,寫入,追加等。所有可取值見如下的完全列表。這個參數(shù)是非強制的,默認(rèn)文件訪問模式為只讀(r)。第三十三頁,編輯于星期六:一點四十分。close()方法File

對象的close()方法刷新緩沖區(qū)里任何還沒寫入的信息,并關(guān)閉該文件,這之后便不能再進行寫入。當(dāng)一個文件對象的引用被重新指定給另一個文件時,Python

會關(guān)閉之前的文件。語法:fileObject.close();第三十四頁,編輯于星期六:一點四十分。write()方法write()方法可將任何字符串寫入一個打開的文件。需要重點注意的是,Python字符串可以是

二進制數(shù)據(jù),而不是僅僅是文字。write()方法不會在字符串的結(jié)尾添加換行符("\n")。語法:fileObject.write(string);第三十五頁,編輯于星期六:一點四十分。read()方法read()方法從一個打開的文件中讀取一個字符串。需要重點注意的是,Python字符串可以是二進制數(shù)據(jù),而不是僅僅是文字。語法:fileObject.read([count]);第三十六頁,編輯于星期六:一點四十分。Python

File(文件)方法序號方法及描述file.close()

關(guān)閉文件。關(guān)閉后文件不能再進行讀寫操作。file.flush()

刷新文件內(nèi)部緩沖,直接把內(nèi)部緩沖區(qū)的數(shù)據(jù)立刻寫入文件,而不是被動的等待輸出緩沖區(qū)寫入。3file.fileno()

返回一個整型的文件描述符(file

descriptor

FD整型),可以用在如os模塊的read方法等一些底層操作上。file.isatty()

如果文件連接到一個終端設(shè)備返回True,否則返回False。file.next()

返回文件下一行。file.read([size])

從文件讀取指定的字節(jié)數(shù),如果未給定或為負(fù)則讀取所有。file.readline([size])

讀取整行,包括"\n"字符。8file.readlines([sizehint])

讀取所有行并返回列表,若給定sizeint>0,返回總和大約為sizeint字節(jié)的行,實際讀取值可能比sizhint較大,因為需要填充緩沖區(qū)。file.seek(offset[,whence])

設(shè)置文件當(dāng)前位置file.tell()

返回文件當(dāng)前位置。file.truncate([size])

截取文件,截取的字節(jié)通過size指定,默認(rèn)為當(dāng)前文件位置。file.write(str)

將字符串寫入文件,沒有返回值。file.writelines(sequence)

向文件寫入一個序列字符串列表,如果需要換行則要自己加入每行的換行符。第三十七頁,編輯于星期六:一點四十分?!猵ython庫利用python進行數(shù)據(jù)分析工具第三十八頁,編輯于星期六:一點四十分。重要的Python庫NumPy:Numpy(Numerical

Python的簡稱)是Python科學(xué)計算的基礎(chǔ)包。–快速高效的多維數(shù)組對象ndarray–用于對數(shù)組執(zhí)行元素級計算以及直接對數(shù)組執(zhí)行數(shù)學(xué)運算的函數(shù)–用于讀寫硬盤上基于數(shù)組的數(shù)據(jù)集的工具–線性代數(shù)運算、傅里葉變換、以及隨機數(shù)生成–用于將C、C

+、Fortran代碼集成到Python的工具除了為Python提供快速的數(shù)組處理能力,NumPy在數(shù)據(jù)分析方面還作為在算法之間傳遞數(shù)據(jù)的容器第三十九頁,編輯于星期六:一點四十分。Pandas:pandas提供了使我們能夠快速便捷地處理結(jié)構(gòu)化數(shù)據(jù)的大量數(shù)據(jù)結(jié)構(gòu)和函數(shù)

Pandas兼具NumPy高性能的數(shù)據(jù)計算功能以及電子表格和關(guān)系型數(shù)據(jù)庫(如SQL)靈活的數(shù)據(jù)處理功能。提供了復(fù)雜精細(xì)的索引功能、一邊更為便捷地完成重塑、切片和切塊、聚合以及選取數(shù)據(jù)子集等操作。Pandas提供了大量適用于金融數(shù)據(jù)的高性能時間序列功能和工具第四十頁,編輯于星期六:一點四十分。其他的Python庫Matplotlib:matplotlib是最流行的用于繪制數(shù)據(jù)圖標(biāo)的Python庫,實現(xiàn)數(shù)據(jù)可視化。IPython:Ipython是Python科學(xué)計算標(biāo)準(zhǔn)工具集的組成部分,它將其他所有的東西聯(lián)系到了一起,為交互是和探索式計算提供了一個強健而高效的環(huán)境。SciPy:SciPy是一組專門解決科學(xué)計算中各種標(biāo)準(zhǔn)問題域的包的集合,包括Segrate:數(shù)值積分例程和韋恩方程式求解器Scipy.linalg:擴展了由numpy.linalg提供的線性代數(shù)例程和矩陣分解功能Scipy.optimize:函數(shù)優(yōu)化器(最小化器)以及根查找算法Scipy.signal:信號處理工具Scipy.sparse:稀疏矩陣和系數(shù)線性系統(tǒng)求解器Scipy.special:SPECFUN(這是一個實現(xiàn)了許多常用數(shù)學(xué)函數(shù)(如伽馬函數(shù))的Fortran庫)的包裝器

Scipy.stats:標(biāo)準(zhǔn)連續(xù)的離散概率分布(如密度函數(shù)、采樣器、連續(xù)分布函數(shù)等)、各種統(tǒng)計檢驗方法,以及更好的描述統(tǒng)計法。Scipy.weave:利用內(nèi)斂C++代碼加速數(shù)組計算的工具第四十一頁,編輯于星期六:一點四十分。常用第三方Python庫安裝和導(dǎo)入安裝–下載并安裝Anaconda,它附帶了預(yù)安裝的庫。Anaconda

Python

是完全免費、跨平臺、企業(yè)級的Python發(fā)行大規(guī)模數(shù)據(jù)處理、預(yù)測分析和科學(xué)計算工具。–PyCharm已經(jīng)集成NumPy、Pandas、Matplotlib等常用庫。導(dǎo)入–import

numpy

as

np–from

socket

import

gethostname,

socket第四十二頁,編輯于星期六:一點四十分。3.1

NumPy庫介紹NumPy是高性能科學(xué)計算和數(shù)據(jù)分析的基礎(chǔ)包。部分功能如下:ndarray,具有矢量算術(shù)運算和復(fù)雜廣播能力的快速且節(jié)省空間的多維數(shù)組。用于對整組數(shù)據(jù)進行快速運算的標(biāo)準(zhǔn)數(shù)學(xué)函數(shù)(無需編寫循環(huán))。用于讀寫磁盤數(shù)據(jù)的工具以及用于操作內(nèi)存映射文件的工具。線性代數(shù)、隨機數(shù)生成以及傅里葉變換功能。用于集成C、C++、Fortran等語言編寫的代碼的工具。首先要導(dǎo)入numpy庫:import

numpy

as

np第四十三頁,編輯于星期六:一點四十分。生成函數(shù)np.array(

x)np.array(

x,

dtype)np.asarray(

array

)作用將輸入數(shù)據(jù)轉(zhuǎn)化為一個ndarray將輸入數(shù)據(jù)轉(zhuǎn)化為一個類型為type的ndarray將輸入數(shù)據(jù)轉(zhuǎn)化為一個新的(copy)ndarraynp.ones(

N

)np.ones(

N,

dtype)np.ones_like(

ndarray

)生成一個N長度的一維全一ndarray生成一個N長度類型是dtype的一維全一ndarray生成一個形狀與參數(shù)相同的全一ndarraynp.zeros(

N)np.zeros(

N,

dtype)np.zeros_like(ndarray)np.empty(

N

)np.empty(

N,

dtype)np.empty(ndarray)生成一個N長度的一維全零ndarray生成一個N長度類型位dtype的一維全零ndarray類似np.ones_like(ndarray)生成一個N長度的未初始化一維ndarray生成一個N長度類型是dtype的未初始化一維ndarray類似np.ones_like(ndarray)np.eye(

N

)np.identity(

N

)創(chuàng)建一個N

*

N的單位矩陣(對角線為1,其余為0)np.arange(

num)np.arange(

begin,

end)np.arange(

begin,

end,

step)生成一個從0到num-1步數(shù)為1的一維ndarray生成一個從begin到end-1步數(shù)為1的一維ndarray生成一個從begin到end-step的步數(shù)為step的一維ndarraynp.in1d(ndarray,

[x,y,...])檢查ndarray中的元素是否等于[x,y,...]中的一個,返回bool數(shù)組第四十四頁,編輯于星期六:一點四十分。矩陣函數(shù)說明np.diag(

ndarray)np.diag(

[x,y,...])以一維數(shù)組的形式返回方陣的對角線(或非對角線)元素將一維數(shù)組轉(zhuǎn)化為方陣(非對角線元素為0)np.dot(ndarray,

ndarray)矩陣乘法np.trace(

ndarray)計算對角線元素的和排序函數(shù)說明np.sort(

ndarray)排序,返回副本np.unique(ndarray)返回ndarray中的元素,排除重復(fù)元素之后,并進行排序ersect1d(

ndarray1,

ndarray2)np.union1d(

ndarray1,

ndarray2)np.setdiff1d(

ndarray1,

ndarray2)np.setxor1d(

ndarray1,

ndarray2)返回二者的交集并排序。返回二者的并集并排序。返回二者的差。返回二者的對稱差第四十五頁,編輯于星期六:一點四十分。一元計算函數(shù)np.abs(ndarray)np.fabs(ndarray)np.mean(ndarray)np.sqrt(ndarray)np.square(ndarray)np.exp(ndarray)log、log10、log2、log1p說明計算絕對值計算絕對值(非復(fù)數(shù))求平均值計算x^0.5計算x^2計算e^x計算自然對數(shù)、底為10的log、底為2的log、底為(1+x)的lognp.sign(ndarray)計算正負(fù)號:1(正)、0(0)、-1(負(fù))np.ceil(ndarray)np.floor(ndarray)np.rint(ndarray)計算大于等于改值的最小整數(shù)計算小于等于該值的最大整數(shù)四舍五入到最近的整數(shù),保留dtypenp.modf(ndarray)將數(shù)組的小數(shù)和整數(shù)部分以兩個獨立的數(shù)組方式返回np.isnan(ndarray)返回一個判斷是否是NaN的bool型數(shù)組np.isfinite(ndarray)np.isinf(ndarray)返回一個判斷是否是有窮(非inf,非NaN)的bool型數(shù)組返回一個判斷是否是無窮的bool型數(shù)組普通型和雙曲型三角函數(shù)cos、cosh、sin、sinh、tan、tanharccos、arccosh、arcsin、arcsinh、arctan、arctanh反三角函數(shù)和雙曲型反三角函數(shù)np.logical_not(ndarray)計算各元素not

x的真值,相當(dāng)于-ndarray第四十六頁,編輯于星期六:一點四十分。多元計算函數(shù)說明相加相減乘法除法圓整除法(丟棄余數(shù))次方求模求最大值求最大值(忽略NaN)求最小值求最小值(忽略NaN)將參數(shù)2中的符號賦予參數(shù)1>np.add(ndarray,

ndarray)np.subtract(ndarray,

ndarray)np.multiply(ndarray,

ndarray)np.divide(ndarray,

ndarray)np.floor_divide(ndarray,

ndarray)np.power(ndarray,

ndarray)np.mod(ndarray,

ndarray)np.maximum(ndarray,

ndarray)np.fmax(ndarray,

ndarray)np.minimun(ndarray,

ndarray)np.fmin(ndarray,

ndarray)np.copysign(ndarray,

ndarray)np.greater(ndarray,

ndarray)np.greater_equal(ndarray,

ndarray)np.less(ndarray,

ndarray)np.less_equal(ndarray,

ndarray)np.equal(ndarray,

ndarray)np.not_equal(ndarray,

ndarray)logical_and(ndarray,

ndarray)logical_or(ndarray,

ndarray)logical_xor(ndarray,

ndarray)np.dot(

ndarray,

ndarray)np.ix_([x,y,m,n],...)>=<<===!=&|^計算兩個ndarray的矩陣內(nèi)積生成一個索引器,用于Fancy

indexing(花式索引)第四十七頁,編輯于星期六:一點四十分。文件讀寫說明np.save(string,

ndarray)將ndarray保存到文件名為[string].npy的文件中(無壓縮)np.savez(string,

ndarray1,

ndarray2,

...)將所有的ndarray壓縮保存到文件名為[string].npy的文件中np.savetxt(sring,

ndarray,

fmt,

newline="\n")將ndarray寫入文件,格式為fmtnp.load(string)讀取文件名string的文件內(nèi)容并轉(zhuǎn)化為ndarray對象(或字典對象)np.loadtxt(string,

delimiter)讀取文件名string的文件內(nèi)容,以delimiter為分隔符轉(zhuǎn)化為ndarray第四十八頁,編輯于星期六:一點四十分。3.2

Pandas庫介紹

pandas

是基于NumPy

的一種工具,該工具是為了解決數(shù)據(jù)分析任務(wù)而創(chuàng)建

的。Pandas

納入了大量庫和一些標(biāo)準(zhǔn)的數(shù)據(jù)模型,提供了高效地操作大型數(shù)據(jù)集所需的工具。pandas提供了大量能使我們快速便捷地處理數(shù)據(jù)的函數(shù)和方法。使用方法from

pandas

import

Series,

DataFrameimport

pandas

as

pd第四十九頁,編輯于星期六:一點四十分。Series常用函數(shù)函數(shù)說明Series([x,y,...])Series({"a":x,"b":y,...},

index=param1)生成一個SeriesSeries.copy()復(fù)制一個SeriesSeries.reindex([x,y,...],

fill_value=NaN)Series.reindex([x,y,...],

method=NaN)Series.reindex(columns=[x,y,...])重返回一個適應(yīng)新索引的新對象,將缺失值填充為fill_value返回適應(yīng)新索引的新對象,填充方式為method對列進行重新索引Series.drop(index)丟棄指定項Series.map(f)應(yīng)用元素級函數(shù)排序函數(shù)說明Series.sort_index(ascending=True)根據(jù)索引返回已排序的新對象Series.order(ascending=True)根據(jù)值返回已排序的對象,NaN值在末尾Series.rank(method="average",

ascending=True,

axis=0)為各組分配一個平均排名df.argmax()df.argmin()返回含有最大值的索引位置返回含有最小值的索引位置第五十頁,編輯于星期六:一點四十分。DataFrame常用函數(shù)函數(shù)說明DataFrame(dict,columns=dict.index,index=[dict.columnnum])DataFrame(二維ndarray)DataFrame(由數(shù)組、列表或元組組成的字典)DataFrame(NumPy的結(jié)構(gòu)化/記錄數(shù)組)DataFrame(由Series組成的字典)DataFrame(由字典組成的字典)DataFrame(字典或Series的列表)DataFrame(由列表或元組組成的列表)DataFrame(DataFrame)DataFrame(NumPy的MaskedArray)構(gòu)建DataFrame數(shù)據(jù)矩陣,還可以傳入行標(biāo)和列標(biāo)每個序列會變成DataFrame的一列。所有序列的長度必須相同類似于“由數(shù)組組成的字典”每個Series會成為一列。如果沒有顯式制定索引,則各Series的索引會被合并成結(jié)果的行索引各內(nèi)層字典會成為一列。鍵會被合并成結(jié)果的行索引。各項將會成為DataFrame的一行。索引的并集會成為DataFrame的列標(biāo)。類似于二維ndarray沿用DataFrame類似于二維ndarray,但掩碼結(jié)果會變成NA/缺失值df.reindex([x,y,...],

fill_value=NaN,

limit)df.reindex([x,y,...],

method=NaN)df.reindex([x,y,...],

columns=[x,y,...],copy=True)返回一個適應(yīng)新索引的新對象,將缺失值填充為fill_value,最大填充量為limit返回適應(yīng)新索引的新對象,填充方式為method同時對行和列進行重新索引,默認(rèn)復(fù)制新對象。df.drop(index,

axis=0)丟棄指定軸上的指定項。第五十一頁,編輯于星期六:一點四十分。匯總統(tǒng)計函數(shù)

df.count()df.describe()df.min()df.min()df.idxmax(axis=0,

skipna=True)df.idxmin(axis=0,

skipna=True)df.quantile(axis=0)說明非NaN的數(shù)量一次性產(chǎn)生多個匯總統(tǒng)計最小值最大值返回含有最大值的index的Series返回含有最小值的index的Series計算樣本的分位數(shù)df.sum(axis=0,

skipna=True,

level=NaN)df.mean(axis=0,

skipna=True,

level=NaN)df.median(axis=0,

skipna=True,

level=NaN)df.mad(axis=0,

skipna=True,

level=NaN)df.var(axis=0,

skipna=True,

level=NaN)df.std(axis=0,

skipna=True,

level=NaN)df.skew(axis=0,

skipna=True,

level=NaN)df.kurt(axis=0,

skipna=True,

level=NaN)df.cumsum(axis=0,

skipna=True,

level=NaN)df.cummin(axis=0,

skipna=True,

level=NaN)df.cummax(axis=0,

skipna=True,

level=NaN)df.cumprod(axis=0,

skipna=True,

level=NaN)df.diff(axis=0)df.pct_change(axis=0)返回一個含有求和小計的Series返回一個含有平均值的Series返回一個含有算術(shù)中位數(shù)的Series返回一個根據(jù)平均值計算平均絕對離差的Series返回一個方差的Series返回一個標(biāo)準(zhǔn)差的Series返回樣本值的偏度(三階距)返回樣本值的峰度(四階距)返回樣本的累計和返回樣本的累計最大值返回樣本的累計最小值返回樣本的累計積返回樣本的一階差分返回樣本的百分比數(shù)變化第五十二頁,編輯于星期六:一點四十分。排序函數(shù)說明df.sort_index(axis=0,

ascending=True)df.sort_index(by=[a,b,...])根據(jù)索引排序計算函數(shù)說明df.add(df2,

fill_value=NaN,

axist=1)df.sub(df2,

fill_value=NaN,

axist=1)df.div(df2,

fill_value=NaN,

axist=1)df.mul(df2,

fill_value=NaN,

axist=1)元素級相加,對齊時找不到元素默認(rèn)用fill_value元素級相減,對齊時找不到元素默認(rèn)用fill_value元素級相除,對齊時找不到元素默認(rèn)用fill_value元素級相乘,對齊時找不到元素默認(rèn)用fill_valuedf.apply(f,

axis=0)將f函數(shù)應(yīng)用到由各行各列所形成的一維數(shù)組上df.applymap(f)將f函數(shù)應(yīng)用到各個元素上df.cumsum(axis=0,

skipna=True)累加,返回累加后的dataframe第五十三頁,編輯于星期六:一點四十分。分析步驟定義數(shù)據(jù)分析目標(biāo):明確挖掘數(shù)據(jù)的目標(biāo)和達到的效果。數(shù)據(jù)取樣:采集目標(biāo)相關(guān)樣本數(shù)據(jù)子集,確保數(shù)據(jù)的相關(guān)性、可靠性、有效性。數(shù)據(jù)探索:對樣本數(shù)據(jù)探索、審核、加工處理,保證樣本數(shù)據(jù)的質(zhì)量。數(shù)據(jù)預(yù)處理:改善數(shù)據(jù)質(zhì)量,包括數(shù)據(jù)篩選、數(shù)據(jù)變量轉(zhuǎn)換、缺失值數(shù)據(jù)處理等。挖掘建模:確定分析問題類型(分類,聚類、關(guān)聯(lián)等),選擇相應(yīng)算法構(gòu)建模型。模型評價:從建立模型中找到一個最好的模型,并應(yīng)用到實際業(yè)務(wù)中。利用python進行數(shù)據(jù)分析第五十四頁,編輯于星期六:一點四十分。4.1數(shù)據(jù)探索?數(shù)據(jù)質(zhì)量分析主要任務(wù)是檢查原始數(shù)據(jù)中是否存在臟數(shù)據(jù),即不符合要求,不能直接處理的數(shù)據(jù),包括缺失值分析、異常值分析、一致性分析。數(shù)據(jù)特征分析分布分析:揭示數(shù)據(jù)的分布特征和分布類型,通過繪制頻率分布表、莖葉圖等直觀分析

對比分析:把兩個相互聯(lián)系的指標(biāo)進行比較,從數(shù)量上展示和說明研究對象規(guī)模的大小,水平的高低,速度的快慢,以及各種關(guān)系是否協(xié)調(diào)。統(tǒng)計量分析:用統(tǒng)計量指標(biāo)對定量數(shù)據(jù)進行統(tǒng)計描述,常從集中趨勢和離中趨勢兩個方面進行分析。相關(guān)性分析:分析連續(xù)變量之間線性相關(guān)程度的強弱,并用適當(dāng)?shù)慕y(tǒng)計指標(biāo)表示出來。第五十五頁,編輯于星期六:一點四十分。4.2數(shù)據(jù)預(yù)處理數(shù)據(jù)清洗刪除原始數(shù)據(jù)集中的無關(guān)數(shù)據(jù)、重復(fù)數(shù)據(jù)、平滑噪聲數(shù)據(jù)、無關(guān)數(shù)據(jù),處理缺失值和異常值。數(shù)據(jù)集成將多個數(shù)據(jù)源合并存放在一個一致的數(shù)據(jù)存儲(如數(shù)據(jù)倉庫)中的過程。數(shù)據(jù)變換

主要是對數(shù)據(jù)進行規(guī)范化處理,將數(shù)據(jù)轉(zhuǎn)換成適當(dāng)?shù)男问剑赃m用于挖掘任務(wù)和算法的需要。數(shù)據(jù)規(guī)約產(chǎn)生更小但保持?jǐn)?shù)據(jù)完整性的新數(shù)據(jù)集,在規(guī)約后的數(shù)據(jù)集上進行分析和挖掘更有效率。第五十六頁,編輯于星期六:一點四十分。Python主要數(shù)據(jù)預(yù)處理函數(shù)函數(shù)名interpolateunique所屬擴展庫ScipyPandas/NumpyisnullnotnullPCArandom函數(shù)功能一維、高維數(shù)據(jù)插值去除數(shù)據(jù)中重復(fù)元素,得到單值元素列表判斷是否是空值判斷是否非空值對指標(biāo)變量矩陣進行主成分分析生成隨機矩陣PandasPandasScikit-LearnNumpy第五十七頁,編輯于星期六:一點四十分。4.3挖掘建模分類與預(yù)測

分類:構(gòu)造一個分類模型,輸入樣本的屬性值,輸出對應(yīng)的類別,將每個樣本映射到預(yù)先定義好的類別預(yù)測:建立兩種或兩種以上變量間相互依賴的函數(shù)模型,然后進行預(yù)測和控制實現(xiàn)過程①

學(xué)習(xí)步,通過歸納分析訓(xùn)練樣本集來建立分類模型得到分類規(guī)則②

分類步,先用一直的測試樣本集評估分類規(guī)則的準(zhǔn)確率,如果準(zhǔn)確率是可以接受的,則使用該模型對未知類標(biāo)號的待測樣本集進行預(yù)測第五十八頁,編輯于星期六:一點四十分。常用的分類與預(yù)測算法算法分析回歸分析決策樹人工神經(jīng)網(wǎng)絡(luò)貝葉斯網(wǎng)絡(luò)支持向量機算法描述回歸分析是確定去測屬性(數(shù)值型)與其他變量間相互依賴的定量關(guān)系最常用的統(tǒng)計學(xué)方法。包括線性回歸、非線性回歸、Logistic回歸、嶺回歸、主成分回歸、偏最小二乘回歸等模型決策樹采用自頂向下的遞歸方式,在內(nèi)部節(jié)點進行屬性值的比較,并根據(jù)不同的屬性值從該節(jié)點向下分支,最終得到的葉節(jié)點是學(xué)習(xí)劃分的類人工神經(jīng)神經(jīng)網(wǎng)絡(luò)是一種模仿大腦神經(jīng)網(wǎng)絡(luò)和功能而建立的信息處理系統(tǒng),表示神經(jīng)網(wǎng)絡(luò)的輸入與輸出變量之間關(guān)系的模型貝葉斯網(wǎng)絡(luò)又稱信度網(wǎng)絡(luò),是Bayes方法的擴展,是目前不確定知識表達和推理領(lǐng)域最有效的理論模型之一支持向量機是一種通過魔種非線性映射,把低緯的非線性可分轉(zhuǎn)化為高維的線性可分,在高維空間進行線性分析的算法第五十九頁,編輯于星期六:一點四十分。主要回歸模型分類回歸模型名稱線性回歸算法描述對一個或多個自變量和因變量之間的線性關(guān)系進行建模可用最小二乘法求解模型系數(shù)非線性回歸試用條件因變量與自變量是線性關(guān)系因變量與自變量之間不都是線性關(guān)系Logistic因變量一般有1和0兩種取值嶺回歸對一個或多個自變量和因變量之間的非線性關(guān)系進行建模。如果非線性關(guān)系可以通過簡單的函數(shù)變換轉(zhuǎn)化成線性關(guān)系,用線性回歸的思想求解;如果不能轉(zhuǎn)化,用非線性最小二乘法方法求解是廣義線性回歸模型的特例,利用Logistic函數(shù)將因變量的取值范圍控制在0和1之間,表示取值為1的概率是一種改進最小二乘估計的方法主成分回歸參與建模的自變量之間具有多重共線性參與建模的自變量之間具有多重共線性主成分回歸是根據(jù)主成分分析的思想提出來,是對最小二乘法的一種改進,它是參數(shù)估計的一種有偏估計。可以消除自變量之間的多重共線性第六十頁,編輯于星期六:一點四十分。對某銀行在降低貸款拖欠率的數(shù)據(jù)進行邏輯回歸建模,數(shù)據(jù)示例如下表應(yīng)用舉例一第六十一頁,編輯于星期六:一點四十分。Python代碼第六十二頁,編輯于星期六:一點四十分。運行結(jié)果結(jié)果分析

隨機邏輯回歸剔除變量,分別剔除了x2、x8、x1、x5,最終構(gòu)建模型包含的變量為常量x3、x4、x6、x7。在建立邏輯回歸模型時,使用了默認(rèn)的閾值0.25。第六十三頁,編輯于星期六:一點四十分。聚類分析–在沒有給定劃分類別的情況下,根據(jù)數(shù)據(jù)相似度進行樣本分組的一種方法。常用聚類方法類別包括的主要算法劃分方法K-Means算法、K-MEDOIDS算法、CLARANS算法層次分析法BIRCH算法、CURE算法、CHAMELEON算法基于密度的方法DBCSCAN算法、DENCLUE算法、OPTICS算法基于網(wǎng)格的方法STING算法、CLIOUE算法、WAVE——CLUSTER算法基于模型的方法統(tǒng)計學(xué)方法、神經(jīng)網(wǎng)絡(luò)方法第六十四頁,編輯于星期六:一點四十分。常用聚類分析算法算法名稱K-MeansK-中心點系統(tǒng)聚類算法描述K-均值聚類也稱為快速聚類法,在最小化誤差函

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論