版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Python與大數(shù)據(jù)專(zhuān)業(yè)分析課件(470P)Python與大數(shù)據(jù)分析計(jì)算機(jī)信息學(xué)院Python大數(shù)據(jù)專(zhuān)業(yè)友情提示上課時(shí)間請(qǐng)勿:請(qǐng)將您手機(jī)改為震動(dòng)避免在課室里使用手機(jī)交談其他事宜隨意進(jìn)出教室請(qǐng)勿在室內(nèi)吸煙上課時(shí)間歡迎:提問(wèn)題和積極回答問(wèn)題隨時(shí)指出授課內(nèi)容的不當(dāng)之處Python與大數(shù)據(jù)分析Python基礎(chǔ)(次課)網(wǎng)絡(luò)爬蟲(chóng)(次課)期中隨堂上機(jī)考試(次課)金融數(shù)據(jù)分析案例(次課)文本數(shù)據(jù)分析案例(次課)圖像數(shù)據(jù)分析(次課)自我介紹劉寧寧對(duì)外經(jīng)濟(jì)貿(mào)易大學(xué)信息學(xué)院講師。專(zhuān)注于對(duì)圖像分類(lèi)(VisualObjectClassification)、文本處理(NaturalLanguageProcessing)模
2、式識(shí)另U(PatternRecognition痔方面的研究。com為什么大數(shù)據(jù)首選是Python呢?第一部分初識(shí)Python第二部分基本概念變量、注釋、print函數(shù)、數(shù)據(jù)類(lèi)型、算術(shù)運(yùn)算符、類(lèi)型轉(zhuǎn)換第三部分?jǐn)?shù)據(jù)的容器列表、元組、字典、集合第四部分控制結(jié)構(gòu)與推導(dǎo)式第五部分?jǐn)?shù)據(jù)的讀寫(xiě)操作第六部分錯(cuò)誤類(lèi)型和異常捕獲第七部分字符編碼問(wèn)題處理第八部分編寫(xiě)函數(shù)處理數(shù)據(jù)第九部分變量作用域第十部分Python中的模塊第十一部分Python中的類(lèi)第十五部分Numpy基礎(chǔ)知識(shí)第十六部分Pandas數(shù)據(jù)分析第十三部分正則表達(dá)式第十四部分日期數(shù)據(jù)的處理Python語(yǔ)言的誕生和發(fā)展歷史Python語(yǔ)言的特點(diǎn)運(yùn)行環(huán)境及安
3、裝Python語(yǔ)言的誕生和發(fā)展歷史Python語(yǔ)言是一種解釋型、面向?qū)ο?、?dòng)態(tài)數(shù)據(jù)類(lèi)型的高級(jí)程序設(shè)計(jì)語(yǔ)言Python語(yǔ)言是數(shù)據(jù)分析師的首選數(shù)據(jù)分析語(yǔ)言也是智能硬件的首選語(yǔ)言數(shù)據(jù)分析創(chuàng)建復(fù)雜的Web應(yīng)用程序游戲開(kāi)發(fā)動(dòng)畫(huà)電影效果網(wǎng)站開(kāi)發(fā)智能硬件開(kāi)發(fā)Python與蟒蛇有關(guān)?GuidovanRossum于年在荷蘭國(guó)家數(shù)學(xué)和計(jì)算機(jī)科學(xué)研究所設(shè)計(jì)出來(lái)的Python語(yǔ)言的誕生BBCMontyPythonlsquosFlyingCircus(蒙提middot派森的飛行馬戲團(tuán))GuidovanRossum(人稱(chēng)龜叔)Python版本于年月發(fā)布。在年月Python發(fā)布此版本沒(méi)有完全兼容之前的PythonPytho
4、n也因此分為了Python派系和Python派系兩大陣營(yíng)Python語(yǔ)言的發(fā)展歷史TIOBEINDEX:編程語(yǔ)言流行程度排行榜Python語(yǔ)言的TIOBEINDEXPython曾在年和年兩度被TIOBE排行榜評(píng)為年度編程語(yǔ)言現(xiàn)已成為了第五大流行編程語(yǔ)言(截至年月)Python語(yǔ)言的TIOBEINDEXPython語(yǔ)言的特點(diǎn)優(yōu)點(diǎn)一:優(yōu)雅、簡(jiǎn)單、明確(減少花哨、晦澀或以炫技為目的的代碼)讓數(shù)據(jù)分析師們擺脫了程序本身語(yǔ)法規(guī)則的泥潭更快的進(jìn)行數(shù)據(jù)分析C語(yǔ)言Python語(yǔ)言?xún)?yōu)點(diǎn)二:強(qiáng)大的標(biāo)準(zhǔn)庫(kù)完善的基礎(chǔ)代碼庫(kù)覆蓋了網(wǎng)絡(luò)通信、文件處理、數(shù)據(jù)庫(kù)接口、圖形系統(tǒng)、XML處理等大量?jī)?nèi)容被形象地稱(chēng)為內(nèi)置電池(bat
5、teriesincluded)Python使用者調(diào)包俠優(yōu)點(diǎn)三:良好的可擴(kuò)展性大量的第三方模塊覆蓋了科學(xué)計(jì)算、Web開(kāi)發(fā)、數(shù)據(jù)接口、圖形系統(tǒng)等眾多領(lǐng)域開(kāi)發(fā)的代碼通過(guò)很好的封裝也可以作為第三方模塊給別人使用。如Pandas、Numpy、Seaborn、Scikitlearn等等優(yōu)點(diǎn)四:免費(fèi)、開(kāi)源缺點(diǎn)一:運(yùn)行速度慢缺點(diǎn)二:加密難缺點(diǎn)三:縮進(jìn)規(guī)則缺點(diǎn)四:多線程災(zāi)難Python語(yǔ)言的缺點(diǎn)Python語(yǔ)言與Java動(dòng)態(tài)類(lèi)型和靜態(tài)類(lèi)型Python中一切皆對(duì)象括號(hào)與縮進(jìn)應(yīng)用領(lǐng)域Python語(yǔ)言與R語(yǔ)言機(jī)器學(xué)習(xí)的一把利器可讀性強(qiáng)便于上手靈活性強(qiáng):可與其他如Web應(yīng)用程序進(jìn)行整合以統(tǒng)計(jì)推斷為導(dǎo)向數(shù)據(jù)分析之外的領(lǐng)域
6、有所限制包凌亂且一致性較差Python語(yǔ)言與R語(yǔ)言的應(yīng)用場(chǎng)景對(duì)比網(wǎng)絡(luò)爬蟲(chóng)連接數(shù)據(jù)庫(kù)內(nèi)容管理系統(tǒng)API構(gòu)建統(tǒng)計(jì)分析互動(dòng)式圖標(biāo)面板運(yùn)行環(huán)境及安裝推薦使用Anaconda進(jìn)行Python安裝、環(huán)境配置及工具包管理IpythonqtconsolePyCharmJupyterNotebookSpyderlPython鼓勵(lì)種執(zhí)行探索(executeexplore)的工作模式輸入代碼之后按下回車(chē)便會(huì)立即得到代碼運(yùn)行結(jié)果交互式計(jì)算和開(kāi)發(fā)環(huán)境:IPython交互式計(jì)算和開(kāi)發(fā)環(huán)境:IPython輸入獲得IPython的詳細(xì)介紹輸入quickref獲得IPython的快速參考交互式計(jì)算和開(kāi)發(fā)環(huán)境:IPython輸入
7、help()查看IPython的幫助文檔使用內(nèi)省pandas查看Pandas的幫助文檔基于Qt框架的GUI控制臺(tái)qtconsole為終端應(yīng)用程序提供諸如內(nèi)嵌圖片、多行編輯、語(yǔ)法高亮之類(lèi)的富文本編輯功能啟動(dòng)命令:jupyterqtconsole缺點(diǎn):功能少、用戶(hù)友好性不夠JupyterNotebookJuliaPythonR=Jupyter基于Web技術(shù)的交互式計(jì)算文檔格式支持Markdown和Latex語(yǔ)法支持代碼運(yùn)行、文本輸入、數(shù)學(xué)公式編輯、內(nèi)嵌式畫(huà)圖和其他如圖片文件的插入是一個(gè)對(duì)代碼友好的筆記本JupyterNotebookJupyter支持包含Rkernel(支持R語(yǔ)言)啟動(dòng)命令:jup
8、yternotebookJupyterNotebook推薦使用JupyterNotebook進(jìn)行數(shù)據(jù)分析并將自己數(shù)據(jù)分析的思考過(guò)程寫(xiě)在其中方便之后整理思路以及向別人展示數(shù)據(jù)分析結(jié)果從左至右分別是默認(rèn)Python終端、IPython和JupyterNotebookRNotebook年月R語(yǔ)言的集成環(huán)境RStudio也擁有了自己的RNotebook了集成開(kāi)發(fā)環(huán)境IDEPyCharmSpyder數(shù)據(jù)科學(xué)計(jì)算平臺(tái)AnacondaleadingopendatascienceplatformpoweredbyPython自動(dòng)酉已置Python環(huán)境下載并安裝JupyterNotebook、qtconsole
9、和集成開(kāi)發(fā)環(huán)境Spyder包管理器conda總結(jié)Python語(yǔ)言的特點(diǎn):優(yōu)雅、簡(jiǎn)單、易學(xué)Python語(yǔ)言的誕生與發(fā)展歷史Python語(yǔ)言的運(yùn)行環(huán)境:IPython、JupyterNotebooKSpyderPython語(yǔ)言的數(shù)據(jù)科學(xué)計(jì)算平臺(tái):Anaconda實(shí)踐案例:PyCharm下HelloWorld通過(guò)例子說(shuō)明Python與其他語(yǔ)言的區(qū)別萬(wàn)物皆對(duì)象空格控制結(jié)構(gòu)報(bào)錯(cuò)變量、注釋、print函數(shù)、數(shù)據(jù)類(lèi)型算術(shù)運(yùn)算符、類(lèi)型轉(zhuǎn)換解釋型語(yǔ)言PythonPython語(yǔ)言是一種解釋型、面向?qū)ο?、?dòng)態(tài)數(shù)據(jù)類(lèi)型的高級(jí)程序設(shè)計(jì)語(yǔ)言數(shù)據(jù)集變量及相關(guān)含義公開(kāi)數(shù)據(jù)集資源UCI數(shù)據(jù)集Kaggle數(shù)據(jù)集Yahoo!股票價(jià)
10、格數(shù)據(jù)用來(lái)存儲(chǔ)一些之后可能會(huì)變化的值對(duì)科比投籃ID為的一次投籃進(jìn)行分析那么我們就可以創(chuàng)建一個(gè)名稱(chēng)為shotid的變量并且將值儲(chǔ)存在變量shotid中如果之后我們想要分析科比的另外一次投籃比如投籃ID為的投籃我們只需要修改變量shotid的賦值將shotid賦值為即可變量和常量變量變量名必須是大小寫(xiě)英文字母、數(shù)字或下劃線的組合不能用數(shù)字開(kāi)頭并且對(duì)大小寫(xiě)敏感關(guān)鍵字不能用于命名變量(個(gè))如and、as、asser、tbreak、class、continue、def、del等變量命名規(guī)則通過(guò)賦值運(yùn)算符=變量名和想要賦予變量的值連接起來(lái)變量的賦值操作就完成了聲明和定義的的過(guò)程在其他語(yǔ)言中需要制定類(lèi)型同一
11、變量可以反復(fù)賦值而且可以是不同類(lèi)型的變量這也是Python語(yǔ)言稱(chēng)之為動(dòng)態(tài)語(yǔ)言的原因變量賦值常量表示不能變的變量Python中是沒(méi)有常量的關(guān)鍵字的只是我們常常約定使用大寫(xiě)字母組合的變量名表示常量也有不要對(duì)其進(jìn)行賦值的提醒作用常量如同我們?cè)诳磿?shū)時(shí)做筆記一樣Python語(yǔ)言會(huì)通過(guò)注釋符號(hào)識(shí)別出注釋的部分將它們當(dāng)做純文本并在執(zhí)行代碼時(shí)跳過(guò)這些純文本在Python語(yǔ)言中使用#進(jìn)行行注釋注釋多行注釋使用連續(xù)單個(gè)單引號(hào)或者雙引號(hào)在Pythonx版本中同時(shí)兼容print和print()在Pythonx版本中print函數(shù)為帶括號(hào)的print()如果想要看變量的值則直接在print后面加上變量名即可。如果是想要
12、輸出提示信息如一句話那我們需要將提示信息用lsquo單引號(hào)包裹起來(lái)(這使得內(nèi)容構(gòu)成一個(gè)字符串)print函數(shù)使用逗號(hào),隔開(kāi)變量與其他剩余內(nèi)容則print在輸出時(shí)會(huì)依次打印各個(gè)字符串或變量遇到逗號(hào),時(shí)會(huì)輸出一個(gè)空格print函數(shù)不僅可以打印變量值也可以打印計(jì)算結(jié)果Python語(yǔ)言的數(shù)據(jù)類(lèi)型包括整型、浮點(diǎn)型、字符串、布爾型和空值整型(int)整型的取值為整數(shù)有正有負(fù)如等。在科比投籃數(shù)據(jù)集中shotid、gameeventid、gameid、locx、locy、minutesremaining、period、playoffs、secondsremaining、shotdistance、shotmad
13、eflag、teamid都是整型變量數(shù)據(jù)類(lèi)型浮點(diǎn)型的取值為小數(shù)當(dāng)計(jì)算有精度要求時(shí)被使用,由于小數(shù)點(diǎn)可以在相應(yīng)的二進(jìn)制的不同位置浮動(dòng)故而稱(chēng)為浮點(diǎn)數(shù)如等但是如果是非常大或者非常小的浮點(diǎn)數(shù)就需要使用科學(xué)計(jì)數(shù)法表示用e代替。科比投籃數(shù)據(jù)集中的lat和lon為浮點(diǎn)型變量。浮點(diǎn)型(float)字符串(str)字符串是以?xún)蓚€(gè)單引號(hào)或兩個(gè)雙引號(hào)包裹起來(lái)的文本字符串JumpShot包括Jump空格Shot這個(gè)字符字符串(str)轉(zhuǎn)義字符:字符串里常常存在一些如換行、制表符等有特殊含義的字符這些字符稱(chēng)之為轉(zhuǎn)義字符比如n表示換行t表示制表符Python還允許用r表示內(nèi)部的字符串默認(rèn)不轉(zhuǎn)義布爾型(bool)布爾型只有
14、True和False兩種值。比較運(yùn)算和條件表達(dá)式都會(huì)產(chǎn)生True或False布爾型(bool)布爾型(bool)布爾值可以進(jìn)行and、or和not運(yùn)算and和or運(yùn)算分別用和|表示and運(yùn)算or運(yùn)算布爾型(bool)not運(yùn)算為非運(yùn)算即把True變成FalseFalseS:成True??罩凳荘ython里一個(gè)特殊的值用None表示一般用None填充表格中的缺失值使用type()函數(shù)來(lái)獲取某值的類(lèi)型空值(NoneType)數(shù)據(jù)集變量的數(shù)據(jù)類(lèi)型總結(jié)int、float分別表示位的整型和位的浮點(diǎn)型日期數(shù)據(jù)類(lèi)型還有一種特殊的數(shù)據(jù)類(lèi)型日期類(lèi)型這種類(lèi)型數(shù)據(jù)在金融、交通等領(lǐng)域十分常見(jiàn)我們將在日期數(shù)據(jù)的處理這一
15、部分對(duì)這一類(lèi)型的數(shù)據(jù)分析進(jìn)行詳細(xì)講解二元數(shù)學(xué)運(yùn)算符算術(shù)運(yùn)算符Pythonx版本與Pythonx版本(以下簡(jiǎn)稱(chēng)Python和Python)的整除是不同的。函數(shù)int()、float。、str()和bool()分別用于將變量轉(zhuǎn)換成整型、浮點(diǎn)型、字符串和布爾型變量類(lèi)型轉(zhuǎn)換某些變量無(wú)法轉(zhuǎn)換成數(shù)值型變量只有在變量值為時(shí)bool轉(zhuǎn)換的結(jié)果才為False:除了使用type()外我們還可以使用isinstance(沫獲得數(shù)據(jù)類(lèi)型總結(jié)數(shù)據(jù)類(lèi)型、算術(shù)運(yùn)算符、類(lèi)型轉(zhuǎn)換變量、注釋、print函數(shù)列表、元組、字典、集合列表科比投籃數(shù)據(jù)集列表(list)是一個(gè)有序的序列結(jié)構(gòu)序列中的元素可以是不同的數(shù)據(jù)類(lèi)型列表可以進(jìn)行一系
16、列序列操作如索引、切片、加、乘和檢查成員等將列表中的各元素用逗號(hào)分隔開(kāi)并用中括號(hào)將所有元素包裹起來(lái)列表創(chuàng)建使用append(為法添加元素該方法會(huì)在列表末尾位置添加數(shù)據(jù)元素使用remove()方法刪除元素列表對(duì)象的增減實(shí)踐練習(xí)現(xiàn)有一空的列表kobelist用來(lái)存入科比某次投籃的信息請(qǐng)利用append()方法將投籃ID、投籃類(lèi)型#JumpShot#科比所在球隊(duì)#LosAngelesLakers#ftRt手#POR獻(xiàn)順序力口入至歹!J表變量kobelist中remove()方法適用于知道要?jiǎng)h除的值的情況當(dāng)我們不知道具體元素值但是知道元素的索引位置時(shí)我們可以使用del函數(shù)配合列表索引刪除索引位置的元素
17、或者使用pop()方法列表對(duì)象的增減通過(guò)insert()方法在指定的索引位置添加數(shù)據(jù)元素列表對(duì)象的增減實(shí)踐練習(xí)kobelist=,#LosAngelesLakers#,#JumpShot#,#POR現(xiàn)在需要添力口更多關(guān)于科比某次投籃的信息包括投籃位置(按區(qū)域劃分)、比賽日期和對(duì)陣形式(主場(chǎng)或者客場(chǎng))在kobelist插入lsquoLeftSide(L)rsquolsquorsquo和#LALPOR#并刪除數(shù)據(jù)元素在#LosAngelesLakers屹后力口上matchup的值Python語(yǔ)言中所有的索弓I都是從開(kāi)始計(jì)數(shù)的如果列表中有n個(gè)元素那么最后一個(gè)元素的索引是n如果我們想要獲取kobeli
18、st中第個(gè)元素及倒數(shù)第二個(gè)元素列表索引Python內(nèi)置的用于判斷列表長(zhǎng)度的函數(shù)為len()列表長(zhǎng)度切片操作需要提供起始索引位置和最后索引位置然后用冒號(hào):將兩者分開(kāi)如果未輸入步長(zhǎng)則默認(rèn)步長(zhǎng)為切片操作返回一系列從起始索引位置開(kāi)始到最后索引位置結(jié)束的數(shù)據(jù)元素需要注意的是起始索引位置的值包含在返回結(jié)果中而最后索引位置的值不包含在返回結(jié)果中列表切片切片操作需要提供起始索引位置和最后索引位置然后用冒號(hào):將兩者分開(kāi)列表切片逆向切片我們可以省略起始索引位置表示從最開(kāi)始進(jìn)行切片當(dāng)我們將兩個(gè)索引都省略之后我們將按原樣復(fù)制一個(gè)列表如果想要將列表的順序顛倒則可以使用:列表切片列表中的元素也可以是列表這樣可以將列表看成
19、更高維的數(shù)組拆開(kāi)很容易理解嵌套列表實(shí)踐練習(xí)現(xiàn)有科比某次投籃信息的列表kobelistkobelist=#LosAngelesLakers#,#LALPOR#,#JumpShot#,#POR#,#LeftSide(L)#,#請(qǐng)使用切片方法取出索引位置到的元素并存入到列表threefive中并提取比賽日期中的年份存入變量year中提示:讀取年份時(shí)先使用索引方法將kobelist或者threefive最后一個(gè)日期元素值#提取出來(lái)索引位置為然后對(duì)該字符串進(jìn)行切片操作切片為:元組元組(tuple)數(shù)據(jù)結(jié)構(gòu)與列表類(lèi)似其中元素可以有不同的類(lèi)型但是元組中的元素是不可變的即一旦初始化之后就不能夠再做修改(報(bào)錯(cuò):
20、元組對(duì)象不支持賦值)由于元組是不可變的因此元組對(duì)象沒(méi)有append。insert()和del這樣的方法。實(shí)際上tuple的使用可以使得代碼更安全防止錯(cuò)誤賦值導(dǎo)致重要對(duì)象的改變。實(shí)踐練習(xí)現(xiàn)有科比某次投籃信息的元組kobetuplekobetuple=(,#JumpShot#,#LosAngelesLakers#,#POR#)請(qǐng)將kobetuple中的投籃ID由改為投籃類(lèi)型由JumpShot改為#SlamDunkShot#提示:通過(guò)kobetuple方式訪問(wèn)元組中的列表元素中某一個(gè)元素字典字典(dict)在其他語(yǔ)言中被稱(chēng)作哈希映射(hashmap或者相關(guān)數(shù)組(associativearrayS字典
21、是一種大小可變的鍵值對(duì)集其中的鍵(key)和值(value)都是Python對(duì)象字典用在需要高速查找的地方字典的創(chuàng)建使用大括號(hào)包含鍵值對(duì)并用冒號(hào):分隔鍵和值形成鍵:值對(duì)可以看出字典中的數(shù)據(jù)元素是無(wú)序的并不會(huì)按照初始化的順序排列。不同鍵所對(duì)應(yīng)的值可以相同但是字典中的鍵必須是唯一的字典創(chuàng)建利用for循環(huán)和zip()函數(shù)創(chuàng)建字典zip()函數(shù)用于將多個(gè)序列(列表、元組等)中的元素配對(duì)產(chǎn)生一個(gè)如(列表元素,列表元素),(,)的新的元組列表for循環(huán)用于重復(fù)執(zhí)行將值放入鍵中的操作。字典創(chuàng)建實(shí)踐練習(xí)請(qǐng)創(chuàng)建關(guān)于科比投籃信息的字典kobedict鍵為shotid值為shotzoneare戰(zhàn)中歹!J表shoti
22、d與列表shotzoneareafS按照順序一一對(duì)應(yīng)shotid=,shotzonearea=#RightSide(R)#,#LeftSide(L)#,#LeftSideCenter(LC)#字典的元素訪問(wèn)(以及插入、設(shè)置)方式與列表和元組一樣。不同的是列表和元組的索引號(hào)是按照順序自動(dòng)生成而字典的索引號(hào)是鍵字典索引字典中某值的索引還可以通過(guò)get方法如果字典不包含某個(gè)鍵可以返回None或者自己指定的值如果在字典中不存在索引的鍵則系統(tǒng)會(huì)報(bào)錯(cuò)字典索引我們可以通過(guò)in判斷是否存在某個(gè)鍵其語(yǔ)法跟在列表和元組中判斷是否存在某個(gè)值是相同的也可以使用內(nèi)置的haskey()方法字典索引如果不太確定字典中有哪些
23、鍵或者值我們可以使用keys()方法或者values()方法字典索引在有些情況下我們需要取出字典中的鍵值對(duì)用于下一步的分析此時(shí)可以使用items()方法該方法將返回所有鍵值對(duì)并將其保存在一個(gè)元組列表(列表中的元素為元組)中字典索引字典的刪減有三種方法使用del函數(shù)對(duì)單一元素或者整個(gè)字典進(jìn)行刪除使用pop()方法刪除單一元素使用clear()方法清空詞典的所有元素字典元素刪減集合集合(set)是一種無(wú)序集它是一組鍵的集合不存儲(chǔ)值在集合中重復(fù)的鍵是不被允許的。集合可以用于去除重復(fù)值集合也可以進(jìn)行數(shù)學(xué)集合運(yùn)算如并、交、差以及對(duì)稱(chēng)差等。應(yīng)用:去重。把一個(gè)列表變成集合就自動(dòng)去重了關(guān)系測(cè)試。測(cè)試兩組數(shù)據(jù)之
24、前的交集、差集、并集等關(guān)系集合的創(chuàng)建有兩種方式:使用set()函數(shù)或者使用大括號(hào)需要注意的是創(chuàng)建空集合必須使用set()而不是因?yàn)楸硎緞?chuàng)建一個(gè)空的字典集合創(chuàng)建集合支持?jǐn)?shù)學(xué)集合運(yùn)算如并、交、差以及對(duì)稱(chēng)差等集合運(yùn)算集合支持?jǐn)?shù)學(xué)集合運(yùn)算如并、交、差以及對(duì)稱(chēng)差等集合運(yùn)算總結(jié)創(chuàng)建、索引、增減、切片操作列表、元組、字典、集合if選擇結(jié)構(gòu)、for循環(huán)結(jié)構(gòu)、while循環(huán)結(jié)構(gòu)布爾值在這個(gè)世界上文字和認(rèn)知中有真和假的判斷而對(duì)于計(jì)算機(jī)而言布爾值True和False就表示真和假True、False是比較顯式的真和假,而在Python中以下值都會(huì)被看作是假(False):=符號(hào)是判斷兩個(gè)值、變量之間是否相等的操作符相
25、等則返回布爾值True對(duì)于字符型變量也是可以這么操作的:=符號(hào)if選擇結(jié)構(gòu)判斷條件為真(True)的時(shí)候才執(zhí)行冒號(hào)后下面的語(yǔ)句比如現(xiàn)在我們已有一個(gè)精靈寶貝的HP值而我只希望當(dāng)這個(gè)HP值大于的時(shí)候才打印出來(lái)除了if語(yǔ)句外還有ifelse、ifelif語(yǔ)句for循環(huán)結(jié)構(gòu)for循環(huán)是可以依次得到序列循環(huán)中每個(gè)元素并依次處理現(xiàn)在有一個(gè)列表這個(gè)列表存放的是個(gè)小精靈的HP數(shù)值現(xiàn)在希望得到里面每個(gè)數(shù)字都乘以while循環(huán)結(jié)構(gòu)while循環(huán)和for循環(huán)不同的是它的停止條件是個(gè)人自己設(shè)定的:判斷條件和if語(yǔ)句是相同的而什么時(shí)候用while呢?在你確定滿(mǎn)足條件而不確定需要的循環(huán)次數(shù)時(shí)那么while是最好的選擇?,F(xiàn)
26、在有一個(gè)小精靈的HP數(shù)值變量我希望它在大于的時(shí)候逐次變小直到等于為止。組合使用除了單獨(dú)使用上述控制結(jié)構(gòu)之外我們還可以嵌套使用。比如說(shuō)在前面的HP序列我只希望其中的偶數(shù)乘以奇數(shù)不變。python作為一種簡(jiǎn)潔、直接、貼近人類(lèi)自然語(yǔ)言的計(jì)算機(jī)語(yǔ)言它對(duì)于基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)tuple、list、dict內(nèi)嵌了很多十分方便的函數(shù)和操作。在前面章節(jié)介紹的方法之外這章將介紹在listdict內(nèi)部使用for循環(huán)來(lái)構(gòu)造listdict的方法。這些方法將讓我們更加美觀可讀、方便簡(jiǎn)潔地實(shí)現(xiàn)一些功能。列表推導(dǎo)式列表推導(dǎo)式list是使用python過(guò)程中是一個(gè)非常常用的數(shù)據(jù)結(jié)構(gòu)無(wú)論是作為最終數(shù)據(jù)的保存結(jié)果還是中間數(shù)據(jù)結(jié)果的臨
27、時(shí)存儲(chǔ)都能提供很方便的功能使用列表推導(dǎo)式可以讓循環(huán)在列表內(nèi)完成。以下為例子對(duì)列表中每個(gè)數(shù)值逐個(gè)減去均值含義解析:關(guān)鍵詞for循環(huán)后跟的是循環(huán)語(yǔ)法這部分不變而在for循環(huán)真正表達(dá)式部分則在列表推導(dǎo)式中移前運(yùn)算結(jié)果直接添加入列表中。字典也可以用推導(dǎo)式但沒(méi)有列表推導(dǎo)式那么常用。字典推導(dǎo)式多用于需要元素有一一對(duì)應(yīng)關(guān)系時(shí)比如前面談到當(dāng)變量是字符型時(shí)需要將字符轉(zhuǎn)換為一一對(duì)應(yīng)的數(shù)值型。字典推導(dǎo)式UnitedStatesEnergy,Census,andGD啜據(jù)集中Region變量是字符型如現(xiàn)需要對(duì)其進(jìn)行數(shù)值轉(zhuǎn)換。enumerate是Python的一個(gè)常用內(nèi)置函數(shù)它用在列表中時(shí)不但會(huì)產(chǎn)生列表內(nèi)的元素并且會(huì)從開(kāi)
28、始按順序生成序號(hào)??偨Y(jié)for循環(huán)、while循環(huán)布爾值、if條件判斷列表推導(dǎo)式、字典推導(dǎo)式數(shù)據(jù)的讀取對(duì)文件操作之前需要用open()函數(shù)打開(kāi)文件mode參數(shù)中的r指讀出w指寫(xiě)入打開(kāi)之后將返回一個(gè)文件對(duì)象(fileobject)后續(xù)對(duì)文件內(nèi)數(shù)據(jù)的操作都是基于這個(gè)文件對(duì)象的方法(method)來(lái)實(shí)現(xiàn)的數(shù)據(jù)的讀取對(duì)文件數(shù)據(jù)的讀取是用的read()方法read()方法將返回文件中的所有內(nèi)容用print打印所有內(nèi)容會(huì)顯示Hello,world!記得每次用完文件后都要關(guān)閉文件fclose()。否則文件就會(huì)一直被Python占用不能被其他進(jìn)程使用數(shù)據(jù)的讀取也可以使用withopen()asf:在操作后自動(dòng)關(guān)
29、閉文件數(shù)據(jù)的讀取在read()中加入數(shù)字可指定讀取的字符數(shù)數(shù)據(jù)的寫(xiě)入寫(xiě)入的操作和讀取是類(lèi)似的不過(guò)用的是write()函數(shù)同時(shí)需要將打開(kāi)文件的mode參數(shù)設(shè)置為w文本文件的操作常見(jiàn)的數(shù)據(jù)文件包括txt格式或者csv(逗號(hào)分隔值文件格式)格式文文本文件的讀取通過(guò)open()函數(shù)打開(kāi)文件返回文件對(duì)象對(duì)文件對(duì)象進(jìn)行讀取操作除了前面介紹的read()之外還有兩種讀取數(shù)據(jù)的方法:readline()是每次讀入一條數(shù)據(jù)的方式readlines()是一次性讀入文件所有數(shù)據(jù)文本文件的讀取readlines()讀取后得到的是每行數(shù)據(jù)組成的列表但是一行樣本數(shù)據(jù)全部存儲(chǔ)為一個(gè)字符串并且數(shù)據(jù)讀入后并沒(méi)有將換行符去掉(w
30、indows系統(tǒng)的換行符是rnlinux系統(tǒng)的換行符號(hào)是n)在讀入數(shù)據(jù)之后用for循環(huán)對(duì)每一個(gè)元素去除換行符并將每一個(gè)變量值用字符串處理方法split()分隔開(kāi)來(lái)文本文件的讀取strip()本身是一個(gè)對(duì)字符串指定字符去除的方法但括號(hào)里參數(shù)為空的時(shí)候就會(huì)去除rnt文本文件的寫(xiě)入設(shè)置參數(shù)mode=w。write()、writelines()是兩個(gè)對(duì)文件對(duì)象的寫(xiě)入數(shù)據(jù)的方法。write()是逐次寫(xiě)入writelines()可對(duì)一個(gè)列表里的所有數(shù)據(jù)一次性寫(xiě)入文件中如果有換行需要?jiǎng)t要在每條數(shù)據(jù)后增加換行符同時(shí)用字符串join()的方法將每個(gè)變量數(shù)據(jù)聯(lián)合成一個(gè)字符串并增加間隔符t逗號(hào)分隔值文件的操作csv
31、文件用逗號(hào),作為分隔符逗號(hào)分隔值文件的讀取利用Python內(nèi)置的csv模塊讀取數(shù)據(jù)逗號(hào)分隔值文件的寫(xiě)入引入csv模塊open()打開(kāi)文彳使用csvwriter()作為寫(xiě)入器writerow()方法逐行寫(xiě)入總結(jié)open()、write()、readlines()、strip()、join()文本文件讀寫(xiě)操作、逗號(hào)分隔值文件讀寫(xiě)操作csv模塊、csvreader(>csvwriter()實(shí)踐案例:白葡萄酒品質(zhì)探索錯(cuò)誤類(lèi)型語(yǔ)法錯(cuò)誤異常捕獲異常assert、with語(yǔ)句自助控制異常爬蟲(chóng)HTTP異常處理錯(cuò)誤類(lèi)型語(yǔ)法錯(cuò)誤(Syntaxerrors)代碼編譯時(shí)白錯(cuò)誤不符合Python語(yǔ)言規(guī)則的代碼會(huì)停
32、止編譯并返回錯(cuò)誤信息異常(Exceptions)相較于語(yǔ)法錯(cuò)誤異常比較難發(fā)現(xiàn)因?yàn)樗辉诖a運(yùn)行時(shí)才會(huì)發(fā)生如類(lèi)型錯(cuò)誤、數(shù)值錯(cuò)誤、索引錯(cuò)誤和屬性錯(cuò)誤等。語(yǔ)法錯(cuò)誤包含在異常基類(lèi)中錯(cuò)誤類(lèi)型錯(cuò)誤類(lèi)型Python與Java異常類(lèi)層級(jí)區(qū)別Java異常類(lèi)層級(jí)Python異常類(lèi)層級(jí)語(yǔ)法錯(cuò)誤常見(jiàn)的語(yǔ)法錯(cuò)誤(SyntaxError)包括:缺少起始符號(hào)或結(jié)尾符號(hào)(括號(hào)、引號(hào)等)縮進(jìn)錯(cuò)誤關(guān)鍵詞拼寫(xiě)錯(cuò)誤語(yǔ)法錯(cuò)誤語(yǔ)法錯(cuò)誤常見(jiàn)的語(yǔ)法錯(cuò)誤(SyntaxError)包括:缺少起始符號(hào)或結(jié)尾符號(hào)(括號(hào)、引號(hào)等)縮進(jìn)錯(cuò)誤關(guān)鍵詞拼寫(xiě)錯(cuò)誤語(yǔ)法錯(cuò)誤語(yǔ)法錯(cuò)誤常見(jiàn)的語(yǔ)法錯(cuò)誤(SyntaxError)包括:缺少起始符號(hào)或結(jié)尾符號(hào)(括號(hào)、引號(hào)等)
33、縮進(jìn)錯(cuò)誤關(guān)鍵詞拼寫(xiě)錯(cuò)誤語(yǔ)法錯(cuò)誤修改語(yǔ)法錯(cuò)誤實(shí)戰(zhàn)演練http:hackdatacnlearncourselectur屏常通常由以下問(wèn)題弓I起:在定義函數(shù)之前就引用該函數(shù)調(diào)用不屬于某個(gè)對(duì)象的方法或者屬性試圖將某個(gè)值轉(zhuǎn)換為不恰當(dāng)?shù)臄?shù)據(jù)類(lèi)型異常除零錯(cuò)誤(ZeroDivisionError):除數(shù)為名稱(chēng)錯(cuò)誤(NameError):變量使用前未進(jìn)行申明或者初始化聚類(lèi)分析六種典型的異常類(lèi)型錯(cuò)誤(TypeError):某些函數(shù)或者方法只適用于特定的數(shù)據(jù)類(lèi)型如果對(duì)數(shù)據(jù)類(lèi)型的操作不當(dāng)就會(huì)產(chǎn)生類(lèi)型錯(cuò)誤數(shù)值錯(cuò)誤(ValueError):在輸入類(lèi)型正確的情況下具體輸入值錯(cuò)誤聚類(lèi)分析六種典型的異常索引錯(cuò)誤(IndexEr
34、ror):超出序列長(zhǎng)度的索引操作屬性錯(cuò)誤(AttributeError):方法或者屬性不適用該對(duì)象聚類(lèi)分析六種典型的異常異常層級(jí)檢查、修改語(yǔ)法錯(cuò)誤和異常實(shí)戰(zhàn)演練http:hackdatacnlearncourselecture代碼編寫(xiě)環(huán)境自帶的高亮顯示便于發(fā)現(xiàn)常規(guī)語(yǔ)法錯(cuò)誤但難于發(fā)現(xiàn)異常JupyterNotebookPyCharm捕獲異常程序要遇到異常的時(shí)候往往是直接中斷跳出執(zhí)行。但是有些時(shí)候我們需要在遇到異常的時(shí)候另外處理而不是直接停止。解決方法:tryexcept語(yǔ)句tryexceptelse語(yǔ)句finally子句捕獲異常捕獲異常tryexcept語(yǔ)句try關(guān)鍵詞內(nèi)執(zhí)行的是正常代碼當(dāng)這部分代
35、碼出錯(cuò)的時(shí)候會(huì)跳過(guò)錯(cuò)誤代碼后進(jìn)入except關(guān)鍵詞內(nèi)部執(zhí)行此部分的代碼tryexceptelse語(yǔ)句當(dāng)在tryexcept后加入的else指當(dāng)程序沒(méi)發(fā)生錯(cuò)誤時(shí)執(zhí)行的部分tryexceptelse工作原理是執(zhí)行第一個(gè)匹配該異常的except子句開(kāi)始執(zhí)行try部分try部分執(zhí)行異常否執(zhí)行else部分語(yǔ)句控制流通過(guò)整個(gè)try語(yǔ)句finally子句finally語(yǔ)句是指無(wú)論程序運(yùn)行對(duì)或錯(cuò)都會(huì)執(zhí)行的部分assert關(guān)鍵字當(dāng)Expression部分為T(mén)rue時(shí)則正確執(zhí)行程序繼續(xù)下去當(dāng)判斷為False時(shí)則拋出后面的e錯(cuò)誤提示。在大型的項(xiàng)目中assert常被用來(lái)作為防御性編程assertwith語(yǔ)句with語(yǔ)
36、句有時(shí)候打開(kāi)了文件卻忘記關(guān)閉或者是在讀取文件過(guò)程出錯(cuò)那么with語(yǔ)句能夠很好解決關(guān)于文件讀取、寫(xiě)入的問(wèn)題上面的語(yǔ)句等價(jià)于兩種特殊的簡(jiǎn)便方法自主控制異常除了在代碼運(yùn)行出錯(cuò)時(shí)觸發(fā)錯(cuò)誤我們還可以主動(dòng)控制拋出異常通過(guò)使用關(guān)鍵詞rais(e類(lèi)似Java語(yǔ)言中的throw)自主控制異常:拋出異常自主控制異常自定義異常的原因Python提供的內(nèi)建異常不夠用可以預(yù)估某個(gè)錯(cuò)誤的產(chǎn)生自主控制異常:用戶(hù)自定義異常定義異常類(lèi)繼承于Exception類(lèi)由它開(kāi)始擴(kuò)展自主定義的NotIntError異常類(lèi)捕獲非整型錯(cuò)誤ASCII編碼集在編寫(xiě)API時(shí)定義一個(gè)RootException根異常其他異常都繼承于根異常好處:API代
37、碼層次更清晰好處:API與調(diào)用程序代碼隔離如:需要做一個(gè)鏈接數(shù)據(jù)庫(kù)服務(wù)的模塊提供一個(gè)connect函數(shù)用于鏈接鏈接可能出現(xiàn)情況:Socket連接超時(shí)Socket拒絕連接聚類(lèi)分析以定義API異常為例這樣精確定義多個(gè)異常使得代碼層次清晰增強(qiáng)了可讀性在代碼的最后還捕獲了Error以及Exception兩個(gè)異常這兩個(gè)操作分別對(duì)應(yīng)于可拓展性與健壯性的目的聚類(lèi)分析調(diào)用API時(shí)異常捕獲的技巧編寫(xiě)工具類(lèi)函數(shù)時(shí)函數(shù)處理流程會(huì)產(chǎn)生很多狀態(tài)用返回值代表函數(shù)處理狀態(tài)調(diào)用者需要去理解每個(gè)狀態(tài)碼的意義存在學(xué)習(xí)成本聚類(lèi)分析使用異常代替返回狀態(tài)碼使用異常的方式增強(qiáng)代碼的魯棒性而不必影響程序的主邏輯專(zhuān)注程序主邏輯保持代碼的簡(jiǎn)潔
38、清晰異常判斷是就地實(shí)時(shí)的與代碼運(yùn)行是實(shí)時(shí)的一些低調(diào)用級(jí)別的代碼塊沒(méi)有判斷和處理其上級(jí)調(diào)用模塊的權(quán)限或者根本無(wú)法判斷只能由其上級(jí)調(diào)用模塊來(lái)決定下一步怎么做這時(shí)當(dāng)前模塊可以不用處理將錯(cuò)誤拋出給調(diào)用者利用拋出異常并處理的優(yōu)點(diǎn)異常處理應(yīng)該與正常流程控制分離異常處理與流程控制異常處理搞亂了代碼邏輯將異常代碼塊抽離到另外的函數(shù)中網(wǎng)絡(luò)爬蟲(chóng)框架爬蟲(chóng)HTTP異常處理獲取要訪問(wèn)的URL的IP地址(右圖中標(biāo)號(hào)為、)向Webserver請(qǐng)求資源(右圖中標(biāo)號(hào)為)Webserver收到請(qǐng)求將響應(yīng)返回給客戶(hù)端(右圖中標(biāo)號(hào)為)聚類(lèi)分析HTTP請(qǐng)求過(guò)程URLError:不能夠處理一個(gè)response網(wǎng)絡(luò)無(wú)連接即本機(jī)無(wú)法上網(wǎng)連接
39、不到特定的服務(wù)器服務(wù)器不存在聚類(lèi)分析HTTP請(qǐng)求過(guò)程的兩種常見(jiàn)異常HTTPError:URLError的子類(lèi)在特定的HTTPURLs中產(chǎn)生每一個(gè)HTTP響應(yīng)對(duì)象response包含一個(gè)數(shù)字狀態(tài)碼urllib會(huì)幫助處理重定向問(wèn)題不能處理則產(chǎn)生HTTPError狀態(tài)碼:頁(yè)面無(wú)法找到請(qǐng)求禁止帶驗(yàn)證請(qǐng)求捕獲到HTTPError輸出code不再處理URLError異常。如果發(fā)生的不是HTTPError則去捕獲URLError異常輸出錯(cuò)誤原因聚類(lèi)分析異常處理技巧異常處理技巧利用hasattr方法提前對(duì)異常的屬性進(jìn)行判斷以免出現(xiàn)屬性輸出報(bào)錯(cuò)的現(xiàn)象只處理你知道的異常避免捕獲所有異常然后吞掉它們拋出的異常應(yīng)該說(shuō)
40、明原因有時(shí)候你知道異常類(lèi)型也猜不出所以然的不要使用異常來(lái)控制流程那樣你的程序會(huì)無(wú)比難懂和難維護(hù)如果有需要切記使用finally來(lái)釋放資源一些經(jīng)驗(yàn)總結(jié)捕獲異常語(yǔ)法錯(cuò)誤和異常拋出異常自定義異常類(lèi)assertwith語(yǔ)句爬蟲(chóng)HTTP異常處理URLErrorHTTPErrorcodereason編碼和解碼編碼集解決亂碼編碼是為了讓機(jī)器讀懂語(yǔ)言。即輸入的是字符中文那么編碼就是將中文編碼為二進(jìn)制格式讓機(jī)器讀懂在Python中機(jī)器其實(shí)是不認(rèn)識(shí)unicode的而是接收的str即使輸入的數(shù)據(jù)是unicode的而在Python內(nèi)部都會(huì)將unicode自動(dòng)轉(zhuǎn)為str編碼和解碼編碼和解碼str通過(guò)解碼函數(shù)decode
41、()轉(zhuǎn)換為unicodeunicode通過(guò)編碼函數(shù)encode()轉(zhuǎn)換為strhttp:hackdatacnlearncourselecture電腦只認(rèn)識(shí)二進(jìn)制數(shù)值從一開(kāi)始人們想到的方法就是賦予每一個(gè)字符唯一的一串編碼表示。這是一個(gè)ASCII編碼集中對(duì)字符A的編碼這是一個(gè)八位數(shù)字編碼集在年出現(xiàn)了ASCII標(biāo)準(zhǔn)這主要是基于拉丁字母的一套電腦編碼系統(tǒng)ASCII標(biāo)準(zhǔn)是每個(gè)英文字母有一一對(duì)應(yīng)獨(dú)立的位數(shù)字串比如說(shuō)字母AASCII中對(duì)應(yīng)的二進(jìn)制值為。這樣我在輸入A的時(shí)候編譯器會(huì)借助編碼集將A轉(zhuǎn)換為聚類(lèi)分析ASCII編碼集ASCII總共可以存儲(chǔ)個(gè)字符年制定這套標(biāo)準(zhǔn)的人只考慮英語(yǔ)世界的使用者。那么個(gè)編碼集對(duì)于
42、使用英語(yǔ)和拉丁語(yǔ)系是夠用的但是對(duì)于中文、日文、韓文就完全不夠用了ASCII聚類(lèi)分析ASCII編碼集聚類(lèi)分析ASCII聚類(lèi)分析ASCII編碼集聚類(lèi)分析GB編碼集是由中國(guó)國(guó)家標(biāo)準(zhǔn)總局發(fā)布年月日實(shí)施的一套收錄了個(gè)漢字、拉丁字母、希臘字母、日文平假名及片假名字母、俄語(yǔ)西里爾字母在內(nèi)的個(gè)字符的標(biāo)準(zhǔn)。但是這套標(biāo)準(zhǔn)沒(méi)有包含部分罕見(jiàn)字和繁體字于是后面出現(xiàn)GBK、GB在GB的基礎(chǔ)上進(jìn)行擴(kuò)充解決。GBK聚類(lèi)分析Unicode是標(biāo)準(zhǔn)統(tǒng)一所有語(yǔ)言文字的標(biāo)準(zhǔn)編碼集它目前已經(jīng)收錄超過(guò)十萬(wàn)個(gè)字符Unicode包括兩個(gè)方面編碼方式(一個(gè)字符對(duì)應(yīng)編碼集中的二進(jìn)制數(shù)值)實(shí)現(xiàn)方式(傳輸、存儲(chǔ)):、UnicodePythonx版本有
43、兩種用于字符處理的數(shù)據(jù)格式:str和unicodestr字節(jié)流是以?xún)蓚€(gè)單引號(hào)Isquorsquo或兩個(gè)單引號(hào)來(lái)賦值的訪問(wèn)一個(gè)元素就是一個(gè)字節(jié)Python字符串Python字符串unicode字符串是在lsquorsquo或前加u來(lái)賦值的同時(shí)訪問(wèn)一個(gè)元素則是一個(gè)字符http:hackdatacnlearncourselecturePython嫩本中的字符串Pythonx版本有兩種表示字符串的類(lèi)型:bytes和strstr類(lèi)中包含了unicode字符非unicode編碼如、GBK被定義成了bytes使用encode(那decode()函數(shù)進(jìn)行相互轉(zhuǎn)換如果出現(xiàn)亂碼的狀況那肯定是編碼轉(zhuǎn)碼出現(xiàn)了問(wèn)題這不
44、外乎有以下幾個(gè)關(guān)鍵點(diǎn):Python解釋器設(shè)置的默認(rèn)編碼源文件設(shè)置的編碼終端編碼解決亂碼Python解釋器的編碼指Python內(nèi)部認(rèn)為的字符str的編碼即一個(gè)str變量要轉(zhuǎn)換為unicode時(shí)Python解釋器默認(rèn)的轉(zhuǎn)換方式Python的默認(rèn)轉(zhuǎn)換方式是ASCIIsysgetdefaultencoding()函數(shù)可以獲得默認(rèn)編碼信息聚類(lèi)分析解釋器編碼在ASCII默認(rèn)編碼條件下對(duì)中文字符編碼會(huì)出現(xiàn)錯(cuò)誤因?yàn)锳SCII不能對(duì)中文進(jìn)行編碼聚類(lèi)分析解釋器編碼通過(guò)前面介紹的encode()®數(shù)和decode()®數(shù)可以設(shè)置參數(shù)指定編碼方式對(duì)中文字符進(jìn)行GBK編碼和編碼聚類(lèi)分析解釋器編碼中文
45、字符str的解碼問(wèn)題聚類(lèi)分析解釋器編碼想要得到GBK編碼的str:先對(duì)其進(jìn)行解碼再對(duì)其進(jìn)行GBK編碼聚類(lèi)分析解釋器編碼http:hackdatacnlearncourselecture源文件編碼也就是代碼文件的編碼文件不僅可以保存代碼而且還可以對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)文件保存數(shù)據(jù)也是有編碼的如果源文件中有中文那么直接按照默認(rèn)的編碼方式運(yùn)行Python文件的時(shí)候會(huì)出現(xiàn)編碼錯(cuò)誤若想要在源碼中寫(xiě)非ASCII文字可以在源碼文件開(kāi)頭加入一行:或者聚類(lèi)分析源文件編碼這個(gè)指使用終端顯示的時(shí)候會(huì)出現(xiàn)的問(wèn)題windows中文版終端用的是CP通常被等同認(rèn)為是GBK而linux系統(tǒng)終端用的是所以若不想在終端打印顯示出來(lái)的字符
46、出現(xiàn)亂碼則在打印前需要將打印的內(nèi)容按照終端相同的編碼方式進(jìn)行轉(zhuǎn)換聚類(lèi)分析終端編碼在數(shù)據(jù)分析中出現(xiàn)編碼問(wèn)題最多的還是在文件讀寫(xiě)這個(gè)階段使用read(賣(mài)取的文件內(nèi)容得到的是str格式的聚類(lèi)分析文件讀寫(xiě)編碼用解碼再用GBK編碼打印出來(lái)的是亂碼這就是編碼不同導(dǎo)致的亂碼聚類(lèi)分析文件讀寫(xiě)編碼用write()方法寫(xiě)入的時(shí)候也需要是str格式。也就是說(shuō)如果寫(xiě)入的數(shù)據(jù)是unicode時(shí)將會(huì)出錯(cuò)聚類(lèi)分析文件讀寫(xiě)編碼解決辦法:先將unicode格式編碼為str再寫(xiě)入聚類(lèi)分析文件讀寫(xiě)編碼如果你發(fā)現(xiàn)常用的gbk、編碼解碼都沒(méi)辦法解決亂碼問(wèn)題那么有可能該文本使用了這兩種之外的編碼方式chardet是一個(gè)Python包提供
47、測(cè)試文本的編碼方法最后返回的是對(duì)編碼方法的一個(gè)估計(jì)聚類(lèi)分析編碼檢測(cè)工具chardet總結(jié)ASCIIGBKUnicode編碼和解碼亂碼問(wèn)題:Python解釋器設(shè)置的默認(rèn)編碼、源文件的編碼、終端編碼Pythonx和Pythonx版本的字符串編碼檢測(cè)工具chardet函數(shù)的語(yǔ)法規(guī)則參數(shù)設(shè)定lambda函數(shù)實(shí)例:平方函數(shù)輸入變量x返回其平方值x函數(shù)的語(yǔ)法規(guī)則函數(shù)的語(yǔ)法規(guī)則幾種參數(shù)設(shè)定方法順序傳入關(guān)鍵詞默認(rèn)參數(shù)不定長(zhǎng)參數(shù)參數(shù)設(shè)定按照輸入?yún)?shù)列表的順序傳入x=y=z=聚類(lèi)分析順序傳入直接在參數(shù)列表里設(shè)定關(guān)鍵詞確定聚類(lèi)分析關(guān)鍵詞可以將位置和關(guān)鍵詞的方法混合使用如果傳入的第一個(gè)參數(shù)是用關(guān)鍵詞傳入的那么后面每個(gè)
48、參數(shù)都需要是關(guān)鍵詞傳入否則會(huì)出現(xiàn)語(yǔ)法錯(cuò)誤聚類(lèi)分析關(guān)鍵詞輸入的參數(shù)可以是事先設(shè)定好賦值也就是默認(rèn)值。在調(diào)動(dòng)函數(shù)的時(shí)候可以不輸入?yún)?shù)函數(shù)內(nèi)部會(huì)直接調(diào)用默認(rèn)參數(shù)值。例如默認(rèn)z=聚類(lèi)分析默認(rèn)參數(shù)默認(rèn)參數(shù)的默認(rèn)值是可以修改的將上面的z值傳入設(shè)置為需要注意的是默認(rèn)參數(shù)必須放到參數(shù)列表的末位聚類(lèi)分析默認(rèn)參數(shù)這是為了解決不確定需要傳入?yún)?shù)個(gè)數(shù)的情況聚類(lèi)分析不定長(zhǎng)參數(shù)*args*args如果輸入是一個(gè)list那么可以用*list的方式傳入聚類(lèi)分析不定長(zhǎng)參數(shù)*args函數(shù)定義時(shí)*可以將按位置傳遞進(jìn)來(lái)的參數(shù)打包成元組(tuple)類(lèi)型函數(shù)調(diào)用時(shí)*可以解壓待傳遞到函數(shù)中的元組、列表、集合、字符串等類(lèi)型并按位置傳遞到函數(shù)入口參數(shù)中聚類(lèi)分析不定長(zhǎng)參數(shù)*args*args*args傳入的時(shí)候如果調(diào)用函數(shù)使用關(guān)鍵詞傳入?yún)?shù)時(shí)會(huì)出錯(cuò)不定長(zhǎng)參數(shù)聚類(lèi)分析不定長(zhǎng)參數(shù)*args*kwargs*kwargs的出現(xiàn)便是解決需要傳入特定關(guān)鍵詞參數(shù)的情況聚類(lèi)分析不定長(zhǎng)參數(shù)*kwargs聚類(lèi)分析常見(jiàn)包中的不定參數(shù)scikitlearn中的測(cè)試集訓(xùn)練集劃分函數(shù)deftraintestsplit(*array,*options)函數(shù)定義時(shí)*可以將按位置傳遞進(jìn)來(lái)的參數(shù)打
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 交通運(yùn)輸規(guī)劃與城市發(fā)展
- 安全生產(chǎn)標(biāo)準(zhǔn)化培訓(xùn)課件-機(jī)電
- Module3 Unit 2 Rules(說(shuō)課稿)-2023-2024學(xué)年牛津上海版(試用本)英語(yǔ)二年級(jí)下冊(cè)
- 2025年度城市道路面包磚鋪設(shè)工程合同4篇
- 10竹節(jié)人 說(shuō)課稿-2024-2025學(xué)年語(yǔ)文六年級(jí)上冊(cè)統(tǒng)編版
- 二零二五百貨集團(tuán)電商渠道合作與推廣合同3篇
- 2025年度旅行社研學(xué)旅行服務(wù)合同7篇
- 5 魯濱遜漂流記(節(jié)選)(說(shuō)課稿)-2023-2024學(xué)年語(yǔ)文六年級(jí)下冊(cè)統(tǒng)編版
- 12 我們小點(diǎn)兒聲 第2課時(shí) 說(shuō)課稿-2023-2024學(xué)年道德與法治二年級(jí)上冊(cè)統(tǒng)編版
- 6 爭(zhēng)做未來(lái)科學(xué)家 說(shuō)課稿-2024-2025學(xué)年道德與法治三年級(jí)上冊(cè)統(tǒng)編版
- 2024年縣鄉(xiāng)教師選調(diào)進(jìn)城考試《教育學(xué)》題庫(kù)及完整答案(考點(diǎn)梳理)
- 車(chē)借給別人免責(zé)協(xié)議書(shū)
- 河北省興隆縣盛嘉恒信礦業(yè)有限公司李杖子硅石礦礦山地質(zhì)環(huán)境保護(hù)與治理恢復(fù)方案
- 第七章力與運(yùn)動(dòng)第八章壓強(qiáng)第九章浮力綜合檢測(cè)題(一)-2023-2024學(xué)年滬科版物理八年級(jí)下學(xué)期
- 微視頻基地策劃方案
- 光伏項(xiàng)目質(zhì)量評(píng)估報(bào)告
- 八年級(jí)一本·現(xiàn)代文閱讀訓(xùn)練100篇
- 2023年電池系統(tǒng)測(cè)試工程師年度總結(jié)及下一年計(jì)劃
- 應(yīng)急預(yù)案評(píng)分標(biāo)準(zhǔn)表
- 《既有建筑結(jié)構(gòu)安全監(jiān)測(cè)技術(shù)標(biāo)準(zhǔn)》(征求意見(jiàn)稿)及條文說(shuō)明
評(píng)論
0/150
提交評(píng)論