版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第6章Python網(wǎng)絡(luò)爬蟲《Python數(shù)據(jù)分析與應(yīng)用》網(wǎng)絡(luò)爬蟲網(wǎng)絡(luò)爬蟲(WebSpider),又被稱為網(wǎng)頁蜘蛛或網(wǎng)絡(luò)機器人,通過一定的規(guī)則自動地抓取網(wǎng)絡(luò)信息。網(wǎng)絡(luò)爬蟲就是根據(jù)網(wǎng)址獲取網(wǎng)頁信息。例如,當(dāng)輸入網(wǎng)址:/,瀏覽器向DNS服務(wù)器發(fā)出請求,經(jīng)過解析,將發(fā)送給瀏覽器的HTML、JS、CSS等文件解析出來,便成了百度內(nèi)容。爬蟲流程爬取
Python提供了requests等庫實現(xiàn)HTTP請求操作,獲取網(wǎng)頁的源代碼。
Requests
方法解釋requests.get()獲取html的主要方法requests.head()獲取html頭部信息的主要方法requests.post()向html網(wǎng)頁提交post請求的方法requests.put()向html網(wǎng)頁提交put請求的方法requests.patch()向html提交局部修改的請求requests.delete()向html提交刪除請求Requests
importrequestsr=requests.get(url='http://www……')#GET請求print(r.status_code)#獲取返回狀態(tài)print(r.url)print(r.text)#打印解碼后的返回數(shù)據(jù)解析從網(wǎng)頁源代碼中提取有用的信息。方法1:采用正則表達式提取,但是在構(gòu)造正則表達式時比較復(fù)雜且容易出錯。方法2:由于網(wǎng)頁的結(jié)構(gòu)有一定的規(guī)則,可以利用BeautifulSoup、pyquery、lxml等庫提取網(wǎng)頁節(jié)點屬性、CSS選擇器等網(wǎng)頁信息。
存儲將提取到的數(shù)據(jù)保存到某處以便后續(xù)處理和分析,可以保存為TXT文本或JSON文本,也可以保存到MySQL和MongoDB等數(shù)據(jù)庫。正則表達式
正則表達式,又稱正規(guī)表示法、常規(guī)表示法,是指通過事先定義好的特定字符(“元字符”)組成的“規(guī)則字符串”,對字符串進行過濾邏輯。凡是符合規(guī)則的字符串,認為“匹配”,否則,不“匹配”。
正則表達式
采用正則表達式判斷一個字符串是否包含合法的Email,需要創(chuàng)建一個匹配Email的正則表達式,然后通過該正則表達式去判斷。正則表達式元字符含義輸入輸出.匹配任意字符
a.cAbc^匹配開始位置^abcAbc$匹配結(jié)束位置abc$Abc*
匹配前一個元字符0到多次abc*ab;abccc+匹配前一個元字符1到多次abc+abc;abccc?匹配前一個元字符0到1次abc?ab;abcre模塊fIndall()compile()match()search()replace()split()Python中的re模塊提供了一個正則表達式引擎接口,允許將正則表達式編譯成模式對象,通過這些模式對象執(zhí)行模式匹配搜索和字符串分割、子串替換等操作。Findall()>>>importre>>>p=pile(r'\d+')>>>print(p.findall('o1n2m3k4'))['1','2','3','4']search()>>>importre>>>a="123abc456">>>print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(0))123abc456>>>print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(1))123>>>print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(2))abc>>>print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(3))456Match()>>>importre>>>print(re.match('www','').span())#在起始位置匹配(0,3)>>>print(re.match('com',''))#不在起始位置匹配Nonesplit()1)只傳一個參數(shù),默認分割整個字符串>>>str="a,b,c,d,e";>>>str.split(',');["a","b","c","d","e"]split()2)傳入兩個參數(shù),返回限定長度的字符串>>>str="a,b,c,d,e";>>>str.split(',',3);["a","b","c"]
split()3)使用正則表達式匹配,返回分割的字符串>>>str="aa44bb55cc66dd";>>>print(re.split('\d+',str))["aa","bb","cc","dd"]BeautifulSouplxml作為BeautifulSoup庫解析器BeautifulSoup
BeautifulSoup將HTML文檔轉(zhuǎn)換成一個復(fù)雜的樹形結(jié)構(gòu),每個節(jié)點都是Python對象BeautifulSoupfromurllib.requestimporturlopenfrombs4importBeautifulSoup#導(dǎo)入BeautifulSoup對象html=urlopen('/new100.html')#打開url,獲取html內(nèi)容bs_obj=BeautifulSoup(html.read(),'html.parser')#把html內(nèi)容傳到BeautifulSoup對象
text_list=bs_obj.find_all("a","navmore")#找到”class=navmore”的a標簽fortextintext_list:print(text.get_text())#打印標簽的文本html.close()#關(guān)閉文件動態(tài)網(wǎng)頁的內(nèi)容由JavaScript動態(tài)加載生成,而Request模塊不能執(zhí)行JS和CSS代碼。一般采用Selenium抓取動態(tài)網(wǎng)頁的數(shù)據(jù),Selenium最初是Web的測試工具,可以操作瀏覽器,像BeautifulSoup一樣得到html頁面元素。SeleniumSeleniumphantomjs不同的瀏覽器,如IE、Chrome、Firefox等,WebDriver需要不同的驅(qū)動來實現(xiàn)。
在Firefox瀏覽器webdriver驅(qū)動下載網(wǎng)址/mozilla/geckodriver/releases,下載geckodriver.exe文件。
Selenium Scrapy是Python開發(fā)的抓取框架,用于抓取web站點并從頁面中提取結(jié)構(gòu)化的數(shù)據(jù)。在anacondaPrompt下使用命令:pipinstallScrapy進行安裝爬蟲框架ScrapyScrapy是爬取網(wǎng)站數(shù)據(jù)的應(yīng)用框架,可以進行定制化爬取。爬蟲框架Scrapy爬取網(wǎng)站數(shù)據(jù)的應(yīng)用框架,可以進行定制化爬取。步驟1:創(chuàng)建一個Scrapy項目
步驟2:設(shè)置數(shù)據(jù)存儲模板,填寫Item.py文件步驟3:編寫爬取網(wǎng)站的
spider,填寫meiju.py文件步驟4:編寫settings.py配置文件步驟5:編寫數(shù)據(jù)處理的Pipeline.py文件,存儲提取到的Item數(shù)據(jù)爬蟲框架Scrapy第7章Python與數(shù)據(jù)分析《Python數(shù)據(jù)分析與應(yīng)用》啤酒與尿布“啤酒與尿布”。該故事產(chǎn)生于20世紀90年代的美國沃爾瑪超市,超市管理人員分析銷售數(shù)據(jù)時發(fā)現(xiàn)了一個令人難于理解的現(xiàn)象——“啤酒”與“尿布”兩件看上去毫無關(guān)系的商品會經(jīng)常出現(xiàn)在年輕的父親的同一個購物籃。這是由于在美國有嬰兒的家庭中,母親留在家中照看嬰兒,父親去超市購買尿布。父親在購買尿布的同時,往往會順便為自己購買啤酒。至此,超市人員將屬于食品飲料的“啤酒”和屬于生活用品的“尿布”擺放在一處,從而致使兩種商品的銷售量直線上升。數(shù)據(jù)分析流程(1)明確目標(2)獲取數(shù)據(jù)(3)清洗數(shù)據(jù)(4)特征工程(5)構(gòu)建模型(6)模型評估。明確目標這是數(shù)據(jù)分析與挖掘的第一步,即明確數(shù)據(jù)分析的對象、目標、或任務(wù)。此環(huán)節(jié)應(yīng)該跟業(yè)務(wù)需求方多次溝通與合作,把握最終要解決的問題。規(guī)劃哪些數(shù)據(jù)可能會影響到這些問題的答案,這一步就稱為數(shù)據(jù)的獲取過程。數(shù)據(jù)獲取數(shù)據(jù)清洗為確保數(shù)據(jù)分析或挖掘結(jié)果的準確性,往往需要對數(shù)據(jù)做一些基本的清洗和整理,如數(shù)據(jù)的一致性檢驗、缺失值和異常值的處理等。特征工程通過Scipy、Pandas、Sklearn等分析庫對數(shù)據(jù)進行統(tǒng)一量綱等標準化處理,對數(shù)據(jù)進行離散化處理,采用啞變量、獨熱編碼進行數(shù)據(jù)重編碼,實施特征工程。模型評估通常情況下,在模型搭建好后,并不意味著分析或挖掘任務(wù)的結(jié)束,還需要對模型的擬合效果做評估,其目的就是不斷優(yōu)化模型,使最終的模型能夠更好地反映數(shù)據(jù)的真實性。構(gòu)建模型建模的目的主要是為了預(yù)測,例如使用線性回歸模型預(yù)測產(chǎn)品的銷售額;利用決策樹模型預(yù)測用戶是否具有欺詐行為;利用樸素貝葉斯模型預(yù)測郵件是否為垃圾郵件。Python數(shù)據(jù)分析庫庫名簡
介Numpy提供數(shù)組支持,以及相應(yīng)的高效處理函數(shù)Matplotlib強大的數(shù)據(jù)可視化工具、作圖庫Pandas強大的數(shù)據(jù)分析、數(shù)據(jù)處理和數(shù)據(jù)清洗工具seaborn數(shù)據(jù)可視化工具、作圖庫Scipy提供矩陣支持,以及矩陣相關(guān)的數(shù)值計算模塊sklearn經(jīng)典的機器學(xué)習(xí)庫NumpyNumPy是Python的數(shù)據(jù)分析的基本庫,是在Python的Numeric數(shù)據(jù)類型的基礎(chǔ)上,引入Scipy模塊中針對數(shù)據(jù)對象處理的功能,用于數(shù)值數(shù)組和矩陣類型的運算、矢量處理等。MatplotlibMatplotlib具有兩個重要的模塊——pylab和pyplot。Pylab實現(xiàn)了MATLAB的繪圖功能,就是MATLAB的Python版本。pyplot主要用于將NumPy統(tǒng)計結(jié)果可視化,可以繪制線圖、直方圖、餅圖、散點圖以及誤差線圖等各種圖形。Pandas
Pandas的名稱來源于面板數(shù)據(jù)(PanelData)和Python數(shù)據(jù)分析(DataAnalysis),作為Python進行數(shù)據(jù)分析和挖掘時的數(shù)據(jù)基礎(chǔ)平臺和事實上的工業(yè)標準,支持關(guān)系型數(shù)據(jù)的增、刪、改、查,具有豐富的數(shù)據(jù)處理函數(shù),支持時間序列分析功能,靈活處理缺失數(shù)據(jù)等。seabornSeaborn是圖形可視化python包,作為matplotlib的補充,在其基礎(chǔ)上進行了更高級的API封裝,高度兼容numpy與pandas數(shù)據(jù)結(jié)構(gòu)以及scipy等統(tǒng)計模式,能做出具有吸引力的圖。ScipyScipy是2001年發(fā)行的類似于Matlab和Mathematica等數(shù)學(xué)計算軟件的Python庫,用于統(tǒng)計、優(yōu)化、整合、線性代數(shù)模塊、傅里葉變換、信號和圖像處理等數(shù)值計算。scipy具有stats(統(tǒng)計學(xué)工具包)、erpolate(插值,線性的,三次方)、cluster(聚類)、signal(信號處理)等模塊。SklearnSklearn(又稱為scikit-learn)是簡單高效的數(shù)據(jù)挖掘和數(shù)據(jù)分析工具,基于python語言的NumPy、SciPy和matplotlib庫之上,是當(dāng)前較為流行的機器學(xué)習(xí)框架。數(shù)據(jù)分類定類數(shù)據(jù):表示個體在屬性上的特征和類別上的不同變量,只是一種標志,沒有次序關(guān)系,不可以直接測量的數(shù)據(jù)。如外貌,出生地等。定序數(shù)據(jù):表示個體在某個有序狀態(tài)中所處的位置,不能直接做四則運算。如學(xué)歷分為初中、高中、大學(xué)、碩士、博士等。定量數(shù)據(jù):定量數(shù)據(jù)又稱為定距數(shù)據(jù),具有間距特征的變量,可以直接測量的數(shù)據(jù),如身高、體重、氣溫等。數(shù)據(jù)統(tǒng)計量(1)極差極差又稱范圍誤差或全距,用來衡量指定變量間差異變化范圍,是最大值與最小值的差距,用于標志值變動的最大范圍。通常極差越大,樣本變化范圍越大。(2)平均數(shù)平均值用于測量數(shù)據(jù)集中趨勢,計算公式是所有數(shù)據(jù)之和除以數(shù)據(jù)的個數(shù)。數(shù)據(jù)統(tǒng)計量(3)中位數(shù)中位數(shù)是指將樣本數(shù)值集合劃分為數(shù)量相等或相差1的上下兩部分。對于有限的數(shù)集,可以通過把所有觀察值高低排序后找出正中間的一個作為中位數(shù)。如果觀察值有偶數(shù)個,通常取最中間的兩個數(shù)值的平均數(shù)作為中位數(shù)。(4)眾數(shù)眾數(shù)是樣本觀測值在頻數(shù)分布表中頻數(shù)最多的那組數(shù)。例如:1,2,2,2,3,3,4的眾數(shù)是2。如果所有數(shù)據(jù)出現(xiàn)的次數(shù)都一樣,那么這組數(shù)據(jù)沒有眾數(shù)。例如:1,2,3,4,5沒有眾數(shù)。數(shù)據(jù)統(tǒng)計量(5)方差方差是實際值與期望值之差平方的平均值,方差是在概率論和統(tǒng)計方差衡量隨機變量或一組數(shù)據(jù)是離散程度的度量。(6)協(xié)方差協(xié)方差用于衡量兩個變量的總體誤差,兩個變量是否相對它們各自平均值有一致行為。1)如果兩個變量同時處于平均值之上或之下,兩個變量就是正關(guān)聯(lián)性。2)如果兩個變量一個處于平均值之上,另一個處于平均值之下,就是負關(guān)聯(lián)性。當(dāng)兩個變量相同時,協(xié)方差就是方差。數(shù)據(jù)統(tǒng)計量皮爾森相關(guān)系數(shù)度量兩個變量之間的相關(guān)程度其值介于-1與+1之間,表示兩變量存在一定程度的相關(guān),越接近1,兩變量間線性關(guān)系越密切;越接近于0,表示兩變量的線性相關(guān)越弱
數(shù)據(jù)可視化數(shù)據(jù)可視化是指將大型數(shù)據(jù)集中的數(shù)據(jù)以統(tǒng)計圖表和圖形圖像形式呈現(xiàn),表現(xiàn)抽象或復(fù)雜的概念、技術(shù)和信息,并利用數(shù)據(jù)分析和開發(fā)工具發(fā)現(xiàn)其中未知信息的處理過程。數(shù)據(jù)可視化起源于1960年代計算機圖形學(xué),通過計算機創(chuàng)建圖形圖表,將數(shù)據(jù)的各種屬性和變量呈現(xiàn)出來,通過餅圖、直方圖、散點圖、柱狀圖等原始的統(tǒng)計圖表將數(shù)據(jù)可視化是最基礎(chǔ)和常見應(yīng)用。折線圖折線圖又名線形圖,或折線統(tǒng)計圖,是以折線的上升或下降表示數(shù)量變化的統(tǒng)計圖。折線圖不僅可以表示數(shù)量的多少,而且反映同一事物在不同時間里數(shù)據(jù)的變化趨勢。
餅圖餅圖屬于最傳統(tǒng)的統(tǒng)計圖形之一,通過各扇形面積的大小反映部分與部分,部分與總體的比例關(guān)系。但不擅長對比差異不大或水平值過多的離散型變量。散點圖散點圖又稱為散點分布圖,和折線圖需要的數(shù)組非常相似,區(qū)別是折線圖會將各數(shù)據(jù)點連接起來;而散點圖則只是描繪各數(shù)據(jù)點,并不會將這些數(shù)據(jù)點連接起來。直方圖直方圖又稱質(zhì)量分布圖,由一系列高度不等的縱向條紋和線段表示數(shù)據(jù)分布形態(tài),一般用橫軸表示數(shù)據(jù)所屬類別,縱軸表示數(shù)量或者占比。條形圖條形圖是統(tǒng)計圖資料分析中最常用的圖形,又名柱狀圖,可以清楚地表明各種數(shù)量的多少,用來描述各個類別之間的關(guān)系。箱線圖箱線圖又稱箱形圖或盒式圖,主要用于分析數(shù)據(jù)內(nèi)部的分布狀態(tài)或分散狀態(tài),不同于折線圖、柱狀圖或餅圖等傳統(tǒng)圖表只是數(shù)據(jù)大小、占比、趨勢的呈現(xiàn)。箱線圖包含統(tǒng)計學(xué)的均值、分位數(shù)、極值等統(tǒng)計量,用于分析不同類別數(shù)據(jù)平均水平差異,展示屬性與中位數(shù)離散速度,并揭示數(shù)據(jù)間離散程度、異常值、分布差異等。箱線圖是一種基于“五位數(shù)”摘要顯示數(shù)據(jù)分布的標準化方法熱力圖熱力圖又稱為熱點圖,也稱為交叉填充表,展示兩個離散變量的組合關(guān)系,通過每個單元格顏色的深淺代表數(shù)值的高低以及差異情況。第8章
Numpy《Python數(shù)據(jù)分析與應(yīng)用》NumPy NumPy是Python的開源數(shù)字擴展,定義了數(shù)值數(shù)組和矩陣類型以及基本運算的語言擴展,用于矩陣數(shù)據(jù)、矢量處理等。 Numpy的官方網(wǎng)址/NumPyndarray屬性名含義ndarray.ndim數(shù)組的軸(維度)的數(shù)量ndarray.shape數(shù)組的維度。為一個整數(shù)元組,表示每個維度上的大小。對于一個n行m列的矩陣來說,shape就是(n,m)。shape元組的長度就是秩(或者維度的數(shù)量)ndim。ndarray.size數(shù)組的元素的總個數(shù)。這等于shape元素的乘積。ndarray.dtype用來描述數(shù)組中元素類型的對象。ndarray.itermsize數(shù)組的每個元素的字節(jié)大小。例如,一個類型為float64的元素的數(shù)組itemsize為8。ndarray.data該緩沖區(qū)包含了數(shù)組的實際元素。python提供array模塊,但是array不支持多維,也沒有各種運算函數(shù),不適合做數(shù)值運算。
而numpy提供的同質(zhì)多維數(shù)組ndarray正好彌補以上不足。創(chuàng)建數(shù)組ArrayArangeLinspacelogspace1.array創(chuàng)建數(shù)組importnumpyasnp#引入numpy庫a=np.array([[1,5],[4,5,7]])#創(chuàng)建數(shù)組,將元組或列表作為參數(shù)a5=np.array(([1,5,3,4,5],[6,7,8,9,5]))#創(chuàng)建二維的narray對象print(type(a))#a的類型是數(shù)組print(type(a5))print(a)print(a5)2.arange函數(shù)創(chuàng)建數(shù)組importnumpyasnpa=np.arange(15)#利用arange函數(shù)創(chuàng)建數(shù)組print(a)a5=np.arange(1,5,0.1)#arang函數(shù)和range函數(shù)print(a5)3.linspace用于創(chuàng)建指定數(shù)量等間隔的序列,實際生成一個等差數(shù)列importnumpyasnpa=np.linspace(0,1,15)#從0開始到1結(jié)束,共15個數(shù)的等差數(shù)列print(a)4.logspace用于生成等比數(shù)列importnumpyasnpa=np.logspace(0,5,5)#生成首位是10的0次方,末位是10的5次方,含5個數(shù)的等比數(shù)列print(a)查看數(shù)組importnumpyasnp#引入numpy庫a=np.array([[1,5],[4,5,7],3])#創(chuàng)建數(shù)組,將元組或列表作為參數(shù)a5=np.array(([1,5,3,4,5],[6,7,8,9,5]))#創(chuàng)建二維的narray對象print(type(a))#a的類型是數(shù)組print(a)print(a5)print(a.dtype)#查看a數(shù)組中每個元素的類型print(a6.dtype)#查看a5數(shù)組中每個元素的類型查看數(shù)組importnumpyasnp#引入numpy庫a=np.array([[1,5],[4,5,7],3])a5=np.array(([1,5,3,4,5],[6,7,8,9,5]))#創(chuàng)建二維narrayprint(a.shape)#查看數(shù)組的行列,3行print(a6.shape)#查看數(shù)組的行列,返回5行5列print(a.shape[0])#查看a的行數(shù)print(a6.shape[1])#查看a5的列數(shù)print(a.ndim)#獲取數(shù)組的維數(shù)print(a6.ndim)print(a6.T)#簡單轉(zhuǎn)置矩陣ndarray索引和切片importnumpyasnpa=np.array([[1,5,3,4,5],[6,7,8,9,5]])print(a)print(a[:])#選取全部元素print(a[1])#選取行為1的全部元素print(a[0:1])#截取[0,1)的元素print(a[1,5:5])#截取第二行第[5,5)的元素[895]print(a[1,:])#截取第二行,返回[67895]print(a[1,5])#截取行號為一,列號為5的元素8print(a[1][5])線性代數(shù)函
數(shù)z說明函
數(shù)說
明np.zeros生成零矩陣np.ones生成所有元素為1的矩陣np.eye生成單位矩陣np.transpose矩陣轉(zhuǎn)置np.dot計算兩個數(shù)組的點積np.inner計算兩個數(shù)組的內(nèi)積np.diag矩陣主對角線與一維數(shù)組間轉(zhuǎn)換np.trace矩陣主對角線元素的和np.linalg.det計算矩陣行列式np.linalg.eig計算特征根與特征向量np.linalg.eigvals計算方陣特征根np.linalg.inv計算方陣的逆np.linalg.pinv計算方陣的Moore-Penrose偽逆np.linalg.solve計算Ax=b線性方程組解np.linalg.lstsq計算Ax=b的最小二乘解np.linalg.qr計算QR分解np.linalg.svd計算奇異值分解np.linalg.norm計算向量或矩陣的范數(shù)四則運算importnumpyasnpimportnumpy.linalgaslg#求矩陣的逆需要先導(dǎo)入numpy.linalga1=np.array([[1,2,3],[4,5,6],[5,4,5]])a5=np.array([[1,5,4],[3,4,7],[7,5,6]])print(a1+a5)#相加print(a1-a5)#相減print(a1/a5)#對應(yīng)元素相除,如果都是整數(shù)則取商print(a1%a5)#對應(yīng)元素相除后取余數(shù)print(a1**5)#矩陣每個元素都取n次方矩陣運算importnumpyasnpimportnumpy.linalgaslg#求矩陣的逆需要先導(dǎo)入numpy.linalga1=np.array([[1,2,3],[4,5,6],[5,4,5]])a5=np.array([[1,5,4],[3,4,7],[7,5,6]])print(a1.dot(a5))#點乘滿足:第一個矩陣的列數(shù)等于第二個矩陣的行數(shù)print(a1.transpose())#轉(zhuǎn)置等價于print(a1.T)print(lg.inv(a1))#用linalg的inv函數(shù)來求逆特征根和特征向量importnumpyasnparr=np.array([[1,2,5],[3,6,7],[4,2,9]])print('計算3×3方陣的特征根和特征向量:\n',arr)print('求解結(jié)果為:\n',np.linalg.eig(arr))多元一次方程組importnumpyasnp#多元線性方程組a=np.array([[1,3,5],[2,5,-1],[2,4,7]])b=np.array([10,6,4])x=np.linalg.solve(a,b)print(x)統(tǒng)計量函
數(shù)說明函
數(shù)說
明min(arr,axis)最小值cumsum(arr,axis)軸方向計算累計和max(arr,axis)最大值cumprod(arr,axis)軸方向計算累計乘積mean(arr,axis)平均值argmin(arr,axis)軸方向最小值所在的位置median(arr,axis)中位數(shù)argmax(arr,axis)軸方向最大值所在的位置sum(arr,axis)和corrcoef(arr)計算皮爾遜相關(guān)系數(shù)std(arr,axis)標準差cov(arr)計算協(xié)方差矩陣var(arr,axis)方差
平均值importnumpyasnpX=np.array([160,165,157,122,159,126,160,162,121])#方法1:num=len(X)sum=sum(X)mean=sum/numprint(mean)#方法2:mean=np.mean(X)print(mean)最值importnumpyasnpX=np.array([160,165,157,122,159,126,160,162,121])MIN=np.min(X)MAX=np.max(X)print(MIN)print(MAX)中位數(shù)importnumpyasnpX=np.array([160,165,157,122,159,126,160,162,121])median=np.median(X)print(median)極差importnumpyasnpa=np.array([[3,2,5],[7,4,3],[2,4,9]])print('數(shù)組是:',a)print('調(diào)用ptp()函數(shù):',np.ptp(a))print('沿軸1調(diào)用ptp()函數(shù):',np.ptp(a,axis=1))print('沿軸0調(diào)用ptp()函數(shù):',np.ptp(a,axis=0))方差importnumpyasnpX=np.array([1,5,6])var=X.var()print(var)協(xié)方差importnumpyasnpX=np.array([[1,5,6],[4,3,9],[4,2,9],[4,2,2]])cov=np.cov(X)print(cov)第9章
Matplotlib
《Python數(shù)據(jù)分析與應(yīng)用》MatplotlibMatplotlib發(fā)布于2007年,在其函數(shù)設(shè)計時參考MATLAB相關(guān)函數(shù),故命名以“Mat”開頭,“Plot”表示繪圖,“Lib”為集合。Matplotlib可以繪制線圖、直方圖、餅圖、散點圖以及誤差線圖等各種圖形,主要用于將NumPy統(tǒng)計計算結(jié)果可視化。Matplotlib官方網(wǎng)址為:/Matplotlib繪圖步驟Matplotlib畫圖流程大致分為如下步驟:步驟1:figure函數(shù)創(chuàng)建畫布,決定是否創(chuàng)建子圖。步驟2:使用plot函數(shù)繪制圖形。步驟3:設(shè)置繪圖對象的各種屬性。importmatplotlib.pyplotaspltfig=plt.figure()ax=fig.add_subplot(111)ax.set(xlim=[0.5,4.5],ylim=[-2,8],title='AnExample Axes‘,ylabel='Y-Axis',xlabel='X-Axis')plt.show()
繪圖函數(shù)Matplotlib中繪圖函數(shù)為plot,使用語法如下:plt.plot(x,y,color,marker,linestyle,**kwargs)參數(shù)接收值說明默認值x,yarray表示x軸與y軸對應(yīng)的數(shù)據(jù);無colorstring表示折線的顏色;Nonemarkerstring表示折線上數(shù)據(jù)點處的類型;Nonelinestylestring表示折線的類型;-linewidth數(shù)值線條粗細:linewidth=1.=5.=0.31alpha
0~1之間的小數(shù)表示點的透明度;Nonelabelstring數(shù)據(jù)圖例內(nèi)容:label=‘實際數(shù)據(jù)’None子圖Matplotlib提供如下三種方式繪制子圖:(1)通過plt的subplot;(2)通過figure的add_subplot;(3)通過plt的subplots。子圖subplot(233)表示在當(dāng)前畫布的右上角創(chuàng)建一個兩行三列的繪圖區(qū)域,選擇在第3個位置繪制子圖二維圖函數(shù)名稱描述函數(shù)名稱描述Bar繪制條形圖Polar繪制極坐標圖Barh繪制水平條形圖Scatter繪制x與y的散點圖Boxplot繪制箱型圖Stackplot繪制堆疊圖Hist繪制直方圖Stem繪制二維離散數(shù)據(jù)(“火柴圖”)his2d繪制2D直方圖Step繪制階梯圖Pie繪制餅狀圖Quiver繪制一個二維按箭頭線性圖使用plot函數(shù)實現(xiàn)畫線。plot函數(shù)的第一個數(shù)組是橫軸的值,第二個數(shù)組是縱軸的值,最后一個參數(shù)表示線的顏色。importmatplotlib.pyplotaspltplt.plot([1,2,3],[3,6,9],'-r')plt.plot([1,2,3],[2,4,9],':g')plt.show()
散點圖
scatter函數(shù)用來繪制散點圖。scatter函數(shù)也需要兩組配對的數(shù)據(jù)指定x和y軸的坐標。importmatplotlib.pyplotaspltimportnumpyasnp
N=20
plt.scatter(np.random.rand(N)*100,np.random.rand(N)*100,c='r',s=100,alpha=0.5)plt.scatter(np.random.rand(N)*100,np.random.rand(N)*100,c='g',s=200,alpha=0.5)plt.scatter(np.random.rand(N)*100,np.random.rand(N)*100,c='b',s=300,alpha=0.5)
plt.show()餅狀圖pie函數(shù)用來繪制餅狀圖,用來表達集合中各個部分的百分比。importnumpyasnplabels=['Mon','Tue','Wed','Thu','Fri','Sat','Sun']data=np.random.rand(7)*100plt.pie(data,labels=labels,autopct='%1.1f%%')plt.axis('equal')plt.legend()plt.show()條形圖bar函數(shù)用來繪制條形圖,用來描述一組數(shù)據(jù)的對比情況,例如:一周七天,每天的城市車流量。直方圖直方圖用hist函數(shù)用來繪制,看起來與條形圖有些類似。但它們的含義是不一樣,直方圖描述了某個范圍內(nèi)數(shù)據(jù)出現(xiàn)的頻度。箱線圖importnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltnp.random.seed(2)df=pd.DataFrame(np.random.rand(5,4),columns=['A','B','C','D'])#生成0~1的5*4維度數(shù)據(jù)并存入4列DataFrame中
df.boxplot()plt.show()#顯示圖像三維圖三維圖創(chuàng)建主要有如下兩種方式:(1)利用關(guān)鍵字projection='3d’來實現(xiàn)(2)通過從mpl_toolkits.mplot3d導(dǎo)入對象Axes3D來實現(xiàn)三維曲線圖frommpl_toolkitsimportmplot3dimportmatplotlib.pyplotaspltimportnumpyasnp
ax=plt.axes(projection='3d')
#三維線的數(shù)據(jù)zline=np.linspace(0,15,1000)xline=np.sin(zline)yline=np.cos(zline)ax.plot3D(xline,yline,zline,'gray')三維散點圖importmatplotlib.pyplotaspltimportnumpyasnp
ax=plt.axes(projection='3d')
zdata=15*np.random.random(100)xdata=np.sin(zdata)+0.1*np.random.randn(100)ydata=np.cos(zdata)+0.1*np.random.randn(100)ax.scatter3D(xdata,ydata,zdata,c=zdata,cmap='Reds')三維等高線圖frommpl_toolkitsimportmplot3dimportmatplotlib.pyplotaspltimportnumpyasnp
deff(x,y):returnnp.sin(np.sqrt(x**2+y**2))x=np.linspace(-6,6,30)y=np.linspace(-6,6,30)X,Y=np.meshgrid(x,y)Z=f(X,Y)
fig=plt.figure()ax=plt.axes(projection='3d')ax.contour3D(X,Y,Z,50,cmap='binary')ax.set_xlabel('x')ax.set_ylabel('y')ax.set_zlabel('z')#俯仰角設(shè)為60度,把方位角調(diào)整為35度ax.view_init(60,35)動態(tài)圖matplotlib畫圖有阻塞和交互兩種顯示模式:(1)阻塞模式:采用plt.show顯示圖片,且圖片關(guān)閉之前代碼將阻塞在該行(2)交互模式:采用plt.plot顯示圖片,且不阻塞代碼的繼續(xù)運行。Matplotlib中默認是使用阻塞模式。
matplotlib的animation模塊實現(xiàn)動態(tài)圖較為繁瑣。而交互式繪圖和暫停功能較為簡單,通過“畫圖-->清理-->畫圖”的循環(huán)實現(xiàn)動態(tài)效果。相關(guān)函數(shù)如下所示:plt.ion():打開交互模式plt.ioff():關(guān)閉交互模式plt.clf():清除當(dāng)前的Figure對象plt.cla():清除當(dāng)前的Axes對象plt.pause():暫停功能概率分布泊松分布正態(tài)分布均勻分布二項分布泊松分布importnumpyasnpimportmatplotlib.pyplotaspltlist=np.random.poisson(9,10000)plt.hist(list,bins=8,color='b',alpha=0.4,edgecolor='r')plt.show()正態(tài)分布importnumpyasnpimportmatplotlib.pyplotaspltlist=np.random.normal(0,1,10000)plt.hist(list,bins=8,color='r',alpha=0.5,edgecolor='r')plt.show()均勻分布importnumpyasnpimportmatplotlib.pyplotasplt
list=np.random.uniform(0,10,10000)plt.hist(list,bins=7,color='g',alpha=0.4,edgecolor='b')plt.show()二項分布importnumpyasnpimportmatplotlib.pyplotaspltlist=np.random.binomial(n=10,p=0.5,size=10000)plt.hist(list,bins=8,color='g',alpha=0.4,edgecolor='b')plt.show()三維圖三維圖創(chuàng)建主要有如下兩種方式利用關(guān)鍵字projection='3d’來實現(xiàn)通過從mpl_toolkits.mplot3d導(dǎo)入對象Axes3D來實現(xiàn)三維曲線圖frommpl_toolkitsimportmplot3dimportmatplotlib.pyplotaspltimportnumpyasnp
ax=plt.axes(projection='3d')
#三維線的數(shù)據(jù)zline=np.linspace(0,15,1000)xline=np.sin(zline)yline=np.cos(zline)ax.plot3D(xline,yline,zline,'gray')三維散點圖importmatplotlib.pyplotaspltimportnumpyasnp
ax=plt.axes(projection='3d')
zdata=15*np.random.random(100)xdata=np.sin(zdata)+0.1*np.random.randn(100)ydata=np.cos(zdata)+0.1*np.random.randn(100)ax.scatter3D(xdata,ydata,zdata,c=zdata,cmap='Reds')三維等高線圖importmatplotlib.pyplotaspltimportnumpyasnp
ax=plt.axes(projection='3d')
zdata=15*np.random.random(100)xdata=np.sin(zdata)+0.1*np.random.randn(100)ydata=np.cos(zdata)+0.1*np.random.randn(100)ax.scatter3D(xdata,ydata,zdata,c=zdata,cmap='Reds')第10章Pandas
《Python數(shù)據(jù)分析與應(yīng)用》pandaspandas是基于NumPy的數(shù)據(jù)分析工具,官方網(wǎng)址是。pandas提供了快速,靈活和富有表現(xiàn)力的數(shù)據(jù)結(jié)構(gòu),目的是使“關(guān)系”或“標記”數(shù)據(jù)的工作既簡單又直觀。Pandas用于數(shù)據(jù)清洗,對噪音等數(shù)據(jù)進行處理,從而便于機器學(xué)習(xí)和數(shù)據(jù)分析。pandaspandas常用6個類Series:基本數(shù)據(jù)結(jié)構(gòu),一維標簽數(shù)組,能夠保存任何數(shù)據(jù)類型DataFrame:基本數(shù)據(jù)結(jié)構(gòu),一般為二維數(shù)組,是一組有序的列Index:索引對象,負責(zé)管理軸標簽和其他元數(shù)據(jù)(比如軸名稱)groupby:分組對象,通過傳入需要分組的參數(shù)實現(xiàn)對數(shù)據(jù)分組Timestamp:時間戳對象,表示時間軸上的一個時刻Timedelta:時間差對象,用來計算兩個時間點的差值Pandas2個重要類創(chuàng)建Series
創(chuàng)建Series對象的函數(shù)是Series,它的主要參數(shù)是data和index,其基本語法格式如下。pandas.Series(data=None,
index=None,
name=None)
參數(shù)說明如下:data:接收array或dict。表示接收的數(shù)據(jù)。默認為None。index:接收array或list。表示索引,必須與數(shù)據(jù)長度相同name:接收string或list。表示Series對象的名稱。默認為None。通過ndarray創(chuàng)建Seriesimportpandasaspdimportnumpyasnpprint('通過ndarray創(chuàng)建的Series為:\n',pd.Series(np.arange(5),index=['a','b','c','d','e'],name='ndarray'))通過dict創(chuàng)建Seriesdict的鍵作為Series的索引,dict的值作為Series的值,無須傳入index參數(shù)。通過dict創(chuàng)建Series對象,代碼如下所示:importpandasaspddict={'a':0,'b':1,'c':5,'d':3,'e':4}print('通過dict創(chuàng)建的Series為:\n',pd.Series(dict))通過list創(chuàng)建Seriesimportpandasaspdlist1=[0,1,5,3,4]print('通過list創(chuàng)建的Series為:\n',pd.Series(list1,index=['a','b','c','d','e'],name='list'))Series屬性Series擁有8個常用屬性,如下所示。values:以ndarray的格式返回Series對象的所有元素index:返回Series對象的索引dtype:返回Series對象的數(shù)據(jù)類型shape:返回Series對象的形狀nbytes:返回Series對象的字節(jié)數(shù)ndim:返回Series對象的維度size:返回Series對象的個數(shù)T:返回Series對象的轉(zhuǎn)置訪問Series的屬性importpandasaspdseries1=pd.Series([1,5,3,4])print("series1:\n{}\n".format(series1))print("series1.values:{}\n".format(series1.values))#數(shù)據(jù)print("series1.index:{}\n".format(series1.index))#索引print("series1.shape:{}\n".format(series1.shape))#形狀print("series1.ndim:{}\n".format(series1.ndim))#維度訪問Series數(shù)據(jù)通過索引位置訪問Series的數(shù)據(jù)與ndarray相同,importpandasaspdseries5=pd.Series([1,5,3,4,5,6,7],index=["C","D","E","F","G","A","B"])#通過索引位置訪問Series數(shù)據(jù)子集print("series5位于第1位置的數(shù)據(jù)為:",series5[0])#通過索引名稱(標簽)也可以訪問Series數(shù)據(jù)print("Eis{}\n".format(series5["E"]))更新Seriesimportpandasaspdseries1=pd.Series(list1,index=['a','b','c','d','e'],name='list')print("series1:\n{}\n".format(series1))#更新元素series1['a']=3print('更新后的Series1為:\n',series1)追加Series和插入單個值importpandasaspdseries1=pd.Series(list1,index=['a','b','c','d','e'],name='list')print("series1:\n{}\n".format(series1))series1=pd.Series([4,5],index=['f','g'])#追加Seriesprint('在series插入series1后為:\n',series.append(series1))刪除Series元素importpandasaspdseries=pd.Series(list1,index=['a','b','c','d','e'],name='list')print("series:\n{}\n".format(series))#刪除數(shù)據(jù)series.drop('e',inplace=True)print('刪除索引e對應(yīng)數(shù)據(jù)后的series為:\n',series)。DataFrameDataFrame是pandas基本數(shù)據(jù)結(jié)構(gòu),類似數(shù)據(jù)庫中的表。DataFrame既有行索引,也有列索引,可以看作是Series組成的dict,每個Series是DataFrame的一列
創(chuàng)建DataFrameDataFrame函數(shù)用于創(chuàng)建DataFrame對象,其基本語法格式如下pandas.DataFrame(data=None,
index=None,
columns=None,
dtype=None,
copy=False)參數(shù)說明如下所示:data:接收ndarray、dict、list或DataFrame。表示輸入數(shù)據(jù)。默認為None。index:接收Index,ndarray。表示索引。默認為None。columns:接收Index,ndarray。表示列標簽(列名)。默認為None。通過dict創(chuàng)建DataFrameimportpandasaspddict1={'col1':[0,1,5,3,4],'col5':[5,6,7,8,9]}print('通過dict創(chuàng)建的DataFrame為:\n',pd.DataFrame(dict1,index=['a','b','c','d','e']))通過list創(chuàng)建DataFrameimportpandasaspdlist5=[[0,5],[1,6],[5,7],[3,8],[4,9]]print('通過list創(chuàng)建的DataFrame為:\n',pd.DataFrame(list5,index=['a','b','c','d','e'],columns=['col1','col5']))通過Series創(chuàng)建DataFrameimportpandasaspdnoteSeries
=
pd.Series(["C",
"D",
"E",
"F",
"G",
"A",
"B"],
index=[1,
5,
3,
4,
5,
6,
7])weekdaySeries
=
pd.Series(["Mon",
"Tue",
"Wed",
"Thu","Fri",
"Sat",
"Sun"],
index=[1,
5,
3,
4,
5,
6,
7])df4
=
pd.DataFrame([noteSeries,
weekdaySeries])print("df4:\n{}\n".format(df4))DataFrame屬性values:以ndarray的格式返回DataFrame對象的所有元素index:返回DataFrame對象的Indexcolumns:返回DataFrame對象的列標簽dtypes:返回DataFrame對象的數(shù)據(jù)類型axes:返回DataFrame對象的軸標簽ndim:返回DataFrame對象的軸尺寸數(shù)size:返回DataFrame對象的個數(shù)shape:返回DataFrame對象的形狀更新DataFrameimportpandasaspddf=pd.DataFrame({'col1':[0,1,5,3,4],'col5':[5,6,7,8,9]},index=['a','b','c','d','e'])print('DataFrame為:\n',df)#更新列df['col1']=[10,11,15,13,14]print('更新列后的DataFrame為:\n',df)插入和刪除DataFrameimportpandasaspddf3=pd.DataFrame({"note":["C","D","E","F","G","A","B"],"weekday":["Mon","Tue","Wed","Thu","Fri","Sat","Sun"]})print("df3:\n{}\n".format(df3))df3["No."]=pd.Series([1,5,3,4,5,6,7])#采用賦值的方法插入列print("df3:\n{}\n".format(df3))deldf3["weekday"]#刪除列的方法有多種,如del、pop、dropprint("df3:\n{}\n".format(df3))Index
(1)
隱式創(chuàng)建
創(chuàng)建Series或DataFrame等對象時,索引會轉(zhuǎn)換為Index對象
(2)顯式創(chuàng)建
Index對象可以通過pandas.Index()函數(shù)創(chuàng)建
。
plotMatplotlib繪制一張圖表需要各個基礎(chǔ)組件對象,工作量較大。而pandas中使用行標簽和列標簽以及分組信息,較為簡便的完成圖表的制作。散點圖
importnumpyasnpimportpandasaspdwdf=pd.DataFrame(np.arange(20),columns=['W'])wdf['Y']=wdf['W']*1.5+2wdf.iloc[3,1]=128wdf.iloc[18,1]=150wdf.plot(kind='scatter',x='W',y='Y')
條形圖importpandasaspdimportnumpyasnpimportmatplotlib.pyplotaspltdf2=pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])df2.plot.bar()plt.show()
直方圖與密度圖importpandasaspdimportnumpyasnp
n1=np.random.normal(loc=10,scale=5,size=1000)n2=np.random.normal(loc=50,scale=7,size=1000)n=np.hstack((n1,n2))s=pd.DataFrame(data=n)s.plot(kind='hist',bins=100,density=True)s.plot(kind='kde')
箱線圖importnumpyasnpimportpandasaspd
wdf=pd.DataFrame(np.arange(20),columns=['W'])wdf['Y']=wdf['W']*1.5+2wdf.iloc[3,1]=128wdf.iloc[18,1]=150importmatplotlib.pyplotaspltplt.boxplot(wdf)plt.show()面積圖importpandasaspdimportnumpyasnpimportmatplotlib.pyplotaspltdf=pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])df.plot.area()
plt.show()數(shù)據(jù)轉(zhuǎn)換函數(shù)名說
明df.replace(a,b)df.replace(a,b)是指用b替換a值df['col1'].map()對指定列進行函數(shù)轉(zhuǎn)換,用于Series。pd.merge(df1,df2)用于合并df1和df2,按照共有的列連接bine_first(df2)用df2的數(shù)據(jù)補充df1的缺失值。
pandas.cut將連續(xù)數(shù)據(jù)進行離散化數(shù)據(jù)分組與聚合函數(shù)名說
明df.groupby數(shù)據(jù)分組Df.agg數(shù)據(jù)聚合數(shù)據(jù)處理函數(shù)名說
明df.fillna缺失值填充df.dropna缺失值刪除df.duplicated()df.drop_duplicates()重復(fù)值清洗讀取外部數(shù)據(jù)函數(shù)名說
明pd.read_excel操作Excel讀取文本文件的命令是
read_csv或者
read_table,將
DataFrame寫入CSV文件命令為
df.to_csv操作文本文件Pandas操作mysql數(shù)據(jù)庫,使用pymysql模塊的read_sql讀取數(shù)據(jù),使用read_sql_query()函數(shù)查詢數(shù)據(jù),to_sql()函數(shù)寫入數(shù)據(jù)到數(shù)據(jù)庫。操作數(shù)據(jù)庫第11章scipy
《Python數(shù)據(jù)分析與應(yīng)用》ScipyScipy用于統(tǒng)計、優(yōu)化、整合、線性代數(shù)模塊、傅里葉變換、信號和圖像處理等,常用的scipy工具有stats(統(tǒng)計學(xué)工具包)、erpolate(插值,線性的,三次方)、cluster(聚類)、signal(信號處理)等。安裝scipy之前必須安裝numpyScipy官方網(wǎng)址。ScipyScipy功能函數(shù)功能函數(shù)積分egrate線性代數(shù)scipy.linalg信號處理scipy.signal稀疏矩陣scipy.sparse空間數(shù)據(jù)結(jié)構(gòu)和算法scipy.spatial統(tǒng)計學(xué)scipy.stats最優(yōu)化scipy.optimize多維圖像處理scipy.ndimage插值erpolate聚類scipy.cluster曲線擬合scipy.curve_fit文件輸入/輸出scipy.io傅里葉變換scipy.fftpack稀疏矩陣
在矩陣中,若數(shù)值為0的元素數(shù)目遠遠多于非0元素的數(shù)目,并且非0元素分布沒有規(guī)律時,則稱該矩陣為稀疏矩陣。coo_matrix()用于創(chuàng)建稀疏矩陣,語法如下所示。
coo_matrix((data,(i,j)),[shape=(M,N)])矩陣運算fromscipy.linalgimport*importnumpyasnp
A=np.matrix('[1,2;3,4]')print(A)print(A.T)#轉(zhuǎn)置矩陣print(A.I)#逆矩陣[[12][34]][[13][24]][[-2.1.][1.5-0.5]]線性方程組求解
fromscipyimportlinalgimportnumpyasnpa=np.array([[1,3,5],[2,5,-1],[2,4,7]])b=np.array([10,6,4])x=linalg.solve(a,b)print(x)非線性方程組求解
fromscipy.optimizeimportfsolvefrommathimportsindeff(x):
x0,x1,x2=x.tolist()
return[5*x1+3,4*x0*x0-2*sin(x1*x2),x1*x2-1.5]
#f計算方程組的誤差,[1,1,1]是未知數(shù)的初始值result=fsolve(f,[1,1,1])
print(result)print(f(result))函數(shù)最值
fromscipy.optimizeimportminimizeimportnumpyasnp
#計算1/x+x的最小值deffun(args):a=argsv=lambdax:a/x[0]+x[0]returnvif__name__=="__main__":args=(1)#ax0=np.asarray((2))#初始猜測值res=minimize(fun(args),x0,method='SLSQP')print(res.fun)print(res.success)print(res.x)最小二乘法
最小二乘法可以理解為就是通過最小化誤差的平方和來尋找最佳的匹配函數(shù),常用于曲線擬合。一般情況下擬合的曲線為k*x+b函數(shù),即尋找最好的k、b值實現(xiàn)分類效果。 scipy的leastsq函數(shù)用于最小二乘法的擬合
scipy.optimize.leastsq(func,x0,args=())數(shù)據(jù)分布泊松分布正態(tài)分布指數(shù)分布均勻分布正態(tài)分布正態(tài)分布(Normaldistribution),也稱“常態(tài)分布”,又名高斯分布(Gaussiandistribution),正態(tài)曲線呈鐘型,兩頭低,中間高,左右對稱因其曲線呈鐘形,又稱之為鐘形曲線。scipy.norm實現(xiàn)正態(tài)分布。binomial=stats.binom.pmf(k,n,p)指數(shù)分布
指數(shù)分布描述的是事件發(fā)生的時間間隔,主要用于描述電子元器件的壽命。
scipy.expon實現(xiàn)指數(shù)分布。泊松分布#平均值,方差,偏度,峰度mean,var,skew,kurt=poisson.stats(mu,moments='mvsk')泊松分布用于描述單位時間/面積內(nèi),隨機事件發(fā)生的次數(shù)。例如,譬如:某一服務(wù)設(shè)施一定時間內(nèi)到達的人數(shù)、一個月內(nèi)機器損壞的次數(shù)等。指數(shù)分布指數(shù)分布描述的是事件發(fā)生的時間間隔,主要用于描述電子元器件的壽命。scipy.expon實現(xiàn)指數(shù)分布。統(tǒng)計量統(tǒng)計量包括平均數(shù)、中位數(shù)、眾數(shù)、樣本均值(即n個樣本的算術(shù)平均值),樣本方差(即n個樣本與樣本均值之間平均偏離程度的度量)等,用于數(shù)據(jù)進行分析、檢驗的變量。
眾數(shù)是指在統(tǒng)計分布上具有明顯集中趨勢點的數(shù)值,是出現(xiàn)次數(shù)最多的數(shù)值,代表數(shù)據(jù)的一般水平。scipy.stats提供mode函數(shù)實現(xiàn)求眾數(shù)。scipy.stats模塊提供了pearsonr函數(shù)計算皮爾森相關(guān)系數(shù),語法如下所示:fromscipy.statsimportpearsonrpearsonr(x,y)參數(shù)解釋如下:x為特征,y為目標變量。圖像處理圖像處理和分析通常被看作是對二維值數(shù)組的操作。scipy.ndimage提供了許多通用的圖像處理和分析功能,支持圖像矩陣變換、圖像濾波、圖像卷積等功能。圖像旋轉(zhuǎn)Scipy提供ndimage.rotate函數(shù)用于旋轉(zhuǎn)圖像。rotate_flower=ndimage.rotate(flower,45)plt.imshow(rotate_flower)plt.title('rotate_flower')圖像平滑
圖像平滑是一種區(qū)域增強的算法,用于突出圖像的低頻成分、主干部分或抑制圖像的噪聲和干擾高頻成分,使圖像亮度平緩漸變、減少突變梯度,改善圖像質(zhì)量的圖像處理方法。圖像平滑分為:高斯濾波中值濾波高斯濾波scipy.ndimage模塊提供gaussian_filter函數(shù)。fromscipyimportndimageimportmatplotlib.imageasmpimgimportmatplotlib.pyplotaspltflower=mpimg.imread('d://flower.jpg')flower1=ndimage.gaussian_filter(flower,sigma=3)plt.imshow(flower1)plt.show()scipy.ndimage模塊的median_filte函數(shù)實現(xiàn)中值濾波。fromscipyimportndi
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2030年中國衛(wèi)浴家電行業(yè)競爭格局及投資營銷模式分析報告
- 湄洲灣職業(yè)技術(shù)學(xué)院《細胞生物學(xué)實驗A》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年書畫藝術(shù)品線上銷售合同2篇
- 2025年岳陽從業(yè)資格證模擬考試題貨運考題
- 2024年某企業(yè)員工李四借款協(xié)議范本版B版
- 洛陽科技職業(yè)學(xué)院《課件設(shè)計與制作》2023-2024學(xué)年第一學(xué)期期末試卷
- 健康醫(yī)療費用擔(dān)保方案
- 項目轉(zhuǎn)讓框架要點
- 辦公樓導(dǎo)向牌施工合同
- 大數(shù)據(jù)分析項目報價表格
- 芭蕾舞演出策劃方案
- 異型件自動插件機設(shè)計
- 電腦病毒及預(yù)防課件
- 新版中國食物成分表
- 零食店開業(yè)活動策劃
- 《小米手機分析》課件
- 初中數(shù)學(xué)專項練習(xí)《二次函數(shù)》92道計算題包含答案
- 教師法律法規(guī)講座課件
- 安全生產(chǎn)職業(yè)病預(yù)防培訓(xùn)
- 三級醫(yī)院評審(人力資源管理)應(yīng)知應(yīng)會宣講課件
- 全省精神衛(wèi)生防治項目實施方案
評論
0/150
提交評論