版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Python基礎(chǔ)與數(shù)據(jù)分析、可視化編程云南中煙培訓(xùn)中心云南中煙YNTobaccoPython基礎(chǔ)01Python語(yǔ)法基礎(chǔ)1、Python的語(yǔ)?設(shè)計(jì)強(qiáng)調(diào)的是可讀性、簡(jiǎn)潔和清晰。有些?稱Python為“可執(zhí)?的偽代碼”。2、Python是解釋性語(yǔ)?。Python解釋器同?時(shí)間只能運(yùn)??個(gè)程序的?條語(yǔ)句。3、Tab補(bǔ)全:按下Tab,會(huì)搜索已輸?變量(對(duì)象、函數(shù)等等)的命名空間。4、使?縮進(jìn),?不是括號(hào):Python使?空?字符(tab和空格)來(lái)組織代碼,?不是像其它語(yǔ)?,?如R、C++、JAVA和Perl那樣使?括號(hào)。5、Python的語(yǔ)句不需要?分號(hào)結(jié)尾。但是,分號(hào)卻可以?來(lái)給同在??的語(yǔ)句切分:a=5;b=6;c=7forxinarray:ifx<7:
print(‘xxxxx’)else:
print(‘yyyyy’)Python語(yǔ)法基礎(chǔ)對(duì)象屬性:1、Python語(yǔ)?的?個(gè)重要特性就是它的對(duì)象模型的?致性。2、每個(gè)數(shù)字、字符串、數(shù)據(jù)結(jié)構(gòu)、函數(shù)、類、模塊等等,都是在Python解釋器的?有“盒?”內(nèi),它被認(rèn)為是Python對(duì)象。每個(gè)對(duì)象都有類型(例如,字符串或函數(shù))和內(nèi)部數(shù)據(jù)。在實(shí)際中,這可以讓語(yǔ)??常靈活,因?yàn)楹瘮?shù)也可以被當(dāng)做對(duì)象使?。注釋:1、任何前?帶有井號(hào)“#”的?本都會(huì)被Python解釋器忽略。這通常被?來(lái)添加注釋。思考:如何注釋多行代碼?2、注釋多行代碼快捷鍵:“Ctrl+/”Python語(yǔ)法基礎(chǔ)Python中的變量變量的規(guī)則:變量名只能包含字母、數(shù)字和下劃線。變量名可以字母或下劃線打頭,但不能以數(shù)字打頭
例如,可將變量命名為message_1,但不能將其命名為1_message。變量名不能包含空格,但可使用下劃線來(lái)分隔其中的單詞。例如,變量名greeting_message可行,但變量名greetingmessage會(huì)引發(fā)錯(cuò)誤。不要將Python關(guān)鍵字和函數(shù)名用作變量名,即不要使用Python保留用于特殊用途的單詞,如print。變量名應(yīng)既簡(jiǎn)短又具有描述性。例如,name比n好,student_name比s_n好,name_length比length_of_persons_name好。慎用小寫字母l和大寫字母O,為什么??。Python語(yǔ)法基礎(chǔ)Python語(yǔ)言實(shí)現(xiàn)的平臺(tái):VisualStudio;jupyterNotebook;Pycharm;Anaconda……Pycharm軟件操作1.軟件介紹2.導(dǎo)入Python語(yǔ)法基礎(chǔ)函數(shù)、類、方法、屬性、對(duì)象(1)函數(shù)使用def作為關(guān)鍵詞,但是沒(méi)有在類內(nèi)進(jìn)行定義的有一定功能的代碼塊。示例1:定義一個(gè)加法運(yùn)算函數(shù)。(2)類采用Class作為關(guān)鍵字進(jìn)行定義的代碼塊,表示的是一種用來(lái)描述具有相同的屬性和方法的對(duì)象的集合。示例1:定義一個(gè)dog的類。(3)對(duì)象實(shí)例化之后的類,對(duì)類中的形參進(jìn)行了賦值,賦予其真正的含義或數(shù)值。Python語(yǔ)法基礎(chǔ)函數(shù)、類、方法、屬性、對(duì)象(4)方法使用def作為關(guān)鍵詞,定義在類內(nèi)的函數(shù)。(5)屬性類內(nèi)的稱呼,其實(shí)就是類內(nèi)的變量,同一個(gè)類內(nèi)的不同方法內(nèi)的變量都是這個(gè)類的屬性,也就是這個(gè)類的變量。主要區(qū)別:函數(shù)和方法都是函數(shù),定義在類內(nèi)叫做方法,定義在類外或者單獨(dú)使用叫做函數(shù);屬性和變量其實(shí)都是變量,定義在類內(nèi)叫做屬性,定義在類外或者單獨(dú)使用叫做變量;Python語(yǔ)法基礎(chǔ)Python中的類1、什么是類?用來(lái)描述具有相同的屬性和方法的對(duì)象的集合。它定義了該集合中每個(gè)對(duì)象所共有的屬性和方法,對(duì)象是類的實(shí)例。2、面向?qū)ο缶幊痰娜蠡咎匦裕悍庋b,繼承,多態(tài)封裝,就是把客觀事物封裝成抽象的類繼承,指可以讓某個(gè)類型的對(duì)象獲得另一個(gè)類型的對(duì)象的屬性的方法。多態(tài),是指一個(gè)類實(shí)例的相同方法在不同情形有不同表現(xiàn)形式。importnumpyasnpimportrandomdefcircles(radius:str):returnround(radius*np.pi*2,2)#保留兩位小數(shù)defareas(lengths:float,widths:float):returnlengths*widthsclassDog():"""一次模擬小狗的簡(jiǎn)單嘗試"""def__init__(self,name,age):"""定義和初始化類屬性name和age"""=nameself.age=agedefsit(self):"""模擬小狗被命令時(shí)蹲下"""print(.title()+"isnowsitting.")defroll_over(self):"""模擬小狗被命令時(shí)打滾"""print(.title()+"rolledover!")#類的繼承classColor_dog(Dog):"""一個(gè)彩色的狗"""def__init__(self,name,age,color):"""初始化父類的屬性"""super().__init__(name,age)"""定義和初始化子類的屬性"""self.color=colordefcolor_of_dog(self):print("Thecolorofdogis"+self.color+".")if__name__=="__main__":#根據(jù)類Dog創(chuàng)建實(shí)例
my_dog=Dog('willie',6)#通過(guò)句點(diǎn)表示法來(lái)訪問(wèn)類屬性和調(diào)用類方法
print("Mydog'snameis"+my_.title()+".")print("Mydogis"+str(my_dog.age)+"yearsold.")my_dog.sit()my_dog.roll_over()#創(chuàng)建子類實(shí)例my_black_dogmy_black_dog=Color_dog('jonh','999','black’)#訪問(wèn)子類的屬性和調(diào)用子類的方法
print("Mydog'snameis"+my_black_.title()+".")print("Mydog'scoloris"+my_black_dog.color.title()+".")print("Mydogis"+str(my_black_dog.age)+"yearsold.")my_black_dog.color_of_dog()Python基礎(chǔ)Python中的二元運(yùn)算符和比較運(yùn)算符Python基礎(chǔ)Python中的常見(jiàn)數(shù)據(jù)類型標(biāo)量類型:Python的標(biāo)準(zhǔn)庫(kù)中有一些內(nèi)建的類型,用以處理數(shù)值數(shù)據(jù)、字符串、布爾值和日期時(shí)間。這些單值類型被稱為標(biāo)量類型。Python基礎(chǔ)Python中的常見(jiàn)數(shù)據(jù)類型None類型1.None是一個(gè)空值,空值是Python里的一個(gè)特殊值,用None表示??梢詫one賦值給任何變量。2.None有自己的數(shù)據(jù)類型,它屬于NoneType類型。None是NoneType數(shù)據(jù)類型的唯一值。3.None不等于空字符串、空列表、0,也不等同于False。4.對(duì)于定義的函數(shù),如果沒(méi)有return語(yǔ)句,在Python中會(huì)返回None;如果有不帶值的return語(yǔ)句,那么也是返回None。5.對(duì)于定義的函數(shù),如果默認(rèn)參數(shù)是一個(gè)可修改的容器如列表、集合或字典,可以使用None作為默認(rèn)值。Python基礎(chǔ)Python中的常見(jiàn)數(shù)據(jù)類型字符串類型1.可以用單引號(hào)或雙引號(hào)來(lái)寫字符串。2.對(duì)于有換行符的字符串,可以使用三引號(hào),‘’‘或“”“都行。3.Python的字符串是不可變的,不能修改字符串。4.許多Python對(duì)象使用str函數(shù)可以被轉(zhuǎn)化為字符串。5.可以合并(拼接)字符串。(+、,、直接連接、格式化等)%的主要作用將數(shù)據(jù)轉(zhuǎn)換為指定的輸出格式。就是占位符,主要是通過(guò)%的方式,將數(shù)字、字符傳遞到字符串里所在位置,傳遞的時(shí)候按照順序傳。%s的使用例子:print(‘Iam’‘%s’‘years‘%3)print('Iam''%s''years'',youare''%s''years'%(3,4))Python語(yǔ)法基礎(chǔ)反斜杠在Python中應(yīng)用反斜杠是轉(zhuǎn)義字符,意思是它備?來(lái)表示特殊字符,?如換?符\n或Unicode字符。要寫?個(gè)包含反斜杠的字符,需要進(jìn)?轉(zhuǎn)義s='33//22'print(s)ss='33\\22'print(ss)s1=r‘d:\this\has\no\special\characters‘#可用s2=‘d:\\this\\has\\times‘#可用s3=‘d:/this/has/times‘#可用print(s1)print(s2)D:\11Python基礎(chǔ)Python中的常見(jiàn)數(shù)據(jù)類型數(shù)值類型:Python的主要數(shù)值類型是int和float。int可以存儲(chǔ)任意?的數(shù)。浮點(diǎn)數(shù)使?Python的float類型,每個(gè)數(shù)都是雙精度(64位)的值。(1)不能得到整數(shù)的除法會(huì)得到浮點(diǎn)數(shù):3/2=1.5(2)要獲得C-?格的整除(去掉?數(shù)部分),可以使?底除運(yùn)算符//:3//2=??結(jié)果等于1str、bool、int和float也是函數(shù),可以?來(lái)轉(zhuǎn)換類型。示例:s='3.14159'轉(zhuǎn)換成浮點(diǎn)數(shù)Python基礎(chǔ)日期和時(shí)間類型:datetime的格式化命令Python基礎(chǔ)日期和時(shí)間類型:Python內(nèi)建的datetime模塊提供了datetime、date和time類型。datetime賦值。dt=datetime(2011,10,29,20,30,21)datetime的格式化命令datetime計(jì)算。系統(tǒng)時(shí)間使用。字符串和datetime類型轉(zhuǎn)換(strftime和strptime方法)Python中的常見(jiàn)數(shù)據(jù)類型Python基礎(chǔ)Python中的可變與不可變對(duì)象1.Python中的大多數(shù)對(duì)象都是可變的,比如列表、字典、numpy數(shù)組和用戶自定義的類型(類)。2.其它的,例如字符串和元組,是不可變的對(duì)象。示例1:a_list=[‘foo’,2,[4,5],(1,2)]a_list[2]=(3,4)print(a_list)示例2:a_tuple=(3,5,(4,5))a_tuple[1]='four'Python基礎(chǔ)——元組1.元組的概念?元組在python里是有序元素集合的對(duì)象類型。?長(zhǎng)度固定、不可變的python對(duì)象序列。?在Python中,用圓括號(hào)“()”來(lái)表示元組,并用逗號(hào)來(lái)分隔其中的元素。?通過(guò)偏移取數(shù)據(jù),起始偏移量是0。2.元組的賦值元組創(chuàng)建在只有單個(gè)元素的時(shí)候,必須加逗號(hào)(,),元組里可以嵌套元組。tuple1=(1,)3.列表轉(zhuǎn)化成元組list=[1,2,3,4]
sd=tuple(list)
4.元組的方法排序(sorted)、索引(index)、個(gè)數(shù)(count)、切片([])Python基礎(chǔ)——列表1.列表的概念列表在python里是有序元素集合的對(duì)象類型。列表里的對(duì)象可以是任何對(duì)象:數(shù)字,字符串,列表或者字典,元組。與字符串和元組不同,列表是可變對(duì)象,支持原處修改的操作。在Python中,用方括號(hào)“[]”來(lái)表示列表,并用逗號(hào)來(lái)分隔其中的元素。2.列表的創(chuàng)建、元素訪問(wèn)
aa=['test','test1',123,0.1,[1,2],False]
print(aa[5]);print(aa[:2]);print(aa[1:])Python基礎(chǔ)——列表3.修改、添加和刪除列表中的元素修改:aa[1]=‘hello’添加和去除元素:aa.append()aa.remove();#在后面加,把第一個(gè)去除
aa.insert(2,100)#位置,值aa.pop(位置值)#把某一個(gè)位置的刪除#插入的位置在0到列表長(zhǎng)度之間刪除:del
aa[1]4.列表的方法排序(sorted)、索引(index)、個(gè)數(shù)(count)、切片([])……5.使用迭代方式創(chuàng)建列表示例:list1=[i*4foriin'ASDFEG']6.使用in方法來(lái)判斷對(duì)象是否在列表中aa
=[1,2,3,4,123,446,234]print(123inaa)Python基礎(chǔ)——字典1.字典的概念字典在python里是無(wú)序集合對(duì)象類型。字典的值都有獨(dú)立的唯一的鍵,用相應(yīng)的鍵來(lái)取值。序列運(yùn)算無(wú)效——串聯(lián),分片不能使用在Python中,用方括號(hào)“{}”來(lái)表示字典,并用逗號(hào)來(lái)分隔其中的元素,用冒號(hào)來(lái)區(qū)分鍵與值。2.字典的賦值dict={'a':99,'b':108,'c':'test'}
Python基礎(chǔ)——字典4.關(guān)于字典的值和鍵keys()方法和values()方法分別提供字典鍵、值示例1:dict1.keys()3.字典的比較:
字典的比較比較的是字典的鍵,而不是字典的值,可以使用zip方式將字典的值和鍵反過(guò)來(lái),這樣就會(huì)比較值了,可以使用sorted函數(shù)對(duì)字典進(jìn)行排序。dict1={‘a(chǎn)’:1,‘b’:2,‘c’:3,‘d’:4}dict2=dict(zip(dict1.values(),dict1.keys()))Python基礎(chǔ)——集合2.集合的創(chuàng)建方式(1)set([2,1,4,5,6])(2){1,2,2,3,3,4,5}1.集合的概念集合在python里是一種無(wú)序且元素唯一的對(duì)象類型。集合像字典,但只有鍵沒(méi)有值。3.集合的操作見(jiàn)課本(68頁(yè))Python基礎(chǔ)——Python中的控制流(1)if、elif和else(2)for循環(huán) Forvalueincollection: #程序段示例:編寫圓周值判斷程序。示例:編寫for循環(huán)程序,求100以內(nèi)數(shù)字的和,包含100。a.可以用continue使for循環(huán)提前跳過(guò)剩下的部分。示例:創(chuàng)建列表aa=[1,2,3,None,4,None,5],使用for循環(huán)求列表aa中所有元素的和。
b.可以用break跳出for循環(huán)。示例:創(chuàng)建列表aa=[1,2,3,None,4,None,5],使用for循環(huán)求列表aa中出現(xiàn)空值前的所有元素的和。Python基礎(chǔ)——Python中的控制流
c.break只中斷for循環(huán)的最內(nèi)層,其余的for循環(huán)仍會(huì)運(yùn)行。示例:使用for循環(huán)編寫程序,輸出0到3的所有第一個(gè)元素大于等于第二個(gè)元素的元組。(3)while循環(huán)While循環(huán)會(huì)在符合條件時(shí),一直執(zhí)行代碼塊,直到條件判斷為False或遇到break時(shí),才會(huì)結(jié)束。while條件:
#程序段示例1:使用while循環(huán)求100以內(nèi)數(shù)的和。示例2:使用while循環(huán)求100以內(nèi)奇數(shù)的和。Python基礎(chǔ)Random模塊1、Python中的random和numpy中的randompython:(一般只能操作一維的列表,多維也視為一維)random.random(),括號(hào)中不填參數(shù)生成0到1直接之間的隨機(jī)實(shí)數(shù),區(qū)間[0,1)random.randint(0,100)生成0到100直接之間的隨機(jī)整數(shù),區(qū)間[0,100]random.randrange(0,100),第一個(gè)參數(shù)可以省略,默認(rèn)0,生成0到100直接之間的隨機(jī)整數(shù),區(qū)間[0,100)random.uniform(0,100)生成0到100直接之間的隨機(jī)浮點(diǎn)數(shù),區(qū)間[0,100]random.choice(list/tuple/string)從給定的列表/元組/字符串中隨機(jī)選中一個(gè)元素返回secrets.choice(list/tuple/string)從給定的列表/元組/字符串中隨機(jī)選中一個(gè)元素返回secrets.randbelow(100),括號(hào)中只有結(jié)束數(shù)字,沒(méi)有開(kāi)始數(shù)字,默認(rèn)從0開(kāi)始返回0到100之間的隨機(jī)整數(shù),區(qū)間[0,100)示例:生成10個(gè)隨機(jī)浮點(diǎn)數(shù),下列程序塊能成功嗎?aa=random.uniform(5,6,size=10)print(aa)Python基礎(chǔ)Range函數(shù)1、range函數(shù)返回?個(gè)迭代器,它產(chǎn)??個(gè)均勻分布的整數(shù)序列:list(range(10))2、range的三個(gè)參數(shù)是(起點(diǎn),終點(diǎn),步進(jìn)):list(range(0,20,2))3、range產(chǎn)?的整數(shù)不包括終點(diǎn)。sum=0foriinrange(100000): ifi/3==0ori%5==0:
sum+=iprint(sum)Numpy模塊02Python中的numpy模塊1、NumPy(NumericalPython的簡(jiǎn)稱)是Python科學(xué)計(jì)算的基礎(chǔ)包。2、NumPy通常與SciPy(ScientificPython)和Matplotlib(繪圖庫(kù))一起使用。這種組合廣泛用于替代MatLab,是一個(gè)流行的技術(shù)計(jì)算平臺(tái),Python作為MatLab的替代方案,現(xiàn)在被視為一種更加現(xiàn)代和完整的編程語(yǔ)言。?ndarray,對(duì)數(shù)組數(shù)據(jù)計(jì)算非常高效。?Numpy
算法庫(kù)使用C語(yǔ)言編寫,數(shù)據(jù)傳遞、返回方式簡(jiǎn)單。?Numpy可以針對(duì)全數(shù)組進(jìn)行復(fù)雜運(yùn)算,不需要編寫循環(huán)語(yǔ)句。示例:使用列表和ndarray數(shù)組進(jìn)行運(yùn)算對(duì)比,對(duì)含有100000個(gè)元素的列表和數(shù)組進(jìn)行乘法運(yùn)算。Python中的numpy模塊1、NumPy中定義的最重要的對(duì)象是稱為ndarray的N維數(shù)組類型。2、它描述相同類型的元素集合,可以使用基于零的索引訪問(wèn)集合中的項(xiàng)目。3、ndarray中的每個(gè)元素在內(nèi)存中使用相同大小的塊。ndarray中的每個(gè)元素是數(shù)據(jù)類型對(duì)象的對(duì)象(稱為dtype)。NumPy-Ndarray對(duì)象創(chuàng)建一個(gè)ndarray方法及其構(gòu)造器參數(shù)如下:numpy.array(object,dtype=None,copy=True,order=None,subok=False,ndmin=0)
序號(hào)參數(shù)及描述1.object
任何暴露數(shù)組接口方法的對(duì)象都會(huì)返回一個(gè)數(shù)組或任何(嵌套)序列。2.dtype
數(shù)組的所需數(shù)據(jù)類型,可選。3.copy
可選,默認(rèn)為true,對(duì)象是否被復(fù)制。4.order
C(按行)、F(按列)或A(任意,默認(rèn))。5.subok
默認(rèn)情況下,返回的數(shù)組被強(qiáng)制為基類數(shù)組。如果為true,則返回子類。6.ndmin
指定返回?cái)?shù)組的最小維數(shù)。Python中的numpy模塊NumPy-Ndarray對(duì)象例1:創(chuàng)建一個(gè)一維數(shù)組 a=np.array([1,2,3])例2:創(chuàng)建一個(gè)二維數(shù)組 b=np.array([1,2,3],[1,2,3])例3:為創(chuàng)建的數(shù)組指定最小的維度 a=np.array([1,2,3,4,5],ndmin=2)例4:指定數(shù)組元素的數(shù)據(jù)類型 a=np.array([1,2,3],dtype=complex)例5:數(shù)組求轉(zhuǎn)置 b=a.TPython中的numpy模塊NumPy-Ndarray對(duì)象,numpy的數(shù)據(jù)類型Python中的numpy模塊NumPy的數(shù)組屬性Ndarray.shape:數(shù)組屬性返回一個(gè)包含數(shù)組維度的元組,它也可以用于調(diào)整數(shù)組大小。例1:調(diào)整數(shù)組的形狀的兩種方式 a=np.array([[1,2,3],[4,5,6]])b.shape=(3,2)print(b)c=b.reshape(3,2)#元素個(gè)數(shù)必須與原來(lái)保持一致print(c)Ndarray.ndim:數(shù)組屬性返回?cái)?shù)組的維數(shù)。例2: a=np.arange(24)print(a.ndim)b=a.reshape(2,4,3)print(b.ndim)print(b)Python中的numpy模塊NumPy的數(shù)組屬性Ndarray.itemsize:數(shù)組屬性返回返回?cái)?shù)組中每個(gè)元素的字節(jié)單位長(zhǎng)度。例1: x=np.array([1,2,3,4,5],dtype=32)y=np.array([1,2,3,4,5],dtype=np.float32)z=np.array([1,2,3,4,5],dtype=np.float32)aa=np.array([1,2,3,4,5],dtype=float)print(x.itemsize)
print(y.itemsize)Python中的numpy模塊NumPy特殊數(shù)組的創(chuàng)建方法Numpy.empty#空數(shù)組中的元素為隨機(jī)值,默認(rèn)數(shù)據(jù)類型為浮點(diǎn)數(shù)Numpy.zerosNumpy.ones構(gòu)造器:numpy.empty(shape,dtype=float,order='C’)Shape空數(shù)組的形狀,整數(shù)或整數(shù)元組Dtype所需的輸出數(shù)組類型,可選示例1:生成一個(gè)5個(gè)元素的一維數(shù)組,數(shù)據(jù)類型為int型。示例2:生產(chǎn)一個(gè)2維數(shù)組,每個(gè)維度包含4個(gè)元素,數(shù)據(jù)類型為float型。示例3:生成一個(gè)全零的一維數(shù)組,元素個(gè)數(shù)為10個(gè)。示例4:生成一個(gè)全1的4*2維數(shù)組。Python中的numpy模塊NumPy將其他類型對(duì)象轉(zhuǎn)換成數(shù)組的方法numpy.asarray構(gòu)造器:numpy.asarray(a,
dtype=None,order=None)a:任意形式的輸入?yún)?shù),比如列表、列表的元組、元組、元組的元組、元組的列表例1:x=[1,2,3]a=np.asarray(x)print(a)b=np.asarray(x,dtype=float)print(b)y=(1,2,3)c=np.asarray(y)print(c)Python中的numpy模塊NumPy構(gòu)造來(lái)自數(shù)值范圍的數(shù)組numpy.arrange構(gòu)造器:numpy.arange(start,stop,step,dtype)Start,默認(rèn)為0;stop,終止范圍不包含;例1:x=np.arange(5)#默認(rèn)數(shù)據(jù)類型是int型。y=np.arange(5,dtype=float)z=np.arange(0,20,2,dtype=float)print(x)print(y)print(z)Python中的numpy模塊NumPy構(gòu)造來(lái)自數(shù)值范圍的數(shù)組numpy.linspace默認(rèn)數(shù)據(jù)類型為浮點(diǎn)數(shù)構(gòu)造器:numpy.linspace(start,stop,num,endpoint,retstep,dtype)Start,默認(rèn)為0;stop,終止值,如果endpoint為true,該值包含于序列中;num,要生成的元素的數(shù)量;Endpoint:默認(rèn)值為Ture示例:x=np.linspace(10,20,5)y=np.linspace(10,20,5,endpoint=False)z=np.linspace(1,2,5,retstep=True)Python中的numpy模塊NumPy的切片和索引例1:a=np.arange(10)s=slice(2,7,2)#定義切片的元組,起始位為2,終止位為7,間隔為1a=np.arange(10)b=a[2:7:2]c=a[5]d=a[2:]e=a[:5]f=a[2:5]例2:a=np.array([[1,2,3],[3,4,5],[4,5,6]])printa[...,0]#第一列元素printa[1,...]#第二行元素printa[...,1:]#第二列及其剩余的元素Python中的numpy模塊NumPy的算數(shù)函數(shù)NumPy擁有標(biāo)準(zhǔn)的三角函數(shù),它為弧度制單位的給定角度返回三角函數(shù)比值。例1:a=np.array([0,30,45,60,90])print('不同角度的正弦值:')print(np.sin(a*np.pi/180))print('不同角度的余弦值:')print(np.sin(a*np.pi/180))print('不同角度的正切值:')print(np.sin(a*np.pi/180))例2:角度制和弧度制的轉(zhuǎn)換a=np.array([0,30,45,60,90])sin1=np.sin(a*np.pi/180)print(sin1)inv1=np.arcsin(sin1)print(inv1)degs=np.degrees(inv1)#弧度值轉(zhuǎn)換成角度值
print(degs)Python中的numpy模塊NumPy的舍入函數(shù):numpy.around(a,decimals)a是要輸入數(shù)組;decimals要舍入的小數(shù)位數(shù)。默認(rèn)值為0,如果為負(fù),整數(shù)將四舍五入到小數(shù)點(diǎn)左側(cè)的位置例1:a=np.array([1.0,5.55,123,0.567,25.532])print(np.around(a))print(np.around(a,decimals=1))Print(np.around(a,decimals=-1))NumPy求數(shù)組的方差、標(biāo)準(zhǔn)差例1:print(np.std([1,2,3,4]))print(np.var([1,2,3,4]))pandas模塊03Python中的pandas模塊1.Pandas的名稱來(lái)自于面板數(shù)據(jù)(paneldata)2.Pandas是一個(gè)強(qiáng)大的分析結(jié)構(gòu)化數(shù)據(jù)的工具集,基于NumPy構(gòu)建,提供了高級(jí)數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)操作工具,它是使Python成為強(qiáng)大而高效的數(shù)據(jù)分析環(huán)境的重要因素之一。3.Pandas的特點(diǎn): 一個(gè)強(qiáng)大的分析和操作大型結(jié)構(gòu)化數(shù)據(jù)集所需的工具集 基礎(chǔ)是NumPy,提供了高性能矩陣的運(yùn)算 提供了大量能夠快速便捷地處理數(shù)據(jù)的函數(shù)和方法 應(yīng)用于數(shù)據(jù)挖掘,數(shù)據(jù)分析 提供數(shù)據(jù)清洗功能Python中的pandas模塊Series數(shù)據(jù)類型Series是一種類似于一維數(shù)組的對(duì)象,它由一組數(shù)據(jù)(各種NumPy數(shù)據(jù)類型)以及一組與之相關(guān)的數(shù)據(jù)標(biāo)簽(即索引)組成。pandas.Series(data,index,dtype,name,copy)例1:series的創(chuàng)建obj=pd.Series([4,7,-5,3],dtype=16)Series的內(nèi)容:包含值和索引,通過(guò)索引訪問(wèn)值Series可以通過(guò)values屬性和index屬性獲取series對(duì)象的值和索引。類似于字典,如果有字典,可通過(guò)字典直接創(chuàng)建Series例1:使用字典創(chuàng)建series數(shù)據(jù)類型對(duì)象aa={'小熊貓':35000,'云煙':71000,'紅河':16000,'大重九':3300}obj3=pd.Series(aa)例2:使用index、values屬性獲取obj3對(duì)象的值和索引Python中的pandas模塊DataFrame數(shù)據(jù)類型DataFrame([data,index,columns,dtype,copy])#構(gòu)造數(shù)據(jù)框DataFrame是一個(gè)表格型的數(shù)據(jù)結(jié)構(gòu),它含有一組有序的列,每列可以是不同的值類型(數(shù)值、字符串、布爾值等)。DataFrame既有行索引也有列索引,它可以被看做由Series組成的字典(共用同一個(gè)索引)例1:data={'序號(hào)':[1,2,3,4],'Brand':['印象','云煙','紅河','大重九'],'日期':[datetime.strptime('2022611','%Y%m%d'),datetime.strptime('2022612','%Y%m%d'),datetime.strptime('2022613','%Y%m%d'),datetime.strptime('2022614','%Y%m%d')],'產(chǎn)量':[200.4,188.7,303.6,122.4]}frame=pd.DataFrame(data,index=[1,2,3,4])print(frame)print(frame.index)Python中的pandas模塊DataFrame數(shù)據(jù)類型如果嵌套字典傳給DataFrame,pandas就會(huì)被解釋為:外層字典的鍵作為列,內(nèi)層鍵則作為?索引例1:data1={1:{'日期':datetime.strptime('2022611','%Y%m%d'),'Brand':'印象','產(chǎn)量':222.9,'廢煙':0.999},
2:{'日期':datetime.strptime('2022612','%Y%m%d'),'Brand':'小熊貓','產(chǎn)量':111.8,'廢煙':0.888},
3:{'日期':datetime.strptime('2022613','%Y%m%d'),'Brand':'云煙','產(chǎn)量':66.66,'廢煙':0.777}}frame3=pd.DataFrame(data1)frame4=frame3.Tprint(frame3)print(frame4)Python中的pandas模塊DataFrame數(shù)據(jù)類型使用列表構(gòu)建DataFrame數(shù)據(jù)例1:
data1=[(1,2,3,4),(0.666,0.777,0.888,0.999),(21.21,22.22,23.23,24.24),(84.01,84.02,84.03,84.04)]
frame3=pd.DataFrame(data1)
print(frame3)
frame4=frame3.T
print(frame4)Python中的pandas模塊DataFrame數(shù)據(jù)類型(1)指定數(shù)據(jù)列的順序操作:直接改變列的順序即可,可以增加列DataFrame([data,index,columns,dtype,copy])示例1:利用data字典,生成一個(gè)DataFrame對(duì)象CC,列的順序?yàn)椋盒蛱?hào)、日期、牌號(hào)、產(chǎn)量示例2:利用data字典,生成一個(gè)DataFrame對(duì)象DD,列的順序?yàn)椋盒蛱?hào)、日期、牌號(hào)、產(chǎn)量、備注DataFrame數(shù)據(jù)類型(2)DataFrame的列檢索對(duì)象名[列標(biāo)簽];對(duì)象名[[列標(biāo)簽1,列標(biāo)簽2]];對(duì)象名.loc[:,列標(biāo)簽];對(duì)象名.loc[:,[列標(biāo)簽1,列標(biāo)簽2,……]];示例1:檢索對(duì)象CC中,牌號(hào)列的值Python中的pandas模塊DataFrame數(shù)據(jù)類型(3)按行檢索對(duì)象名.loc[索引值];對(duì)象名.iloc[索引值];對(duì)象名.loc[[索引值1,索引值2]];切片操作:對(duì)象名[1:]示例1:檢索對(duì)象CC中的第一行數(shù)據(jù)DataFrame數(shù)據(jù)類型(4)修改索引和列名對(duì)象名.index=[索引值1,索引值2,……];對(duì)象名1=對(duì)象名.rename(index={原索引值1:新索引值})對(duì)象名.columns=[列名1,列名2,……];對(duì)象名1=對(duì)象名.rename(columns={原列名:新列名})注意:修改單個(gè)索引值只能保存到新的變量中示例1:修改對(duì)象CC中的索引值為:1,2,3,4;修改CC中索引1的值為test,并存到對(duì)象DD中。Python中的pandas模塊DataFrame數(shù)據(jù)類型(5)列的賦值將列表或數(shù)組賦值給某一列時(shí),值的長(zhǎng)度必須與DataFrame的長(zhǎng)度相匹配。將Series賦值給某一列,Series的索引將會(huì)按照DataFrame的索引重新排列。如果被賦值的列不存在,會(huì)自動(dòng)創(chuàng)建一個(gè)列示例:將列表[1,2,3]賦值給產(chǎn)量列;將[1,2,3,4]賦值給產(chǎn)量列。創(chuàng)建一個(gè)Series對(duì)象,其值為[9,9,9],索引為[1,2,3],賦值給CC中不存在的列Python中的pandas模塊讀寫文本格式的數(shù)據(jù)pandas提供了一些用于將表格型數(shù)據(jù)讀取為DataFrame對(duì)象的函數(shù)。Python中的pandas模塊讀取Excel表中的數(shù)據(jù)例1:pd.read_excel(io,sheet_name)#io:路徑,sheet_name:sheet名稱excel_path=r'D:\examples\DATA.xls'excel_path1='D:\\examples\\DATA.xls'xlsx=pd.ExcelFile(excel_path1)#xlsx=pd.ExcelFile('D:\\examples\\DATA.xls')print(pd.read_excel(xlsx,'Sheet1'))將pandas數(shù)據(jù)寫入到Excel中例1:writer=pd.ExcelWriter('D:\\examples\\DATA1.xlsx')
frame_read.to_excel(writer,'sheet1')
writer.save()Python連接MySQL數(shù)據(jù)庫(kù)——Pymysql庫(kù)應(yīng)用(1)使用pymysql.connect()函數(shù)連接數(shù)據(jù)庫(kù),創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)對(duì)象示例1:使用pymysql.connect()函數(shù)創(chuàng)建名為DB的連接。DB=pymysql.connect(host='localhost',user='root',password='Aa123456',port=3306,database='test_02',charset='utf8mb4')connect()/Connection初始化常用參數(shù)說(shuō)明host主機(jī)ip(默認(rèn)為localhost)user用戶名password密碼database數(shù)據(jù)庫(kù)port端口號(hào)(默認(rèn)值為:3306)charset字符集(utf8mb4)判斷連接是否成功:使用DB.open進(jìn)行判斷(2)創(chuàng)建游標(biāo)cursor當(dāng)我們開(kāi)啟了游標(biāo)功能,再去執(zhí)行這條語(yǔ)句的時(shí)候,系統(tǒng)會(huì)先幫你找到這些行,先給你存放起來(lái),然后提供了一個(gè)游標(biāo)接口。當(dāng)你需要數(shù)據(jù)的時(shí)候,就借助這個(gè)游標(biāo)去一行行的取出數(shù)據(jù),你每取出一條記錄,游標(biāo)指針就朝前移動(dòng)一次,一直到取完最后一行數(shù)據(jù)后。Python連接MySQL數(shù)據(jù)庫(kù)——Pymysql庫(kù)應(yīng)用為什么要?jiǎng)?chuàng)建游標(biāo)?SELECT*FROMcigrate_01;Cursor=DB.cursor();#創(chuàng)建游標(biāo)對(duì)象(3)使用游標(biāo)對(duì)象中的execute()方法執(zhí)行SQL語(yǔ)句sql='select*fromcigrate_01wherec_id<11'#sql語(yǔ)句
Cursor.execute(sql)#執(zhí)行sql語(yǔ)句Python連接MySQL數(shù)據(jù)庫(kù)——Pymysql庫(kù)應(yīng)用思考:簡(jiǎn)潔的寫法怎么寫?現(xiàn)在可以取出數(shù)據(jù)了嗎?注意:當(dāng)開(kāi)啟游標(biāo)功能執(zhí)行這個(gè)SQL語(yǔ)句后,系統(tǒng)只是將執(zhí)行SQL語(yǔ)句的結(jié)果存儲(chǔ)起來(lái),提供一個(gè)游標(biāo)接口給我們,當(dāng)需要獲取數(shù)據(jù)的時(shí)候,可以從中拿數(shù)據(jù)。(4)使用fetchone()或fetchall(),fetchmany(n)獲取數(shù)據(jù)a=Cursor.fetchone()#一次性獲取一條數(shù)據(jù)
b=Cursor.fetchall()#一次性獲取所有數(shù)據(jù)
c
=Cursor.fetchmany(n)#獲取n條數(shù)據(jù)思考:a、b、c獲取的數(shù)據(jù)分別是什么?(5)關(guān)閉游標(biāo)對(duì)象
Cursor.close()Python連接MySQL數(shù)據(jù)庫(kù)——Pymysql庫(kù)應(yīng)用(6)關(guān)閉連接對(duì)象
DB.close()連接是否關(guān)閉判斷:DB._closed或者DB.open都可判斷。(7)Pymysql實(shí)現(xiàn)增、刪、改功能和select功能一樣,執(zhí)行完SQL語(yǔ)句后需要確認(rèn):mit()示例1:向數(shù)據(jù)庫(kù)test_01的表cigrate_01中插入數(shù)據(jù):202,0.999,22.22,88.88,1000,4,1,1,1示例2:查詢插入的數(shù)據(jù)是否成功示例3:更新插入的數(shù)據(jù)吸阻值為2222示例4:刪除新插入的數(shù)據(jù)Python中的pandas模塊讀取數(shù)據(jù)庫(kù)中的數(shù)據(jù)并保存為DataFrame數(shù)據(jù)類型使用pandas.DataFrame()對(duì)讀取出來(lái)的數(shù)據(jù)格式進(jìn)行轉(zhuǎn)化VAL=pd.DataFrame(a,index=
,columns=[‘列名1’,’列名2’,……])讀取數(shù)據(jù)庫(kù)中的數(shù)據(jù)并保存到Excel表中例1:writer=pd.ExcelWriter('D:\\examples\\DATA1.xlsx')
frame_data.to_excel(writer,'sheet1')
writer.save()Matplotlib03Python中的Matplotlib模塊1、Matplotlib是Python的繪圖庫(kù)。2、它可與NumPy一起使用,提供了一種有效的MatLab開(kāi)源替代方案。3、pyplot()是matplotlib庫(kù)中最重要的函數(shù),用于繪制2D圖形。4、Figure和Subplot對(duì)象5、解決中文顯示亂碼的問(wèn)題plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=FalsePython中的Matplotlib模塊繪制線圖:plt.plot()1、在任何繪圖之前,我們需要一個(gè)Figure對(duì)象,可以理解成我們需要一張畫(huà)板才能開(kāi)始繪圖。
fig=plt.figure(figsize(a,b)),設(shè)置畫(huà)板的大小:a為寬,b為高2、Subplot()函數(shù)用來(lái)布置繪圖的具體對(duì)象。
fig.add_subplot()實(shí)例可以創(chuàng)建一個(gè)或者多個(gè)子圖(1)創(chuàng)建一個(gè)子圖(坐標(biāo)系)
ax1=fig.add_subplot(1,1,1)#此處必須有三個(gè)數(shù)字前兩個(gè)代表維度,后一個(gè)代表序號(hào)(2)通過(guò)設(shè)置ax1.plot(x,y,fmt=‘xxx’,linestyle=,marker=,color=,linewidth=,markersize=,label=)方法的參數(shù)繪制圖形。
其中x,y代表橫縱坐標(biāo),fmt=‘#color#linestyle#marker’即代表線參數(shù)的快速設(shè)置順序。
fmt=‘xxx’Python中的Matplotlib模塊(3)ax1.plot()方法快速設(shè)置線參數(shù):顏色、標(biāo)記、線型線的樣式linestyle說(shuō)明‘-'實(shí)線‘--'虛線‘-.'點(diǎn)劃線‘:'線虛線‘’無(wú)線顏色Color說(shuō)明‘r'紅‘g'綠‘b'藍(lán)‘y'黃‘c’青‘m’品‘k’黑‘w’白線的樣式linestyle說(shuō)明‘.'點(diǎn)‘,'虛線‘^‘’v’’>’’<’上下左右三角形‘1‘’2’’3’’4’上下左右三叉線‘o’圓形‘s’‘D’方形‘p’五邊形‘h’‘H’六邊形‘*’五角星‘+’‘x’十字交叉‘_’橫線‘‘Python中的Matplotlib模塊(4)ax1.plot()方法快速設(shè)置線參數(shù):
linewidth線的寬度,markersize標(biāo)記的尺寸,label:圖例。(5)ax1.set_title(‘標(biāo)題名’):設(shè)置圖的標(biāo)題ax1.set_xlabel()#X軸的標(biāo)簽
ax1.set_ylabel()
ax1.figure(figsize=(a,b))#設(shè)置figure對(duì)象的大小ax1.legend()#顯示、設(shè)置圖例(6)一個(gè)子圖中可以畫(huà)多個(gè)曲線。示例代碼:fig=plt.figure()
ax1=fig.add_subplot(2,2,1)
x=np.linspace(0,np.pi*2)
y=np.sin(x)
y1=np.cos(x)
ax1.set_title('y=sin(x)')
ax1.set_xlabel('x',fontsize=15)
ax1.set_ylabel('y',fontsize=15)
ax1.plot(x,y,'b-.',linewidth=2,markersize=5,label='y=sin(x)')
ax1.plot(x,y1,'r-.',linewidth=2,markersize=5,label='y=cos(x)')
plt.legend(fontsize=8)
plt.show()Python中的Matplotlib模塊二、通過(guò)plt.subplot()直接繪圖(隱式的生成figure)
(1)不創(chuàng)建畫(huà)板,直接創(chuàng)建坐標(biāo)系進(jìn)行繪圖的方法
ax1=plt.subplot2grid((2,2),(0,0))#可以不用創(chuàng)建畫(huà)布即創(chuàng)建坐標(biāo)系。
ax2=plt.subplot(2,2,1)#可以在某一塊區(qū)域直接創(chuàng)建坐標(biāo)系
(2)通過(guò)設(shè)置ax1.plot(x,y,fmt=‘xxx’,linestyle=,marker=,color=,linewidth=,markersize=,label=)方法的參數(shù)繪制圖形。
(3)設(shè)置圖形相關(guān)參數(shù)
ax1.set_title(‘標(biāo)題名’):設(shè)置圖的標(biāo)題ax1.set_xlabel()#X軸的標(biāo)簽ax1.set_ylabel()ax1.figure(figsize=(a,b))#設(shè)置figure對(duì)象的大小ax1.legend()#顯示、設(shè)置圖例Python中的Matplotlib模塊defplot_1():
ax1=plt.subplot(2,2,1)
ax2=plt.subplot(2,2,2)
ax3=plt.subplot(2,2,3)
ax4=plt.subplot(2,2,4)
x=np.arange(0,2*np.pi,0.3)
y1=np.sin(x)
y2=np.cos(x)
ax1.plot(x,y1,'r.-',label='sin(x)')
ax3.plot(x,y2,'bo--',label='cos(x)')
ax1.set_title('y1=sin(x)')
ax1.set_xlabel('x')
ax1.set_ylabel('y1')
ax1.legend()
ax3.legend()
plt.show()
plot_1()示例代碼:思考題:使用plt.subplots()創(chuàng)建并繪制四張圖Python中的Matplotlib模塊三、通過(guò)plt.plot()直接繪圖(隱式的生成figure和axes對(duì)象)直接通過(guò)pyplot模塊完成操作(一)準(zhǔn)備繪圖數(shù)據(jù)(二)通過(guò)plt.plot(x,y,fmt=‘xxx’,linestyle=,marker=,color=,linewidth=,markersize=,label=)方法的參數(shù)設(shè)置繪制圖形參數(shù)。(三)
設(shè)置圖形其它顯示參數(shù)
plt.figure(figsize=(20,16))#定義圖的大小plt.xlabel("X值",fontproperties='SimHei',fontsize=20)#X軸標(biāo)簽,顯示中文plt.ylabel("Y值",fontproperties='SimHei',fontsize=20)#Y軸坐標(biāo)標(biāo)簽,顯示中文plt.title("X-Y分布圖",fontproperties='SimHei',fontsize=20)#曲線圖的標(biāo)題plt.legend()
……Python中的Matplotlib模塊三、通過(guò)plt.plot()直接繪圖(隱式的生成figure和axes對(duì)象)示例代碼:defplot_02():#繪制線圖x=np.linspace(1,100,num=100)#X軸坐標(biāo)數(shù)據(jù)y=np.linspace(1,100,num=100)#Y軸坐標(biāo)數(shù)據(jù)plt.plot(x,y,color=‘red’,linewidth=2,label=‘x=y’)#繪制曲線圖plt.figure(figsize=(20,16))#定義圖的大小plt.xlabel("X值",fontproperties='SimHei',fontsize=20)#X軸標(biāo)簽,顯示中文plt.ylabel("Y值",fontproperties='SimHei',fontsize=20)#Y軸坐標(biāo)標(biāo)簽,顯示中文plt.title("X-Y分布圖",fontproperties='SimHei',fontsize=20)#曲線圖的標(biāo)題plt.legend()plt.show()Python中的Matplotlib模塊散點(diǎn)圖:只畫(huà)點(diǎn),但是不用線連接起來(lái),函數(shù):plt.scatter()plt.scatter(x,y,s,c,marker,linewidths,edgecolors)方法的參數(shù)說(shuō)明參數(shù)說(shuō)明xX的值yY的值s每個(gè)點(diǎn)的面積(可以使用多個(gè)值讓每個(gè)點(diǎn)不一樣)c點(diǎn)的顏色(可以使用多個(gè)值讓每個(gè)點(diǎn)不一樣)linewidths點(diǎn)的標(biāo)記(和折線圖中一樣)edgecolors點(diǎn)的輪廓顏色Python中的Matplotlib模塊散點(diǎn)圖:只畫(huà)點(diǎn),但是不用線連接起來(lái),函數(shù):plt.scatter()x=np.arange(10)y=np.random.randn(10)#生成10個(gè)服從正態(tài)分布的浮點(diǎn)數(shù)print(y)plt.scatter(x,y,color='red',marker='+')plt.show()plt.scatter()方法的參數(shù)說(shuō)明Python中的Matplotlib模塊條形圖:條形圖分兩種,一種是水平的,一種是垂直的。plt.bar(x,height=y,width=0.8,bottom=None,*,align=‘center’,color,
data=None,**kwargs)plt.barh(x,height=0.8,width=y,bottom=None,*,align=‘center’,color,data=None,**kwargs)參數(shù)說(shuō)明x在什么位置顯示條形圖heightY的值(高度)width柱子的寬度bottom柱子的底部位置align柱子與X值的關(guān)系,(center,edge)color柱子的顏色edgecolors輪廓顏色Python中的Matplotlib模塊條形圖:條形圖分兩種,一種是水平的,一種是垂直的。plt.bar(x,height,width=0.8,bottom=None,*,align=‘center’,color,
data=None,**kwargs)plt.barh(x,height=0.8,width=y,bottom=None,*,align=‘center’,color,data=None,**kwargs)參數(shù)說(shuō)明x在什么位置顯示條形圖heightY的值(高度)width柱子的寬度bottom柱子的底部位置align柱子與X值的關(guān)系,(center,edge)color柱子的顏色edgecolors輪廓顏色Python中的Matplotlib模塊np.random.seed(3)x=np.arange(5)y=np.random.randn(5)fig,axes=plt.subplots(ncols=2,figsize=plt.figaspect(1/2))#繪制條形圖vert_bars=axes[0].bar(x,y,color='green',align='center')horiz_bars=axes[1].barh(x,y,color='lightblue',align='center')#在水平或者垂直方向上畫(huà)線axes[0].axhline(0,color='lightblue',linewidth=2)axes[1].axvline(0,color='green',linewidth=2)plt.show()Python中的Matplotlib模塊直方圖:plt.hist()plt.hist(x,bins=None,range=None,density=None,weights=None,cumulative=False,bottom=None,histtype='bar',align='mid',orientation='vertical',rwidth=None,log=False,color=None,label=None,stacked=False,normed=None,*,data=None,**kwargs)參數(shù)說(shuō)明x數(shù)據(jù)(必須是一維數(shù)組)bins直方圖的柱數(shù),即要分的組數(shù),默認(rèn)為10range元組(tuple)或None;剔除較大和較小的離群值,給出全局范圍;如果為None,則默認(rèn)為(x.min(),x.max());即x軸的范圍;density布爾值。如果為true,則返回的元組的第一個(gè)參數(shù)n將為頻率而非默認(rèn)的頻數(shù)histtype{‘bar’,‘barstacked’,‘step’,‘stepfilled’}'bar’是傳統(tǒng)的條形直方圖;'barstacked’是堆疊的條形直方圖;'step’是未填充的條形直方圖,只有外邊框;‘stepfilled’是有填充的直方圖;當(dāng)histtype取值為’step’或’stepfilled’,rwidth設(shè)置失效,即不能指定柱子之間的間隔,默認(rèn)連接在一起;參數(shù)說(shuō)明rwidth標(biāo)量值或None,柱子的寬度占bins寬的比例;bins直方圖的柱數(shù),即要分的組數(shù),默認(rèn)為10color具體顏色,數(shù)組(元素為顏色)或None。label字符串(序列)或None;有多個(gè)數(shù)據(jù)集時(shí),用label參數(shù)做標(biāo)注區(qū)分;stacked布爾值。如果取值為True,則輸出的圖為多個(gè)數(shù)據(jù)集堆疊累計(jì)的結(jié)果;如果取值為False且histtype=‘bar’或’step’,則多個(gè)數(shù)據(jù)集的柱子并排排列;edgecolor直方圖邊框顏色;Python中的Matplotlib模塊直方圖繪制的例子:np.random.seed(3)n_bins=10#直方圖分布的數(shù)量x=np.random.randn(1000,3)print(x)fig,axes=plt.subplots(nrows=2,ncols=2)ax0,ax1,ax2,ax3=axes.flatten()#將ax由n*m的Axes組展平成1*nm的Axes組colors=['red','tan','lime']ax0.hist(x,n_bins,density=True,histtype='bar',color=colors,label=colors)ax0.legend(prop={'size':6})#示意圖標(biāo)的設(shè)置ax0.set_title('barswithlegend')ax1.hist(x,n_bins,density=True,histtype='barstacked',rwidth=0.6)#density=true縱軸為概率ax1.set_title('stackedbar')ax2.hist(x,histtype='barstacked',rwidth=0.6)ax2.set_title('stackedbarofdensity')ax3.hist(x[:,2],rwidth=0.6,color='blue')#取數(shù)組的其中一維ax3.set_title('differentsamplesizes')#fig.tight_layout()#自動(dòng)調(diào)整布局plt.show()連接PLC04SNAP7連接PLC以字節(jié)的方式訪問(wèn),不能單獨(dú)訪問(wèn)位M尋址:7654321010.710.610.510.410.310.210.110.0MB10MB11MB12MB13MB14MW10MW12MW11
MD11MB15
MD12
MD10078位數(shù)據(jù)字節(jié)0DBB0數(shù)據(jù)字節(jié)1DBW0數(shù)據(jù)字節(jié)8191DBD8188DBW8190DBB8191數(shù)據(jù)字節(jié)2DBD0數(shù)據(jù)字節(jié)3DBX4.1DB:存儲(chǔ)plc數(shù)據(jù)的數(shù)據(jù)塊DB(塊號(hào)).DB(X(位),B(字節(jié)),W(字2個(gè)字節(jié)),D(四個(gè)字節(jié)))DB1.DBX0.0-DB1.DBX0.7DB1.DB0,DB1.DB1DB1.DBW0,DB1.DBW2DB1.DBD0MM1.0MB0MW2MD4IQ連接PLC添加python_snap7庫(kù)引入SNAP7importsnap7
fromsnap7importutilPython連接PLC——snap7應(yīng)用(1)創(chuàng)建連接:python連接PLC的時(shí)候,PLC相當(dāng)于服務(wù)器,PC相當(dāng)于客戶端。plc=snap7.client.Client()plc.connect(‘’,0,2)機(jī)架號(hào)為0,插槽號(hào)為2。IP地址分為兩種情況:1、仿真器PLC,并通過(guò)Nettoplcsim軟件將仿真PLC的IP地址虛擬成計(jì)算機(jī)的IP地址,在程序中訪問(wèn)仿真PLC時(shí)應(yīng)填計(jì)算機(jī)IP地址。2、真實(shí)PLC時(shí)則是PLC的地址讀取連接狀態(tài)ifplc.get_connected():print('success')else:print('fail')
plc.get_connected()返回與PLC的連接狀態(tài),返回TRUE,代表連接成功,返回FALSE,代表連接失?。?)讀取數(shù)據(jù)方法1:read_area(area,dbnumber,start,size)area:讀取的存儲(chǔ)區(qū)域,snap7.client.Areas.DB等dbnumber:對(duì)于I、Q、M區(qū),數(shù)值為0,對(duì)于DB塊,對(duì)應(yīng)塊號(hào)。Start:字節(jié)起始地址Size:向后讀取的字節(jié)長(zhǎng)度Areas地址區(qū)域Areas地址區(qū)域PE0X81I區(qū)DB0X84DB區(qū)PA0X82Q區(qū)CT0X1C計(jì)數(shù)器MK0X83M區(qū)TM0X1D定時(shí)器(3)讀取數(shù)據(jù)方法2db_read(dbnumber,start,size)ab_read(start,size)#起始字節(jié),寬度(讀取output區(qū)域)eb_read(start,size)(讀取input區(qū)域)mb_read(start,size)(4)獲取數(shù)據(jù)有兩種方法:A、使用
snap7.util()get_bool(bytearray,byte_index:int,bool_index:int)#bool_index:int為所在的位的
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 營(yíng)銷策劃方案范文
- 供熱技術(shù)方案選擇
- 班主任教育隨筆(范文10篇)
- 中華美德頌演講稿15篇
- 幼師實(shí)習(xí)轉(zhuǎn)正工作總結(jié)及反思范文
- 醫(yī)院信息化建設(shè)運(yùn)營(yíng)解決方案
- 美術(shù)編輯實(shí)習(xí)報(bào)告
- 個(gè)人自我了解與認(rèn)知報(bào)告
- 2024年聲增敏保偏光纖項(xiàng)目規(guī)劃申請(qǐng)報(bào)告模式
- 前臺(tái)酒店員工辭職報(bào)告集合15篇
- PDCA血液透析水循環(huán)案例匯報(bào)
- 巖石鉆機(jī)施工方案
- 山東省煙臺(tái)市2023-2024學(xué)年七年級(jí)上學(xué)期期末數(shù)學(xué)試題(含答案)
- 2024年貴州省銅仁市四年級(jí)數(shù)學(xué)第一學(xué)期期末教學(xué)質(zhì)量檢測(cè)模擬試題含解析
- 2024年貴陽(yáng)市小河區(qū)四上數(shù)學(xué)期末教學(xué)質(zhì)量檢測(cè)模擬試題含解析
- 北京社區(qū)食堂招商方案
- 2024-2025學(xué)年大連市沙河口區(qū)四上數(shù)學(xué)期末檢測(cè)試題含解析
- 2024有限空間作業(yè)安全培訓(xùn)
- 農(nóng)村民兵連指導(dǎo)員述職報(bào)告范本
- 車輛換行駛證委托書(shū)
- 無(wú)人機(jī)組裝調(diào)試與檢修-第六章
評(píng)論
0/150
提交評(píng)論