Python+snap7(snap部分僅西門子使用)Python基礎與數(shù)據(jù)分析、可視化編程_第1頁
Python+snap7(snap部分僅西門子使用)Python基礎與數(shù)據(jù)分析、可視化編程_第2頁
Python+snap7(snap部分僅西門子使用)Python基礎與數(shù)據(jù)分析、可視化編程_第3頁
Python+snap7(snap部分僅西門子使用)Python基礎與數(shù)據(jù)分析、可視化編程_第4頁
Python+snap7(snap部分僅西門子使用)Python基礎與數(shù)據(jù)分析、可視化編程_第5頁
已閱讀5頁,還剩94頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Python基礎與數(shù)據(jù)分析、可視化編程云南中煙培訓中心云南中煙YNTobaccoPython基礎01Python語法基礎1、Python的語?設計強調的是可讀性、簡潔和清晰。有些?稱Python為“可執(zhí)?的偽代碼”。2、Python是解釋性語?。Python解釋器同?時間只能運??個程序的?條語句。3、Tab補全:按下Tab,會搜索已輸?變量(對象、函數(shù)等等)的命名空間。4、使?縮進,?不是括號:Python使?空?字符(tab和空格)來組織代碼,?不是像其它語?,?如R、C++、JAVA和Perl那樣使?括號。5、Python的語句不需要?分號結尾。但是,分號卻可以?來給同在??的語句切分:a=5;b=6;c=7forxinarray:ifx<7:

print(‘xxxxx’)else:

print(‘yyyyy’)Python語法基礎對象屬性:1、Python語?的?個重要特性就是它的對象模型的?致性。2、每個數(shù)字、字符串、數(shù)據(jù)結構、函數(shù)、類、模塊等等,都是在Python解釋器的?有“盒?”內,它被認為是Python對象。每個對象都有類型(例如,字符串或函數(shù))和內部數(shù)據(jù)。在實際中,這可以讓語??常靈活,因為函數(shù)也可以被當做對象使?。注釋:1、任何前?帶有井號“#”的?本都會被Python解釋器忽略。這通常被?來添加注釋。思考:如何注釋多行代碼?2、注釋多行代碼快捷鍵:“Ctrl+/”Python語法基礎Python中的變量變量的規(guī)則:變量名只能包含字母、數(shù)字和下劃線。變量名可以字母或下劃線打頭,但不能以數(shù)字打頭

例如,可將變量命名為message_1,但不能將其命名為1_message。變量名不能包含空格,但可使用下劃線來分隔其中的單詞。例如,變量名greeting_message可行,但變量名greetingmessage會引發(fā)錯誤。不要將Python關鍵字和函數(shù)名用作變量名,即不要使用Python保留用于特殊用途的單詞,如print。變量名應既簡短又具有描述性。例如,name比n好,student_name比s_n好,name_length比length_of_persons_name好。慎用小寫字母l和大寫字母O,為什么??。Python語法基礎Python語言實現(xiàn)的平臺:VisualStudio;jupyterNotebook;Pycharm;Anaconda……Pycharm軟件操作1.軟件介紹2.導入Python語法基礎函數(shù)、類、方法、屬性、對象(1)函數(shù)使用def作為關鍵詞,但是沒有在類內進行定義的有一定功能的代碼塊。示例1:定義一個加法運算函數(shù)。(2)類采用Class作為關鍵字進行定義的代碼塊,表示的是一種用來描述具有相同的屬性和方法的對象的集合。示例1:定義一個dog的類。(3)對象實例化之后的類,對類中的形參進行了賦值,賦予其真正的含義或數(shù)值。Python語法基礎函數(shù)、類、方法、屬性、對象(4)方法使用def作為關鍵詞,定義在類內的函數(shù)。(5)屬性類內的稱呼,其實就是類內的變量,同一個類內的不同方法內的變量都是這個類的屬性,也就是這個類的變量。主要區(qū)別:函數(shù)和方法都是函數(shù),定義在類內叫做方法,定義在類外或者單獨使用叫做函數(shù);屬性和變量其實都是變量,定義在類內叫做屬性,定義在類外或者單獨使用叫做變量;Python語法基礎Python中的類1、什么是類?用來描述具有相同的屬性和方法的對象的集合。它定義了該集合中每個對象所共有的屬性和方法,對象是類的實例。2、面向對象編程的三大基本特性:封裝,繼承,多態(tài)封裝,就是把客觀事物封裝成抽象的類繼承,指可以讓某個類型的對象獲得另一個類型的對象的屬性的方法。多態(tài),是指一個類實例的相同方法在不同情形有不同表現(xiàn)形式。importnumpyasnpimportrandomdefcircles(radius:str):returnround(radius*np.pi*2,2)#保留兩位小數(shù)defareas(lengths:float,widths:float):returnlengths*widthsclassDog():"""一次模擬小狗的簡單嘗試"""def__init__(self,name,age):"""定義和初始化類屬性name和age"""=nameself.age=agedefsit(self):"""模擬小狗被命令時蹲下"""print(.title()+"isnowsitting.")defroll_over(self):"""模擬小狗被命令時打滾"""print(.title()+"rolledover!")#類的繼承classColor_dog(Dog):"""一個彩色的狗"""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)建實例

my_dog=Dog('willie',6)#通過句點表示法來訪問類屬性和調用類方法

print("Mydog'snameis"+my_.title()+".")print("Mydogis"+str(my_dog.age)+"yearsold.")my_dog.sit()my_dog.roll_over()#創(chuàng)建子類實例my_black_dogmy_black_dog=Color_dog('jonh','999','black’)#訪問子類的屬性和調用子類的方法

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基礎Python中的二元運算符和比較運算符Python基礎Python中的常見數(shù)據(jù)類型標量類型:Python的標準庫中有一些內建的類型,用以處理數(shù)值數(shù)據(jù)、字符串、布爾值和日期時間。這些單值類型被稱為標量類型。Python基礎Python中的常見數(shù)據(jù)類型None類型1.None是一個空值,空值是Python里的一個特殊值,用None表示??梢詫one賦值給任何變量。2.None有自己的數(shù)據(jù)類型,它屬于NoneType類型。None是NoneType數(shù)據(jù)類型的唯一值。3.None不等于空字符串、空列表、0,也不等同于False。4.對于定義的函數(shù),如果沒有return語句,在Python中會返回None;如果有不帶值的return語句,那么也是返回None。5.對于定義的函數(shù),如果默認參數(shù)是一個可修改的容器如列表、集合或字典,可以使用None作為默認值。Python基礎Python中的常見數(shù)據(jù)類型字符串類型1.可以用單引號或雙引號來寫字符串。2.對于有換行符的字符串,可以使用三引號,‘’‘或“”“都行。3.Python的字符串是不可變的,不能修改字符串。4.許多Python對象使用str函數(shù)可以被轉化為字符串。5.可以合并(拼接)字符串。(+、,、直接連接、格式化等)%的主要作用將數(shù)據(jù)轉換為指定的輸出格式。就是占位符,主要是通過%的方式,將數(shù)字、字符傳遞到字符串里所在位置,傳遞的時候按照順序傳。%s的使用例子:print(‘Iam’‘%s’‘years‘%3)print('Iam''%s''years'',youare''%s''years'%(3,4))Python語法基礎反斜杠在Python中應用反斜杠是轉義字符,意思是它備?來表示特殊字符,?如換?符\n或Unicode字符。要寫?個包含反斜杠的字符,需要進?轉義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基礎Python中的常見數(shù)據(jù)類型數(shù)值類型:Python的主要數(shù)值類型是int和float。int可以存儲任意?的數(shù)。浮點數(shù)使?Python的float類型,每個數(shù)都是雙精度(64位)的值。(1)不能得到整數(shù)的除法會得到浮點數(shù):3/2=1.5(2)要獲得C-?格的整除(去掉?數(shù)部分),可以使?底除運算符//:3//2=??結果等于1str、bool、int和float也是函數(shù),可以?來轉換類型。示例:s='3.14159'轉換成浮點數(shù)Python基礎日期和時間類型:datetime的格式化命令Python基礎日期和時間類型:Python內建的datetime模塊提供了datetime、date和time類型。datetime賦值。dt=datetime(2011,10,29,20,30,21)datetime的格式化命令datetime計算。系統(tǒng)時間使用。字符串和datetime類型轉換(strftime和strptime方法)Python中的常見數(shù)據(jù)類型Python基礎Python中的可變與不可變對象1.Python中的大多數(shù)對象都是可變的,比如列表、字典、numpy數(shù)組和用戶自定義的類型(類)。2.其它的,例如字符串和元組,是不可變的對象。示例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基礎——元組1.元組的概念?元組在python里是有序元素集合的對象類型。?長度固定、不可變的python對象序列。?在Python中,用圓括號“()”來表示元組,并用逗號來分隔其中的元素。?通過偏移取數(shù)據(jù),起始偏移量是0。2.元組的賦值元組創(chuàng)建在只有單個元素的時候,必須加逗號(,),元組里可以嵌套元組。tuple1=(1,)3.列表轉化成元組list=[1,2,3,4]

sd=tuple(list)

4.元組的方法排序(sorted)、索引(index)、個數(shù)(count)、切片([])Python基礎——列表1.列表的概念列表在python里是有序元素集合的對象類型。列表里的對象可以是任何對象:數(shù)字,字符串,列表或者字典,元組。與字符串和元組不同,列表是可變對象,支持原處修改的操作。在Python中,用方括號“[]”來表示列表,并用逗號來分隔其中的元素。2.列表的創(chuàng)建、元素訪問

aa=['test','test1',123,0.1,[1,2],False]

print(aa[5]);print(aa[:2]);print(aa[1:])Python基礎——列表3.修改、添加和刪除列表中的元素修改:aa[1]=‘hello’添加和去除元素:aa.append()aa.remove();#在后面加,把第一個去除

aa.insert(2,100)#位置,值aa.pop(位置值)#把某一個位置的刪除#插入的位置在0到列表長度之間刪除:del

aa[1]4.列表的方法排序(sorted)、索引(index)、個數(shù)(count)、切片([])……5.使用迭代方式創(chuàng)建列表示例:list1=[i*4foriin'ASDFEG']6.使用in方法來判斷對象是否在列表中aa

=[1,2,3,4,123,446,234]print(123inaa)Python基礎——字典1.字典的概念字典在python里是無序集合對象類型。字典的值都有獨立的唯一的鍵,用相應的鍵來取值。序列運算無效——串聯(lián),分片不能使用在Python中,用方括號“{}”來表示字典,并用逗號來分隔其中的元素,用冒號來區(qū)分鍵與值。2.字典的賦值dict={'a':99,'b':108,'c':'test'}

Python基礎——字典4.關于字典的值和鍵keys()方法和values()方法分別提供字典鍵、值示例1:dict1.keys()3.字典的比較:

字典的比較比較的是字典的鍵,而不是字典的值,可以使用zip方式將字典的值和鍵反過來,這樣就會比較值了,可以使用sorted函數(shù)對字典進行排序。dict1={‘a(chǎn)’:1,‘b’:2,‘c’:3,‘d’:4}dict2=dict(zip(dict1.values(),dict1.keys()))Python基礎——集合2.集合的創(chuàng)建方式(1)set([2,1,4,5,6])(2){1,2,2,3,3,4,5}1.集合的概念集合在python里是一種無序且元素唯一的對象類型。集合像字典,但只有鍵沒有值。3.集合的操作見課本(68頁)Python基礎——Python中的控制流(1)if、elif和else(2)for循環(huán) Forvalueincollection: #程序段示例:編寫圓周值判斷程序。示例:編寫for循環(huán)程序,求100以內數(shù)字的和,包含100。a.可以用continue使for循環(huán)提前跳過剩下的部分。示例:創(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基礎——Python中的控制流

c.break只中斷for循環(huán)的最內層,其余的for循環(huán)仍會運行。示例:使用for循環(huán)編寫程序,輸出0到3的所有第一個元素大于等于第二個元素的元組。(3)while循環(huán)While循環(huán)會在符合條件時,一直執(zhí)行代碼塊,直到條件判斷為False或遇到break時,才會結束。while條件:

#程序段示例1:使用while循環(huán)求100以內數(shù)的和。示例2:使用while循環(huán)求100以內奇數(shù)的和。Python基礎Random模塊1、Python中的random和numpy中的randompython:(一般只能操作一維的列表,多維也視為一維)random.random(),括號中不填參數(shù)生成0到1直接之間的隨機實數(shù),區(qū)間[0,1)random.randint(0,100)生成0到100直接之間的隨機整數(shù),區(qū)間[0,100]random.randrange(0,100),第一個參數(shù)可以省略,默認0,生成0到100直接之間的隨機整數(shù),區(qū)間[0,100)random.uniform(0,100)生成0到100直接之間的隨機浮點數(shù),區(qū)間[0,100]random.choice(list/tuple/string)從給定的列表/元組/字符串中隨機選中一個元素返回secrets.choice(list/tuple/string)從給定的列表/元組/字符串中隨機選中一個元素返回secrets.randbelow(100),括號中只有結束數(shù)字,沒有開始數(shù)字,默認從0開始返回0到100之間的隨機整數(shù),區(qū)間[0,100)示例:生成10個隨機浮點數(shù),下列程序塊能成功嗎?aa=random.uniform(5,6,size=10)print(aa)Python基礎Range函數(shù)1、range函數(shù)返回?個迭代器,它產(chǎn)??個均勻分布的整數(shù)序列:list(range(10))2、range的三個參數(shù)是(起點,終點,步進):list(range(0,20,2))3、range產(chǎn)?的整數(shù)不包括終點。sum=0foriinrange(100000): ifi/3==0ori%5==0:

sum+=iprint(sum)Numpy模塊02Python中的numpy模塊1、NumPy(NumericalPython的簡稱)是Python科學計算的基礎包。2、NumPy通常與SciPy(ScientificPython)和Matplotlib(繪圖庫)一起使用。這種組合廣泛用于替代MatLab,是一個流行的技術計算平臺,Python作為MatLab的替代方案,現(xiàn)在被視為一種更加現(xiàn)代和完整的編程語言。?ndarray,對數(shù)組數(shù)據(jù)計算非常高效。?Numpy

算法庫使用C語言編寫,數(shù)據(jù)傳遞、返回方式簡單。?Numpy可以針對全數(shù)組進行復雜運算,不需要編寫循環(huán)語句。示例:使用列表和ndarray數(shù)組進行運算對比,對含有100000個元素的列表和數(shù)組進行乘法運算。Python中的numpy模塊1、NumPy中定義的最重要的對象是稱為ndarray的N維數(shù)組類型。2、它描述相同類型的元素集合,可以使用基于零的索引訪問集合中的項目。3、ndarray中的每個元素在內存中使用相同大小的塊。ndarray中的每個元素是數(shù)據(jù)類型對象的對象(稱為dtype)。NumPy-Ndarray對象創(chuàng)建一個ndarray方法及其構造器參數(shù)如下:numpy.array(object,dtype=None,copy=True,order=None,subok=False,ndmin=0)

序號參數(shù)及描述1.object

任何暴露數(shù)組接口方法的對象都會返回一個數(shù)組或任何(嵌套)序列。2.dtype

數(shù)組的所需數(shù)據(jù)類型,可選。3.copy

可選,默認為true,對象是否被復制。4.order

C(按行)、F(按列)或A(任意,默認)。5.subok

默認情況下,返回的數(shù)組被強制為基類數(shù)組。如果為true,則返回子類。6.ndmin

指定返回數(shù)組的最小維數(shù)。Python中的numpy模塊NumPy-Ndarray對象例1:創(chuàng)建一個一維數(shù)組 a=np.array([1,2,3])例2:創(chuàng)建一個二維數(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ù)組求轉置 b=a.TPython中的numpy模塊NumPy-Ndarray對象,numpy的數(shù)據(jù)類型Python中的numpy模塊NumPy的數(shù)組屬性Ndarray.shape:數(shù)組屬性返回一個包含數(shù)組維度的元組,它也可以用于調整數(shù)組大小。例1:調整數(shù)組的形狀的兩種方式 a=np.array([[1,2,3],[4,5,6]])b.shape=(3,2)print(b)c=b.reshape(3,2)#元素個數(shù)必須與原來保持一致print(c)Ndarray.ndim:數(shù)組屬性返回數(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ù)組屬性返回返回數(shù)組中每個元素的字節(jié)單位長度。例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ù)組中的元素為隨機值,默認數(shù)據(jù)類型為浮點數(shù)Numpy.zerosNumpy.ones構造器:numpy.empty(shape,dtype=float,order='C’)Shape空數(shù)組的形狀,整數(shù)或整數(shù)元組Dtype所需的輸出數(shù)組類型,可選示例1:生成一個5個元素的一維數(shù)組,數(shù)據(jù)類型為int型。示例2:生產(chǎn)一個2維數(shù)組,每個維度包含4個元素,數(shù)據(jù)類型為float型。示例3:生成一個全零的一維數(shù)組,元素個數(shù)為10個。示例4:生成一個全1的4*2維數(shù)組。Python中的numpy模塊NumPy將其他類型對象轉換成數(shù)組的方法numpy.asarray構造器: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構造來自數(shù)值范圍的數(shù)組numpy.arrange構造器:numpy.arange(start,stop,step,dtype)Start,默認為0;stop,終止范圍不包含;例1:x=np.arange(5)#默認數(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構造來自數(shù)值范圍的數(shù)組numpy.linspace默認數(shù)據(jù)類型為浮點數(shù)構造器:numpy.linspace(start,stop,num,endpoint,retstep,dtype)Start,默認為0;stop,終止值,如果endpoint為true,該值包含于序列中;num,要生成的元素的數(shù)量;Endpoint:默認值為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擁有標準的三角函數(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:角度制和弧度制的轉換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)#弧度值轉換成角度值

print(degs)Python中的numpy模塊NumPy的舍入函數(shù):numpy.around(a,decimals)a是要輸入數(shù)組;decimals要舍入的小數(shù)位數(shù)。默認值為0,如果為負,整數(shù)將四舍五入到小數(shù)點左側的位置例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ù)組的方差、標準差例1:print(np.std([1,2,3,4]))print(np.var([1,2,3,4]))pandas模塊03Python中的pandas模塊1.Pandas的名稱來自于面板數(shù)據(jù)(paneldata)2.Pandas是一個強大的分析結構化數(shù)據(jù)的工具集,基于NumPy構建,提供了高級數(shù)據(jù)結構和數(shù)據(jù)操作工具,它是使Python成為強大而高效的數(shù)據(jù)分析環(huán)境的重要因素之一。3.Pandas的特點: 一個強大的分析和操作大型結構化數(shù)據(jù)集所需的工具集 基礎是NumPy,提供了高性能矩陣的運算 提供了大量能夠快速便捷地處理數(shù)據(jù)的函數(shù)和方法 應用于數(shù)據(jù)挖掘,數(shù)據(jù)分析 提供數(shù)據(jù)清洗功能Python中的pandas模塊Series數(shù)據(jù)類型Series是一種類似于一維數(shù)組的對象,它由一組數(shù)據(jù)(各種NumPy數(shù)據(jù)類型)以及一組與之相關的數(shù)據(jù)標簽(即索引)組成。pandas.Series(data,index,dtype,name,copy)例1:series的創(chuàng)建obj=pd.Series([4,7,-5,3],dtype=16)Series的內容:包含值和索引,通過索引訪問值Series可以通過values屬性和index屬性獲取series對象的值和索引。類似于字典,如果有字典,可通過字典直接創(chuàng)建Series例1:使用字典創(chuàng)建series數(shù)據(jù)類型對象aa={'小熊貓':35000,'云煙':71000,'紅河':16000,'大重九':3300}obj3=pd.Series(aa)例2:使用index、values屬性獲取obj3對象的值和索引Python中的pandas模塊DataFrame數(shù)據(jù)類型DataFrame([data,index,columns,dtype,copy])#構造數(shù)據(jù)框DataFrame是一個表格型的數(shù)據(jù)結構,它含有一組有序的列,每列可以是不同的值類型(數(shù)值、字符串、布爾值等)。DataFrame既有行索引也有列索引,它可以被看做由Series組成的字典(共用同一個索引)例1:data={'序號':[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就會被解釋為:外層字典的鍵作為列,內層鍵則作為?索引例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ù)類型使用列表構建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字典,生成一個DataFrame對象CC,列的順序為:序號、日期、牌號、產(chǎn)量示例2:利用data字典,生成一個DataFrame對象DD,列的順序為:序號、日期、牌號、產(chǎn)量、備注DataFrame數(shù)據(jù)類型(2)DataFrame的列檢索對象名[列標簽];對象名[[列標簽1,列標簽2]];對象名.loc[:,列標簽];對象名.loc[:,[列標簽1,列標簽2,……]];示例1:檢索對象CC中,牌號列的值Python中的pandas模塊DataFrame數(shù)據(jù)類型(3)按行檢索對象名.loc[索引值];對象名.iloc[索引值];對象名.loc[[索引值1,索引值2]];切片操作:對象名[1:]示例1:檢索對象CC中的第一行數(shù)據(jù)DataFrame數(shù)據(jù)類型(4)修改索引和列名對象名.index=[索引值1,索引值2,……];對象名1=對象名.rename(index={原索引值1:新索引值})對象名.columns=[列名1,列名2,……];對象名1=對象名.rename(columns={原列名:新列名})注意:修改單個索引值只能保存到新的變量中示例1:修改對象CC中的索引值為:1,2,3,4;修改CC中索引1的值為test,并存到對象DD中。Python中的pandas模塊DataFrame數(shù)據(jù)類型(5)列的賦值將列表或數(shù)組賦值給某一列時,值的長度必須與DataFrame的長度相匹配。將Series賦值給某一列,Series的索引將會按照DataFrame的索引重新排列。如果被賦值的列不存在,會自動創(chuàng)建一個列示例:將列表[1,2,3]賦值給產(chǎn)量列;將[1,2,3,4]賦值給產(chǎn)量列。創(chuàng)建一個Series對象,其值為[9,9,9],索引為[1,2,3],賦值給CC中不存在的列Python中的pandas模塊讀寫文本格式的數(shù)據(jù)pandas提供了一些用于將表格型數(shù)據(jù)讀取為DataFrame對象的函數(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ù)庫——Pymysql庫應用(1)使用pymysql.connect()函數(shù)連接數(shù)據(jù)庫,創(chuàng)建一個數(shù)據(jù)庫對象示例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ù)說明host主機ip(默認為localhost)user用戶名password密碼database數(shù)據(jù)庫port端口號(默認值為:3306)charset字符集(utf8mb4)判斷連接是否成功:使用DB.open進行判斷(2)創(chuàng)建游標cursor當我們開啟了游標功能,再去執(zhí)行這條語句的時候,系統(tǒng)會先幫你找到這些行,先給你存放起來,然后提供了一個游標接口。當你需要數(shù)據(jù)的時候,就借助這個游標去一行行的取出數(shù)據(jù),你每取出一條記錄,游標指針就朝前移動一次,一直到取完最后一行數(shù)據(jù)后。Python連接MySQL數(shù)據(jù)庫——Pymysql庫應用為什么要創(chuàng)建游標?SELECT*FROMcigrate_01;Cursor=DB.cursor();#創(chuàng)建游標對象(3)使用游標對象中的execute()方法執(zhí)行SQL語句sql='select*fromcigrate_01wherec_id<11'#sql語句

Cursor.execute(sql)#執(zhí)行sql語句Python連接MySQL數(shù)據(jù)庫——Pymysql庫應用思考:簡潔的寫法怎么寫?現(xiàn)在可以取出數(shù)據(jù)了嗎?注意:當開啟游標功能執(zhí)行這個SQL語句后,系統(tǒng)只是將執(zhí)行SQL語句的結果存儲起來,提供一個游標接口給我們,當需要獲取數(shù)據(jù)的時候,可以從中拿數(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)關閉游標對象

Cursor.close()Python連接MySQL數(shù)據(jù)庫——Pymysql庫應用(6)關閉連接對象

DB.close()連接是否關閉判斷:DB._closed或者DB.open都可判斷。(7)Pymysql實現(xiàn)增、刪、改功能和select功能一樣,執(zhí)行完SQL語句后需要確認:mit()示例1:向數(shù)據(jù)庫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ù)庫中的數(shù)據(jù)并保存為DataFrame數(shù)據(jù)類型使用pandas.DataFrame()對讀取出來的數(shù)據(jù)格式進行轉化VAL=pd.DataFrame(a,index=

,columns=[‘列名1’,’列名2’,……])讀取數(shù)據(jù)庫中的數(shù)據(jù)并保存到Excel表中例1:writer=pd.ExcelWriter('D:\\examples\\DATA1.xlsx')

frame_data.to_excel(writer,'sheet1')

writer.save()Matplotlib03Python中的Matplotlib模塊1、Matplotlib是Python的繪圖庫。2、它可與NumPy一起使用,提供了一種有效的MatLab開源替代方案。3、pyplot()是matplotlib庫中最重要的函數(shù),用于繪制2D圖形。4、Figure和Subplot對象5、解決中文顯示亂碼的問題plt.rcParams['font.sans-serif']=['SimHei']

plt.rcParams['axes.unicode_minus']=FalsePython中的Matplotlib模塊繪制線圖:plt.plot()1、在任何繪圖之前,我們需要一個Figure對象,可以理解成我們需要一張畫板才能開始繪圖。

fig=plt.figure(figsize(a,b)),設置畫板的大?。篴為寬,b為高2、Subplot()函數(shù)用來布置繪圖的具體對象。

fig.add_subplot()實例可以創(chuàng)建一個或者多個子圖(1)創(chuàng)建一個子圖(坐標系)

ax1=fig.add_subplot(1,1,1)#此處必須有三個數(shù)字前兩個代表維度,后一個代表序號(2)通過設置ax1.plot(x,y,fmt=‘xxx’,linestyle=,marker=,color=,linewidth=,markersize=,label=)方法的參數(shù)繪制圖形。

其中x,y代表橫縱坐標,fmt=‘#color#linestyle#marker’即代表線參數(shù)的快速設置順序。

fmt=‘xxx’Python中的Matplotlib模塊(3)ax1.plot()方法快速設置線參數(shù):顏色、標記、線型線的樣式linestyle說明‘-'實線‘--'虛線‘-.'點劃線‘:'線虛線‘’無線顏色Color說明‘r'紅‘g'綠‘b'藍‘y'黃‘c’青‘m’品‘k’黑‘w’白線的樣式linestyle說明‘.'點‘,'虛線‘^‘’v’’>’’<’上下左右三角形‘1‘’2’’3’’4’上下左右三叉線‘o’圓形‘s’‘D’方形‘p’五邊形‘h’‘H’六邊形‘*’五角星‘+’‘x’十字交叉‘_’橫線‘‘Python中的Matplotlib模塊(4)ax1.plot()方法快速設置線參數(shù):

linewidth線的寬度,markersize標記的尺寸,label:圖例。(5)ax1.set_title(‘標題名’):設置圖的標題ax1.set_xlabel()#X軸的標簽

ax1.set_ylabel()

ax1.figure(figsize=(a,b))#設置figure對象的大小ax1.legend()#顯示、設置圖例(6)一個子圖中可以畫多個曲線。示例代碼: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模塊二、通過plt.subplot()直接繪圖(隱式的生成figure)

(1)不創(chuàng)建畫板,直接創(chuàng)建坐標系進行繪圖的方法

ax1=plt.subplot2grid((2,2),(0,0))#可以不用創(chuàng)建畫布即創(chuàng)建坐標系。

ax2=plt.subplot(2,2,1)#可以在某一塊區(qū)域直接創(chuàng)建坐標系

(2)通過設置ax1.plot(x,y,fmt=‘xxx’,linestyle=,marker=,color=,linewidth=,markersize=,label=)方法的參數(shù)繪制圖形。

(3)設置圖形相關參數(shù)

ax1.set_title(‘標題名’):設置圖的標題ax1.set_xlabel()#X軸的標簽ax1.set_ylabel()ax1.figure(figsize=(a,b))#設置figure對象的大小ax1.legend()#顯示、設置圖例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模塊三、通過plt.plot()直接繪圖(隱式的生成figure和axes對象)直接通過pyplot模塊完成操作(一)準備繪圖數(shù)據(jù)(二)通過plt.plot(x,y,fmt=‘xxx’,linestyle=,marker=,color=,linewidth=,markersize=,label=)方法的參數(shù)設置繪制圖形參數(shù)。(三)

設置圖形其它顯示參數(shù)

plt.figure(figsize=(20,16))#定義圖的大小plt.xlabel("X值",fontproperties='SimHei',fontsize=20)#X軸標簽,顯示中文plt.ylabel("Y值",fontproperties='SimHei',fontsize=20)#Y軸坐標標簽,顯示中文plt.title("X-Y分布圖",fontproperties='SimHei',fontsize=20)#曲線圖的標題plt.legend()

……Python中的Matplotlib模塊三、通過plt.plot()直接繪圖(隱式的生成figure和axes對象)示例代碼:defplot_02():#繪制線圖x=np.linspace(1,100,num=100)#X軸坐標數(shù)據(jù)y=np.linspace(1,100,num=100)#Y軸坐標數(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軸標簽,顯示中文plt.ylabel("Y值",fontproperties='SimHei',fontsize=20)#Y軸坐標標簽,顯示中文plt.title("X-Y分布圖",fontproperties='SimHei',fontsize=20)#曲線圖的標題plt.legend()plt.show()Python中的Matplotlib模塊散點圖:只畫點,但是不用線連接起來,函數(shù):plt.scatter()plt.scatter(x,y,s,c,marker,linewidths,edgecolors)方法的參數(shù)說明參數(shù)說明xX的值yY的值s每個點的面積(可以使用多個值讓每個點不一樣)c點的顏色(可以使用多個值讓每個點不一樣)linewidths點的標記(和折線圖中一樣)edgecolors點的輪廓顏色Python中的Matplotlib模塊散點圖:只畫點,但是不用線連接起來,函數(shù):plt.scatter()x=np.arange(10)y=np.random.randn(10)#生成10個服從正態(tài)分布的浮點數(shù)print(y)plt.scatter(x,y,color='red',marker='+')plt.show()plt.scatter()方法的參數(shù)說明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ù)說明x在什么位置顯示條形圖heightY的值(高度)width柱子的寬度bottom柱子的底部位置align柱子與X值的關系,(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ù)說明x在什么位置顯示條形圖heightY的值(高度)width柱子的寬度bottom柱子的底部位置align柱子與X值的關系,(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')#在水平或者垂直方向上畫線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ù)說明x數(shù)據(jù)(必須是一維數(shù)組)bins直方圖的柱數(shù),即要分的組數(shù),默認為10range元組(tuple)或None;剔除較大和較小的離群值,給出全局范圍;如果為None,則默認為(x.min(),x.max());即x軸的范圍;density布爾值。如果為true,則返回的元組的第一個參數(shù)n將為頻率而非默認的頻數(shù)histtype{‘bar’,‘barstacked’,‘step’,‘stepfilled’}'bar’是傳統(tǒng)的條形直方圖;'barstacked’是堆疊的條形直方圖;'step’是未填充的條形直方圖,只有外邊框;‘stepfilled’是有填充的直方圖;當histtype取值為’step’或’stepfilled’,rwidth設置失效,即不能指定柱子之間的間隔,默認連接在一起;參數(shù)說明rwidth標量值或None,柱子的寬度占bins寬的比例;bins直方圖的柱數(shù),即要分的組數(shù),默認為10color具體顏色,數(shù)組(元素為顏色)或None。label字符串(序列)或None;有多個數(shù)據(jù)集時,用label參數(shù)做標注區(qū)分;stacked布爾值。如果取值為True,則輸出的圖為多個數(shù)據(jù)集堆疊累計的結果;如果取值為False且histtype=‘bar’或’step’,則多個數(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})#示意圖標的設置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()#自動調整布局plt.show()連接PLC04SNAP7連接PLC以字節(jié)的方式訪問,不能單獨訪問位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:存儲plc數(shù)據(jù)的數(shù)據(jù)塊DB(塊號).DB(X(位),B(字節(jié)),W(字2個字節(jié)),D(四個字節(jié)))DB1.DBX0.0-DB1.DBX0.7DB1.DB0,DB1.DB1DB1.DBW0,DB1.DBW2DB1.DBD0MM1.0MB0MW2MD4IQ連接PLC添加python_snap7庫引入SNAP7importsnap7

fromsnap7importutilPython連接PLC——snap7應用(1)創(chuàng)建連接:python連接PLC的時候,PLC相當于服務器,PC相當于客戶端。plc=snap7.client.Client()plc.connect(‘’,0,2)機架號為0,插槽號為2。IP地址分為兩種情況:1、仿真器PLC,并通過Nettoplcsim軟件將仿真PLC的IP地址虛擬成計算機的IP地址,在程序中訪問仿真PLC時應填計算機IP地址。2、真實PLC時則是PLC的地址讀取連接狀態(tài)ifplc.get_connected():print('success')else:print('fail')

plc.get_connected()返回與PLC的連接狀態(tài),返回TRUE,代表連接成功,返回FALSE,代表連接失敗(2)讀取數(shù)據(jù)方法1:read_area(area,dbnumber,start,size)area:讀取的存儲區(qū)域,snap7.client.Areas.DB等dbnumber:對于I、Q、M區(qū),數(shù)值為0,對于DB塊,對應塊號。Start:字節(jié)起始地址Size:向后讀取的字節(jié)長度Areas地址區(qū)域Areas地址區(qū)域PE0X81I區(qū)DB0X84DB區(qū)PA0X82Q區(qū)CT0X1C計數(shù)器MK0X83M區(qū)TM0X1D定時器(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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論