《大數(shù)據(jù)分析:基于Python》 課件 第1章 語法基礎(chǔ)_第1頁
《大數(shù)據(jù)分析:基于Python》 課件 第1章 語法基礎(chǔ)_第2頁
《大數(shù)據(jù)分析:基于Python》 課件 第1章 語法基礎(chǔ)_第3頁
《大數(shù)據(jù)分析:基于Python》 課件 第1章 語法基礎(chǔ)_第4頁
《大數(shù)據(jù)分析:基于Python》 課件 第1章 語法基礎(chǔ)_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

大數(shù)據(jù)分析:基于Python

第1章Python語法基礎(chǔ)余本國本章知識(shí)點(diǎn)導(dǎo)圖吉多·范羅蘇姆“Python之父”指的是Python的創(chuàng)始人吉多·范羅蘇姆(GuidovanRossum)。吉多·范羅蘇姆1956年出生于荷蘭,并于1982年獲得阿姆斯特丹大學(xué)數(shù)學(xué)和計(jì)算機(jī)科學(xué)碩士學(xué)位。此后,他先后在多個(gè)研究機(jī)構(gòu)工作,包括荷蘭阿姆斯特丹的國家數(shù)學(xué)與計(jì)算機(jī)科學(xué)研究中心(CWI)等。他以創(chuàng)造Python程序設(shè)計(jì)語言而聞名于世,常被人們稱為“Python之父”。2020年,吉多·范羅蘇姆加入微軟公司。由于Python簡潔易懂,擴(kuò)展性強(qiáng),受到很多程序員的追捧,他們編寫了很多類庫,使得它的應(yīng)用越來越廣泛,越來越方便,吸引了很多領(lǐng)域內(nèi)的人在使用。尤其在近幾年,谷歌等大型互聯(lián)網(wǎng)公司使用Python語言來編寫Al程序,在機(jī)器學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)、模式識(shí)別、人臉識(shí)別、定理證明、大數(shù)據(jù)等各個(gè)領(lǐng)域,都產(chǎn)生了眾多可以由Python直接引用的功能模塊。當(dāng)前較流行的深度學(xué)習(xí)框架大多是用Python編寫的,如震驚了國內(nèi)的AlphaGo,其大部分程序就是Python編寫的。隨著人工智能的火爆,Python幾乎被推上了神壇,獲得了“人工智能標(biāo)配語言"的美譽(yù)。Python的發(fā)展經(jīng)歷了py2.X和py3.X兩個(gè)大的版本,穩(wěn)定的py2.7版本已于2020年正式停止維護(hù),僅保留了商業(yè)維護(hù),這也意味著Python2完全成為了歷史。一般的軟件系統(tǒng)都是后者兼容前者,但是Python在2.7和3.X版本之間卻沒有做到這一點(diǎn),甚至相差甚遠(yuǎn)。當(dāng)前py3.X已經(jīng)更新到了py3.12,為了代碼的穩(wěn)定性,本書采用的是穩(wěn)定版本py3.9及其以上版本。Python除了極少的事情不能做之外,基本上屬于全能,如我們常見的系統(tǒng)運(yùn)維、數(shù)據(jù)庫、可視化、數(shù)據(jù)分析、機(jī)器學(xué)習(xí)、爬蟲、網(wǎng)頁開發(fā)、圖形處理、科學(xué)計(jì)算、人工智能等等,已經(jīng)深入到所有的科學(xué)領(lǐng)域。Python語言特點(diǎn)“人生苦短,我用Python!”,這就表明Python語言的簡單易學(xué),學(xué)而即用的特點(diǎn)。1、簡單易學(xué)Python的設(shè)計(jì)哲學(xué)是優(yōu)雅、明確、簡單。語法簡單,注重解決實(shí)際問題,而不用關(guān)注語言的本身。2、免費(fèi)開源開放源碼。使用者可以自由地發(fā)布這款軟件的拷貝、不像其他軟件有版權(quán)使用限制。3、高級(jí)解釋性語言Python語言是一門高級(jí)編程語言,程序員在開發(fā)時(shí)無需考慮底層細(xì)節(jié),易于移植。4、可移植性Python語言可在Linux、Windows、Macintosh甚至Android等平臺(tái)上運(yùn)行。5、面向?qū)ο驪ython既支持像C語言一樣面向過程的編程,也支持如C++、JAVA語言一樣面向?qū)ο蟮木幊獭?、可擴(kuò)展性Python提供豐富的API、模塊和工具,以便程序員輕松使用C、C++語言來編寫擴(kuò)充模塊。7、可嵌入性Python程序可以嵌入到C/C++/Matlab程序,從而向用戶提供腳本。8、豐富的庫Python標(biāo)準(zhǔn)庫龐大。它可以幫助處理各種工作,有許多其他高質(zhì)量的第三方庫。9、規(guī)范的代碼Python采用強(qiáng)制縮進(jìn)的方式使得代碼具有較好的可讀性。Anaconda安裝與使用

原生編輯器Windows用戶可以訪問https://P/download,從網(wǎng)站上下載最新的版本,大小約為27MB左右。由于原生的編輯器在使用第三方庫時(shí),需要設(shè)置較多的運(yùn)行環(huán)境,費(fèi)時(shí)耗力,尤其對(duì)計(jì)算機(jī)系統(tǒng)設(shè)置不熟悉的新手來說,無所適從。于是一些“自動(dòng)化”的編輯平臺(tái)應(yīng)運(yùn)而生,Anaconda就是這樣一款編輯軟件。該軟件預(yù)裝了一些常用的庫,安裝Anaconda后即可使用,真正體現(xiàn)了“注重解決實(shí)際問題,而非語言本身”,只是體型龐大了些,約700M上下。做數(shù)據(jù)分析大多是基于Anaconda下的Spyder或Jupyternotebook編輯器,畢竟Spyder和Jupyternotebook已成為數(shù)據(jù)分析的標(biāo)準(zhǔn)環(huán)境。Anaconda是Python的一個(gè)開源發(fā)行版本,主要面向科學(xué)計(jì)算。Anaconda中增加了condainstall命令來安裝第三方庫,方法跟pip一樣。當(dāng)然在Anaconda的Prompt下也可以使用pipinstall安裝第三方工具包。Anaconda官方下載網(wǎng)址為:/download。Anaconda發(fā)展更新較快,下載時(shí)請(qǐng)拉到頁面下方,按照自己機(jī)器配置情況,下載適配的版本,下載界面如圖1-1所示。若需要下載往期版本可直接到/archive/選擇下載(本課程選擇的是Anaconda3-2023.09-0-Windows-x86_64.exe)。下載后直接雙擊安裝,可自選安裝位置。但請(qǐng)注意,安裝路徑最好不要有中文字符,防止運(yùn)行代碼時(shí)出現(xiàn)一些意想不到的錯(cuò)誤。安裝完成后,在開始菜單里可以看到如下圖所示的目錄。Python有很多成熟的編輯器,至于編輯器的好歹優(yōu)劣,編者認(rèn)為適合自己的才是最好的。本書將采用Anaconda下的Spyder和JupyterNotebook,偶爾會(huì)使用python原生編輯器。一般情況下,個(gè)人寫代碼時(shí)用Spyder比較方便,在進(jìn)行教學(xué)或者演講交流時(shí),用Jupy或許更勝一籌,畢竟它可以在演講過程中進(jìn)行代碼交互,最后還可以將演講過程導(dǎo)出保存為html或者pdf格式。安裝第三方庫Anaconda安裝第三方包很簡單,只需要在開始菜單Anaconda下選定“AnacondaPrompt”單擊即可,在彈出的窗口命令行中輸入“condainstallscrapy”即可安裝scrapy。但有些時(shí)候用condainstall安裝一些第三方庫時(shí),卻被提示PackageNotFoundError,此時(shí)可改為pipinstall安裝試試。在安裝第三方庫或者模塊時(shí),很可能因?yàn)閹燧^大而下載速度又很慢,導(dǎo)致安裝不成功,此時(shí)可引用鏡像來安裝,常用的鏡像有清華鏡像和豆瓣鏡像,具體方法如下。清華鏡像網(wǎng)址:/simple豆瓣鏡像網(wǎng)址:/simple如使用清華鏡像安裝tensorflow,輸入如下命令行。pipinstall-i/simpletensorflow有些包和庫還需要自行下載源碼安裝包后才能安裝,不過已有“好事者”收集好了相關(guān)的資料,直接到/~gohlke/pythonlibs上下載即可。基本語法Python的語法一般是一句占一行;邏輯層級(jí)關(guān)系是靠換行后空4個(gè)空格來體現(xiàn)的;注釋符采用#表示;多行注釋采用三引號(hào),包括三單引號(hào)(''')或者三雙引號(hào)(“"")都可以。所謂注釋,就是解釋、說明此行代碼的功能、用途,但不被計(jì)算機(jī)執(zhí)行。在寫代碼的時(shí)候,要養(yǎng)成給代碼寫注釋的良好習(xí)慣。養(yǎng)成寫注釋的好習(xí)慣不僅給自己帶來方便,也給其他人理解代碼帶來了方便。s="I'manewcomer."#字符串用雙引號(hào)引起來foriins:print(i,end=';')#該行是for行的二級(jí)層次,所以行首空4個(gè)空格【例1-1】層級(jí)關(guān)系及輸出。I;';m;;a;;n;e;w;;c;o;m;e;r;.;上面的代碼輸出如下:注釋代碼有以下兩種方式:(1)在一行中,“#”后的語句表示注釋,不被計(jì)算機(jī)執(zhí)行,如例1-2中的第1和第9行。(2)如果要進(jìn)行大段的注釋可以使用三個(gè)單引號(hào)(''')或者雙引號(hào)(""")將注釋內(nèi)容包裹起來,如例1-2中的第3至5行的內(nèi)容,被第2行和第6行的雙三引號(hào)包裹起來了。單引號(hào)和雙引號(hào)在使用上沒有本質(zhì)的差別,但同時(shí)使用時(shí)要區(qū)別對(duì)待?!纠?-2】代碼注釋(在spyder下輸入代碼)#-*-coding:utf-8-*-"""遍歷list中的元素CreatedonFriFeb2614:17:372021@author:yubg"""lis=[1,2,3]foriinlis:#半角狀態(tài)冒號(hào)不能少,下一行注意縮進(jìn)print(i)用縮進(jìn)來表示分層

代碼程序是有結(jié)構(gòu)的,一般有順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)三種類型,所以代碼及代碼塊之間是有邏輯層級(jí)關(guān)系的。Python的代碼及代碼塊是使用代碼縮進(jìn)4個(gè)空格來表示層級(jí),當(dāng)然也可以使用一個(gè)Tab鍵來替代4個(gè)空格,但不要在代碼中混合使用Tab鍵和空格來進(jìn)行縮進(jìn),這會(huì)使程序在跨平臺(tái)時(shí)不能正常運(yùn)行,官方推薦的做法是使用四個(gè)空格表示一個(gè)層級(jí)關(guān)系。一般來說行尾遇到“:”就表示下一行縮進(jìn)的開始.變量的命名變量名的長度不限,但應(yīng)力求簡單易讀。變量名的第一個(gè)字符必須是英文字母、下劃線或中文;其余字符可以是英文字母、數(shù)字、下劃線或中文。不能使用Python內(nèi)置的關(guān)鍵字。不能使用特殊字符,如空格、@、%以及$等。變量名對(duì)字母大小寫敏感,必須區(qū)分大小寫字母,如“day”和“Day”是不同的兩個(gè)變量。Python的變量命名一般采用簡單、易懂、盡可能短的單詞加下劃線的形式(也稱駝峰命名法),以增加代碼的可讀性,如student_name、teacher_age等。變量的名稱不能是數(shù)字開頭,也不能用已有的內(nèi)置的函數(shù)名命名,如print、if等關(guān)鍵字,否則會(huì)引起系統(tǒng)沖突出錯(cuò)。為了避免出現(xiàn)運(yùn)行異常,盡可能地少用中文命名。

在Python中關(guān)鍵字(也稱保留字)很多,常見的有type、len、id、copy、range、if、for、while、pass、False、class、finally、is、return、None、continue、lambda、try、True、def、from、nonlocal、and、del、global、not、with、as、elif、or、yield、assert、else、import、break、except、in、raise等。在python中,變量還可以用中文來命名,但不建議,如:中國='China'。一般地,標(biāo)識(shí)符以特殊符號(hào)開頭或結(jié)尾的都有其特殊的含義。單下劃線開頭的變量表示不能直接訪問的類的屬性,如_name。雙下劃線開頭的變量表示類的私有成員,如__add。雙下劃線開頭和結(jié)尾的變量表示是專用標(biāo)識(shí)符,如__init__。020:這個(gè)標(biāo)識(shí)符只有數(shù)字構(gòu)成,違反了開頭字符不能是數(shù)字的法則;3name:這個(gè)標(biāo)識(shí)符也是違反了不能以數(shù)字開頭的約定;a-1:這個(gè)標(biāo)識(shí)符中包含不合法的字符(-);id:這個(gè)標(biāo)識(shí)符是Python中的關(guān)鍵字,應(yīng)避免使用;manandwoman:這個(gè)標(biāo)識(shí)符包含非法的字符空格。下面的標(biāo)識(shí)符命名都是不正確的:

一般地,Python一條代碼語句占一行,在每條語句的結(jié)尾處不需要使用分號(hào)“;”。但在Python中也可以使用分號(hào),表示將兩條簡單語句寫在一行。分號(hào)還有一個(gè)作用,使用在一行語句的末尾,表示對(duì)本行語句的結(jié)果不打印輸出。但如果一條語句較長要分幾行來寫,可以在行末使用反斜杠“\”來進(jìn)行換行。語句斷行上面的代碼和下面的代碼在輸出效果上是一樣的。下面的代碼中第一行末尾出現(xiàn)的“\”表示此行與下一行是一個(gè)代碼語句行。所以反斜杠“\”在這里是續(xù)行符號(hào),目的是為了人眼的閱讀舒適而將代碼用“\”分成了兩行。a='Beautifulisbetterthanugly.Explicitisbetterthanimplicit.Simpleisbetterthancomplex.'a='Beautifulisbetterthanugly.Explicitisbetterthanimplicit.\Simpleisbetterthancomplex.'

frompandasimportDataFrame#導(dǎo)入模塊中的函數(shù),后面細(xì)講frompandasimportSeriesdf=DataFrame({'age':Series([26,85,64]),'name':Series(['Ben','Joh','Jef'])})print(df)

一般地,系統(tǒng)能夠自動(dòng)識(shí)別換行,如在一對(duì)括號(hào)中或三引號(hào)之間均可換行。例如下面代碼中的第三行較長,若要對(duì)其分行,則必須在括號(hào)內(nèi)進(jìn)行(包括圓括號(hào)、方括號(hào)和花括號(hào)),分行后的第二行一般空四個(gè)空格,但是為了代碼的美觀,一般還是建議分行后的第二行要空一些合適的空格,對(duì)齊代碼,以清晰地顯示出邏輯層次感。所有的計(jì)算機(jī)語言基本上都有這么一句開篇的代碼:print("HelloWorld")。Python當(dāng)然也不例外。在原生IDLE編輯器提示符>>>下直接輸入print("HelloWorld")并回車,觀察其效果。如果不出意外,應(yīng)該輸出如下。>>>print("HelloWorld!")HelloWorld!print()的作用print()的作用是在輸出窗口中顯示一些文本或結(jié)果,便于監(jiān)控和驗(yàn)證數(shù)據(jù)。print()函數(shù)可以帶入?yún)?shù)end,如在例1-2中對(duì)最后一行代碼進(jìn)行修改,添加參數(shù)end=';',發(fā)現(xiàn)其輸出的1、2、3不再是各占一行,而是用“;”分隔后顯示在一行上。In[1]:lis=[1,2,3]

foriinlis:#半角狀態(tài)冒號(hào)不能少,下一行注意縮進(jìn)

print(i,end=';')

1;2;3;

【例1-3】輸出參數(shù)設(shè)置。例1-1的那段代碼也可以寫成如下代碼來實(shí)現(xiàn)。s="I'manewcomer."foriinrange(len(s)):print(s[i],end=';')左邊的代碼輸出跟例1-1代碼輸出一致。I;';m;;a;;n;e;w;;c;o;m;e;r;.;這里print()函數(shù)中end參數(shù)表示打印時(shí)使用等號(hào)后的符號(hào)將他們隔開并打印在一行。也可以去掉end參數(shù),試著打印看看效果。在計(jì)算機(jī)處理程序代碼時(shí),大部分都是在做邏輯運(yùn)算和數(shù)學(xué)運(yùn)算,這就涉及到變量和表達(dá)式之間的連接符號(hào),這些符號(hào)稱之為運(yùn)算符。運(yùn)算符算術(shù)運(yùn)算符算術(shù)運(yùn)算符是處理四則運(yùn)算的符號(hào),類似于我們數(shù)學(xué)中的加減乘除,他們的優(yōu)先級(jí)關(guān)系也是先乘除后加減,有括號(hào)的先計(jì)算括號(hào)。具體的計(jì)算符號(hào)見下表1-1所示。運(yùn)算符說明實(shí)例計(jì)算結(jié)果+加:兩個(gè)對(duì)象相加1.2+34.2?減:兩個(gè)對(duì)象相減2–11*乘:兩個(gè)操作數(shù)相乘,或返回一個(gè)被重復(fù)若干次的字符串3*5'a'*315'aaa'/除:兩個(gè)操作數(shù)相除(總是浮點(diǎn)數(shù))4/22.0%取模:返回除法(/)的余數(shù)7%21//取整除(地板除):返回商的整數(shù)部分7//23**冪:返回x的y次冪,相當(dāng)于pow(x,y)2**38表1-1數(shù)值運(yùn)算符【例1-4】數(shù)值運(yùn)算。In[1]:6%3#取余Out[1]:0

In[2]:5//2#取商Out[2]:2運(yùn)算符說明實(shí)例計(jì)算結(jié)果abs(x)返回x的絕對(duì)值abs(-2)2int(x)返回x的整數(shù)值int(2.7)2float(x)返回x的浮點(diǎn)數(shù)float(3)3.0complex(re,im)定義復(fù)數(shù)complex(1,-2)(1-2j)c.conjugate()返回復(fù)數(shù)的共軛復(fù)數(shù)complex(1,-2).conjugate()(1+2j)divmod(x,y)相當(dāng)于(x//y,x%y)divmod(5,2)(2,1)pow(x,y)返回x的y次方pow(2,3)8表1-2函數(shù)運(yùn)算In[3]:int(2.7)#取整Out[3]:2

In[4]:divmod(7,3)Out[4]:(2,1)

In[5]:pow(2,3)Out[5]:8賦值運(yùn)算符運(yùn)算符示例示例說明=x=2把2賦值給x+=x+=2把x加2再賦值給x,即x=x+2?=x?=2把x減2再賦值給x,即x=x?2*=x*=2把x乘以2再賦值給x,即x=x*2/=x/=2把x除以2再賦值給x,即x=x/2%=x%=2把x除以2取模(取余數(shù))再賦值給x,即x=x%2//=x//=2把x除以2取整數(shù)再賦值給x,即x=x//2**=x**=2把x取2次冪再賦值給x,即x=x**2表1-3賦值運(yùn)算符In[1]:i=0

...:i=i+1

...:print(i)1

In[2]:i+=1#此處i值已是1

...:print(i)2【例1-5】賦值運(yùn)算。邏輯比較運(yùn)算符邏輯運(yùn)算符是針對(duì)真(True)和假(False)(布爾值)兩種情況的運(yùn)算,其運(yùn)算結(jié)果仍然是一個(gè)布爾值。Python中的邏輯運(yùn)算主要包括邏輯與and、邏輯或or、邏輯非not。運(yùn)算符說

明示例and邏輯與,左至右:當(dāng)and兩側(cè)均為True時(shí)返回True,否則返回False

xandyor邏輯或,左至右:當(dāng)or兩側(cè)有一側(cè)為True則返回True,否則返回False

xorynot邏輯非,右至左:如果右側(cè)為False返回True;否則返回Falsenotx表1-4邏輯運(yùn)算符運(yùn)算符說明示例>

大于:如果左操作數(shù)大于右操作數(shù),則為Truex>y<

小于:如果左操作數(shù)小于右操作數(shù),則為Truex<y==等于:如果兩個(gè)操作數(shù)相等,則為Truex==y!=不等于:如果兩個(gè)操作數(shù)不相等,則為Truex!=y>=大于等于:如果左操作數(shù)大于或等于右操作數(shù),則為Truex>=y<=小于等于:如果左操作數(shù)小于或等于右操作數(shù),則為Truex<=y對(duì)變量或者表達(dá)式的結(jié)果進(jìn)行大小比較的運(yùn)算符,稱之為比較運(yùn)算符或關(guān)系運(yùn)算符。比較運(yùn)算符如表1-5所示。表1-5比較運(yùn)算符【例1-6】比較運(yùn)算。In[1]:5==4or5!=4Out[1]:True5==4表示5和4是相等的,這顯然不對(duì),其計(jì)算結(jié)果為False;5!=4表示5和4是不相等的,計(jì)算結(jié)果為True,所以False和True之間的or關(guān)系是只要有一個(gè)為真即真,故結(jié)果為True。In[2]:(5==4)or(5!=4)Out[2]:True為了表達(dá)式之間的關(guān)系更明晰,上面的代碼可以寫成(5==4)or(5!=4)。成員身份運(yùn)算符成員身份運(yùn)算表示的是歸屬判斷的真假。成員運(yùn)算符表示的是該變量或表達(dá)式是否在某個(gè)指定的序列中,成員運(yùn)算符如表1-6所示。而身份運(yùn)算符是判斷和檢查兩個(gè)變量或表達(dá)式是否位于存儲(chǔ)器的同一部分,身份運(yùn)算符如表1-7所示。運(yùn)算符含義示例in如果在指定序列中找到該值或變量,則返回True,否則返回False2inxnotin如果在指定序列中沒有找到該值或變量,則返回True,否則返回False2notinx運(yùn)算符含義示例is如果操作數(shù)相同,則為True(引用同一個(gè)對(duì)象)xisyisnot如果操作數(shù)不相同,則為True(引用不同的對(duì)象)xisnoty表1-7身份運(yùn)算符表1-6成員運(yùn)算符In[1]:s="Iamateacher."

...:t="Iamold."

...:"I"insOut[1]:True

In[2]:tis

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論