Python+snap7(snap部分仅西门子使用)Python基础与数据分析、可视化编程_第1页
Python+snap7(snap部分仅西门子使用)Python基础与数据分析、可视化编程_第2页
Python+snap7(snap部分仅西门子使用)Python基础与数据分析、可视化编程_第3页
Python+snap7(snap部分仅西门子使用)Python基础与数据分析、可视化编程_第4页
Python+snap7(snap部分仅西门子使用)Python基础与数据分析、可视化编程_第5页
已阅读5页,还剩94页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Python基础与数据分析、可视化编程云南中烟培训中心云南中烟YNTobaccoPython基础01Python语法基础1、Python的语⾔设计强调的是可读性、简洁和清晰。有些⼈称Python为“可执⾏的伪代码”。2、Python是解释性语⾔。Python解释器同⼀时间只能运⾏⼀个程序的⼀条语句。3、Tab补全:按下Tab,会搜索已输⼊变量(对象、函数等等)的命名空间。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、每个数字、字符串、数据结构、函数、类、模块等等,都是在Python解释器的⾃有“盒⼦”内,它被认为是Python对象。每个对象都有类型(例如,字符串或函数)和内部数据。在实际中,这可以让语⾔⾮常灵活,因为函数也可以被当做对象使⽤。注释:1、任何前⾯带有井号“#”的⽂本都会被Python解释器忽略。这通常被⽤来添加注释。思考:如何注释多行代码?2、注释多行代码快捷键:“Ctrl+/”Python语法基础Python中的变量变量的规则:变量名只能包含字母、数字和下划线。变量名可以字母或下划线打头,但不能以数字打头

例如,可将变量命名为message_1,但不能将其命名为1_message。变量名不能包含空格,但可使用下划线来分隔其中的单词。例如,变量名greeting_message可行,但变量名greetingmessage会引发错误。不要将Python关键字和函数名用作变量名,即不要使用Python保留用于特殊用途的单词,如print。变量名应既简短又具有描述性。例如,name比n好,student_name比s_n好,name_length比length_of_persons_name好。慎用小写字母l和大写字母O,为什么??。Python语法基础Python语言实现的平台:VisualStudio;jupyterNotebook;Pycharm;Anaconda……Pycharm软件操作1.软件介绍2.导入Python语法基础函数、类、方法、属性、对象(1)函数使用def作为关键词,但是没有在类内进行定义的有一定功能的代码块。示例1:定义一个加法运算函数。(2)类采用Class作为关键字进行定义的代码块,表示的是一种用来描述具有相同的属性和方法的对象的集合。示例1:定义一个dog的类。(3)对象实例化之后的类,对类中的形参进行了赋值,赋予其真正的含义或数值。Python语法基础函数、类、方法、属性、对象(4)方法使用def作为关键词,定义在类内的函数。(5)属性类内的称呼,其实就是类内的变量,同一个类内的不同方法内的变量都是这个类的属性,也就是这个类的变量。主要区别:函数和方法都是函数,定义在类内叫做方法,定义在类外或者单独使用叫做函数;属性和变量其实都是变量,定义在类内叫做属性,定义在类外或者单独使用叫做变量;Python语法基础Python中的类1、什么是类?用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法,对象是类的实例。2、面向对象编程的三大基本特性:封装,继承,多态封装,就是把客观事物封装成抽象的类继承,指可以让某个类型的对象获得另一个类型的对象的属性的方法。多态,是指一个类实例的相同方法在不同情形有不同表现形式。importnumpyasnpimportrandomdefcircles(radius:str):returnround(radius*np.pi*2,2)#保留两位小数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__":#根据类Dog创建实例

my_dog=Dog('willie',6)#通过句点表示法来访问类属性和调用类方法

print("Mydog'snameis"+my_.title()+".")print("Mydogis"+str(my_dog.age)+"yearsold.")my_dog.sit()my_dog.roll_over()#创建子类实例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中的常见数据类型标量类型:Python的标准库中有一些内建的类型,用以处理数值数据、字符串、布尔值和日期时间。这些单值类型被称为标量类型。Python基础Python中的常见数据类型None类型1.None是一个空值,空值是Python里的一个特殊值,用None表示。可以将None赋值给任何变量。2.None有自己的数据类型,它属于NoneType类型。None是NoneType数据类型的唯一值。3.None不等于空字符串、空列表、0,也不等同于False。4.对于定义的函数,如果没有return语句,在Python中会返回None;如果有不带值的return语句,那么也是返回None。5.对于定义的函数,如果默认参数是一个可修改的容器如列表、集合或字典,可以使用None作为默认值。Python基础Python中的常见数据类型字符串类型1.可以用单引号或双引号来写字符串。2.对于有换行符的字符串,可以使用三引号,‘’‘或“”“都行。3.Python的字符串是不可变的,不能修改字符串。4.许多Python对象使用str函数可以被转化为字符串。5.可以合并(拼接)字符串。(+、,、直接连接、格式化等)%的主要作用将数据转换为指定的输出格式。就是占位符,主要是通过%的方式,将数字、字符传递到字符串里所在位置,传递的时候按照顺序传。%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中的常见数据类型数值类型:Python的主要数值类型是int和float。int可以存储任意⼤的数。浮点数使⽤Python的float类型,每个数都是双精度(64位)的值。(1)不能得到整数的除法会得到浮点数:3/2=1.5(2)要获得C-⻛格的整除(去掉⼩数部分),可以使⽤底除运算符//:3//2=??结果等于1str、bool、int和float也是函数,可以⽤来转换类型。示例:s='3.14159'转换成浮点数Python基础日期和时间类型:datetime的格式化命令Python基础日期和时间类型:Python内建的datetime模块提供了datetime、date和time类型。datetime赋值。dt=datetime(2011,10,29,20,30,21)datetime的格式化命令datetime计算。系统时间使用。字符串和datetime类型转换(strftime和strptime方法)Python中的常见数据类型Python基础Python中的可变与不可变对象1.Python中的大多数对象都是可变的,比如列表、字典、numpy数组和用户自定义的类型(类)。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中,用圆括号“()”来表示元组,并用逗号来分隔其中的元素。•通过偏移取数据,起始偏移量是0。2.元组的赋值元组创建在只有单个元素的时候,必须加逗号(,),元组里可以嵌套元组。tuple1=(1,)3.列表转化成元组list=[1,2,3,4]

sd=tuple(list)

4.元组的方法排序(sorted)、索引(index)、个数(count)、切片([])Python基础——列表1.列表的概念列表在python里是有序元素集合的对象类型。列表里的对象可以是任何对象:数字,字符串,列表或者字典,元组。与字符串和元组不同,列表是可变对象,支持原处修改的操作。在Python中,用方括号“[]”来表示列表,并用逗号来分隔其中的元素。2.列表的创建、元素访问

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)、个数(count)、切片([])……5.使用迭代方式创建列表示例:list1=[i*4foriin'ASDFEG']6.使用in方法来判断对象是否在列表中aa

=[1,2,3,4,123,446,234]print(123inaa)Python基础——字典1.字典的概念字典在python里是无序集合对象类型。字典的值都有独立的唯一的键,用相应的键来取值。序列运算无效——串联,分片不能使用在Python中,用方括号“{}”来表示字典,并用逗号来分隔其中的元素,用冒号来区分键与值。2.字典的赋值dict={'a':99,'b':108,'c':'test'}

Python基础——字典4.关于字典的值和键keys()方法和values()方法分别提供字典键、值示例1:dict1.keys()3.字典的比较:

字典的比较比较的是字典的键,而不是字典的值,可以使用zip方式将字典的值和键反过来,这样就会比较值了,可以使用sorted函数对字典进行排序。dict1={‘a’:1,‘b’:2,‘c’:3,‘d’:4}dict2=dict(zip(dict1.values(),dict1.keys()))Python基础——集合2.集合的创建方式(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循环 Forvalueincollection: #程序段示例:编写圆周值判断程序。示例:编写for循环程序,求100以内数字的和,包含100。a.可以用continue使for循环提前跳过剩下的部分。示例:创建列表aa=[1,2,3,None,4,None,5],使用for循环求列表aa中所有元素的和。

b.可以用break跳出for循环。示例:创建列表aa=[1,2,3,None,4,None,5],使用for循环求列表aa中出现空值前的所有元素的和。Python基础——Python中的控制流

c.break只中断for循环的最内层,其余的for循环仍会运行。示例:使用for循环编写程序,输出0到3的所有第一个元素大于等于第二个元素的元组。(3)while循环While循环会在符合条件时,一直执行代码块,直到条件判断为False或遇到break时,才会结束。while条件:

#程序段示例1:使用while循环求100以内数的和。示例2:使用while循环求100以内奇数的和。Python基础Random模块1、Python中的random和numpy中的randompython:(一般只能操作一维的列表,多维也视为一维)random.random(),括号中不填参数生成0到1直接之间的随机实数,区间[0,1)random.randint(0,100)生成0到100直接之间的随机整数,区间[0,100]random.randrange(0,100),第一个参数可以省略,默认0,生成0到100直接之间的随机整数,区间[0,100)random.uniform(0,100)生成0到100直接之间的随机浮点数,区间[0,100]random.choice(list/tuple/string)从给定的列表/元组/字符串中随机选中一个元素返回secrets.choice(list/tuple/string)从给定的列表/元组/字符串中随机选中一个元素返回secrets.randbelow(100),括号中只有结束数字,没有开始数字,默认从0开始返回0到100之间的随机整数,区间[0,100)示例:生成10个随机浮点数,下列程序块能成功吗?aa=random.uniform(5,6,size=10)print(aa)Python基础Range函数1、range函数返回⼀个迭代器,它产⽣⼀个均匀分布的整数序列:list(range(10))2、range的三个参数是(起点,终点,步进):list(range(0,20,2))3、range产⽣的整数不包括终点。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的替代方案,现在被视为一种更加现代和完整的编程语言。•ndarray,对数组数据计算非常高效。•Numpy

算法库使用C语言编写,数据传递、返回方式简单。•Numpy可以针对全数组进行复杂运算,不需要编写循环语句。示例:使用列表和ndarray数组进行运算对比,对含有100000个元素的列表和数组进行乘法运算。Python中的numpy模块1、NumPy中定义的最重要的对象是称为ndarray的N维数组类型。2、它描述相同类型的元素集合,可以使用基于零的索引访问集合中的项目。3、ndarray中的每个元素在内存中使用相同大小的块。ndarray中的每个元素是数据类型对象的对象(称为dtype)。NumPy-Ndarray对象创建一个ndarray方法及其构造器参数如下:numpy.array(object,dtype=None,copy=True,order=None,subok=False,ndmin=0)

序号参数及描述1.object

任何暴露数组接口方法的对象都会返回一个数组或任何(嵌套)序列。2.dtype

数组的所需数据类型,可选。3.copy

可选,默认为true,对象是否被复制。4.order

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

默认情况下,返回的数组被强制为基类数组。如果为true,则返回子类。6.ndmin

指定返回数组的最小维数。Python中的numpy模块NumPy-Ndarray对象例1:创建一个一维数组 a=np.array([1,2,3])例2:创建一个二维数组 b=np.array([1,2,3],[1,2,3])例3:为创建的数组指定最小的维度 a=np.array([1,2,3,4,5],ndmin=2)例4:指定数组元素的数据类型 a=np.array([1,2,3],dtype=complex)例5:数组求转置 b=a.TPython中的numpy模块NumPy-Ndarray对象,numpy的数据类型Python中的numpy模块NumPy的数组属性Ndarray.shape:数组属性返回一个包含数组维度的元组,它也可以用于调整数组大小。例1:调整数组的形状的两种方式 a=np.array([[1,2,3],[4,5,6]])b.shape=(3,2)print(b)c=b.reshape(3,2)#元素个数必须与原来保持一致print(c)Ndarray.ndim:数组属性返回数组的维数。例2: a=np.arange(24)print(a.ndim)b=a.reshape(2,4,3)print(b.ndim)print(b)Python中的numpy模块NumPy的数组属性Ndarray.itemsize:数组属性返回返回数组中每个元素的字节单位长度。例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特殊数组的创建方法Numpy.empty#空数组中的元素为随机值,默认数据类型为浮点数Numpy.zerosNumpy.ones构造器:numpy.empty(shape,dtype=float,order='C’)Shape空数组的形状,整数或整数元组Dtype所需的输出数组类型,可选示例1:生成一个5个元素的一维数组,数据类型为int型。示例2:生产一个2维数组,每个维度包含4个元素,数据类型为float型。示例3:生成一个全零的一维数组,元素个数为10个。示例4:生成一个全1的4*2维数组。Python中的numpy模块NumPy将其他类型对象转换成数组的方法numpy.asarray构造器:numpy.asarray(a,

dtype=None,order=None)a:任意形式的输入参数,比如列表、列表的元组、元组、元组的元组、元组的列表例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构造来自数值范围的数组numpy.arrange构造器:numpy.arange(start,stop,step,dtype)Start,默认为0;stop,终止范围不包含;例1:x=np.arange(5)#默认数据类型是int型。y=np.arange(5,dtype=float)z=np.arange(0,20,2,dtype=float)print(x)print(y)print(z)Python中的numpy模块NumPy构造来自数值范围的数组numpy.linspace默认数据类型为浮点数构造器:numpy.linspace(start,stop,num,endpoint,retstep,dtype)Start,默认为0;stop,终止值,如果endpoint为true,该值包含于序列中;num,要生成的元素的数量;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的算数函数NumPy拥有标准的三角函数,它为弧度制单位的给定角度返回三角函数比值。例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的舍入函数:numpy.around(a,decimals)a是要输入数组;decimals要舍入的小数位数。默认值为0,如果为负,整数将四舍五入到小数点左侧的位置例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求数组的方差、标准差例1:print(np.std([1,2,3,4]))print(np.var([1,2,3,4]))pandas模块03Python中的pandas模块1.Pandas的名称来自于面板数据(paneldata)2.Pandas是一个强大的分析结构化数据的工具集,基于NumPy构建,提供了高级数据结构和数据操作工具,它是使Python成为强大而高效的数据分析环境的重要因素之一。3.Pandas的特点: 一个强大的分析和操作大型结构化数据集所需的工具集 基础是NumPy,提供了高性能矩阵的运算 提供了大量能够快速便捷地处理数据的函数和方法 应用于数据挖掘,数据分析 提供数据清洗功能Python中的pandas模块Series数据类型Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成。pandas.Series(data,index,dtype,name,copy)例1:series的创建obj=pd.Series([4,7,-5,3],dtype=16)Series的内容:包含值和索引,通过索引访问值Series可以通过values属性和index属性获取series对象的值和索引。类似于字典,如果有字典,可通过字典直接创建Series例1:使用字典创建series数据类型对象aa={'小熊猫':35000,'云烟':71000,'红河':16000,'大重九':3300}obj3=pd.Series(aa)例2:使用index、values属性获取obj3对象的值和索引Python中的pandas模块DataFrame数据类型DataFrame([data,index,columns,dtype,copy])#构造数据框DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。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')],'产量':[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数据类型如果嵌套字典传给DataFrame,pandas就会被解释为:外层字典的键作为列,内层键则作为⾏索引例1:data1={1:{'日期':datetime.strptime('2022611','%Y%m%d'),'Brand':'印象','产量':222.9,'废烟':0.999},

2:{'日期':datetime.strptime('2022612','%Y%m%d'),'Brand':'小熊猫','产量':111.8,'废烟':0.888},

3:{'日期':datetime.strptime('2022613','%Y%m%d'),'Brand':'云烟','产量':66.66,'废烟':0.777}}frame3=pd.DataFrame(data1)frame4=frame3.Tprint(frame3)print(frame4)Python中的pandas模块DataFrame数据类型使用列表构建DataFrame数据例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数据类型(1)指定数据列的顺序操作:直接改变列的顺序即可,可以增加列DataFrame([data,index,columns,dtype,copy])示例1:利用data字典,生成一个DataFrame对象CC,列的顺序为:序号、日期、牌号、产量示例2:利用data字典,生成一个DataFrame对象DD,列的顺序为:序号、日期、牌号、产量、备注DataFrame数据类型(2)DataFrame的列检索对象名[列标签];对象名[[列标签1,列标签2]];对象名.loc[:,列标签];对象名.loc[:,[列标签1,列标签2,……]];示例1:检索对象CC中,牌号列的值Python中的pandas模块DataFrame数据类型(3)按行检索对象名.loc[索引值];对象名.iloc[索引值];对象名.loc[[索引值1,索引值2]];切片操作:对象名[1:]示例1:检索对象CC中的第一行数据DataFrame数据类型(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数据类型(5)列的赋值将列表或数组赋值给某一列时,值的长度必须与DataFrame的长度相匹配。将Series赋值给某一列,Series的索引将会按照DataFrame的索引重新排列。如果被赋值的列不存在,会自动创建一个列示例:将列表[1,2,3]赋值给产量列;将[1,2,3,4]赋值给产量列。创建一个Series对象,其值为[9,9,9],索引为[1,2,3],赋值给CC中不存在的列Python中的pandas模块读写文本格式的数据pandas提供了一些用于将表格型数据读取为DataFrame对象的函数。Python中的pandas模块读取Excel表中的数据例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数据写入到Excel中例1:writer=pd.ExcelWriter('D:\\examples\\DATA1.xlsx')

frame_read.to_excel(writer,'sheet1')

writer.save()Python连接MySQL数据库——Pymysql库应用(1)使用pymysql.connect()函数连接数据库,创建一个数据库对象示例1:使用pymysql.connect()函数创建名为DB的连接。DB=pymysql.connect(host='localhost',user='root',password='Aa123456',port=3306,database='test_02',charset='utf8mb4')connect()/Connection初始化常用参数说明host主机ip(默认为localhost)user用户名password密码database数据库port端口号(默认值为:3306)charset字符集(utf8mb4)判断连接是否成功:使用DB.open进行判断(2)创建游标cursor当我们开启了游标功能,再去执行这条语句的时候,系统会先帮你找到这些行,先给你存放起来,然后提供了一个游标接口。当你需要数据的时候,就借助这个游标去一行行的取出数据,你每取出一条记录,游标指针就朝前移动一次,一直到取完最后一行数据后。Python连接MySQL数据库——Pymysql库应用为什么要创建游标?SELECT*FROMcigrate_01;Cursor=DB.cursor();#创建游标对象(3)使用游标对象中的execute()方法执行SQL语句sql='select*fromcigrate_01wherec_id<11'#sql语句

Cursor.execute(sql)#执行sql语句Python连接MySQL数据库——Pymysql库应用思考:简洁的写法怎么写?现在可以取出数据了吗?注意:当开启游标功能执行这个SQL语句后,系统只是将执行SQL语句的结果存储起来,提供一个游标接口给我们,当需要获取数据的时候,可以从中拿数据。(4)使用fetchone()或fetchall(),fetchmany(n)获取数据a=Cursor.fetchone()#一次性获取一条数据

b=Cursor.fetchall()#一次性获取所有数据

c

=Cursor.fetchmany(n)#获取n条数据思考:a、b、c获取的数据分别是什么?(5)关闭游标对象

Cursor.close()Python连接MySQL数据库——Pymysql库应用(6)关闭连接对象

DB.close()连接是否关闭判断:DB._closed或者DB.open都可判断。(7)Pymysql实现增、删、改功能和select功能一样,执行完SQL语句后需要确认:mit()示例1:向数据库test_01的表cigrate_01中插入数据:202,0.999,22.22,88.88,1000,4,1,1,1示例2:查询插入的数据是否成功示例3:更新插入的数据吸阻值为2222示例4:删除新插入的数据Python中的pandas模块读取数据库中的数据并保存为DataFrame数据类型使用pandas.DataFrame()对读取出来的数据格式进行转化VAL=pd.DataFrame(a,index=

,columns=[‘列名1’,’列名2’,……])读取数据库中的数据并保存到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库中最重要的函数,用于绘制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)),设置画板的大小:a为宽,b为高2、Subplot()函数用来布置绘图的具体对象。

fig.add_subplot()实例可以创建一个或者多个子图(1)创建一个子图(坐标系)

ax1=fig.add_subplot(1,1,1)#此处必须有三个数字前两个代表维度,后一个代表序号(2)通过设置ax1.plot(x,y,fmt=‘xxx’,linestyle=,marker=,color=,linewidth=,markersize=,label=)方法的参数绘制图形。

其中x,y代表横纵坐标,fmt=‘#color#linestyle#marker’即代表线参数的快速设置顺序。

fmt=‘xxx’Python中的Matplotlib模块(3)ax1.plot()方法快速设置线参数:颜色、标记、线型线的样式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()方法快速设置线参数:

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)不创建画板,直接创建坐标系进行绘图的方法

ax1=plt.subplot2grid((2,2),(0,0))#可以不用创建画布即创建坐标系。

ax2=plt.subplot(2,2,1)#可以在某一块区域直接创建坐标系

(2)通过设置ax1.plot(x,y,fmt=‘xxx’,linestyle=,marker=,color=,linewidth=,markersize=,label=)方法的参数绘制图形。

(3)设置图形相关参数

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()创建并绘制四张图Python中的Matplotlib模块三、通过plt.plot()直接绘图(隐式的生成figure和axes对象)直接通过pyplot模块完成操作(一)准备绘图数据(二)通过plt.plot(x,y,fmt=‘xxx’,linestyle=,marker=,color=,linewidth=,markersize=,label=)方法的参数设置绘制图形参数。(三)

设置图形其它显示参数

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轴坐标数据y=np.linspace(1,100,num=100)#Y轴坐标数据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模块散点图:只画点,但是不用线连接起来,函数:plt.scatter()plt.scatter(x,y,s,c,marker,linewidths,edgecolors)方法的参数说明参数说明xX的值yY的值s每个点的面积(可以使用多个值让每个点不一样)c点的颜色(可以使用多个值让每个点不一样)linewidths点的标记(和折线图中一样)edgecolors点的轮廓颜色Python中的Matplotlib模块散点图:只画点,但是不用线连接起来,函数:plt.scatter()x=np.arange(10)y=np.random.randn(10)#生成10个服从正态分布的浮点数print(y)plt.scatter(x,y,color='red',marker='+')plt.show()plt.scatter()方法的参数说明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)参数说明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)参数说明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)参数说明x数据(必须是一维数组)bins直方图的柱数,即要分的组数,默认为10range元组(tuple)或None;剔除较大和较小的离群值,给出全局范围;如果为None,则默认为(x.min(),x.max());即x轴的范围;density布尔值。如果为true,则返回的元组的第一个参数n将为频率而非默认的频数histtype{‘bar’,‘barstacked’,‘step’,‘stepfilled’}'bar’是传统的条形直方图;'barstacked’是堆叠的条形直方图;'step’是未填充的条形直方图,只有外边框;‘stepfilled’是有填充的直方图;当histtype取值为’step’或’stepfilled’,rwidth设置失效,即不能指定柱子之间的间隔,默认连接在一起;参数说明rwidth标量值或None,柱子的宽度占bins宽的比例;bins直方图的柱数,即要分的组数,默认为10color具体颜色,数组(元素为颜色)或None。label字符串(序列)或None;有多个数据集时,用label参数做标注区分;stacked布尔值。如果取值为True,则输出的图为多个数据集堆叠累计的结果;如果取值为False且histtype=‘bar’或’step’,则多个数据集的柱子并排排列;edgecolor直方图边框颜色;Python中的Matplotlib模块直方图绘制的例子:np.random.seed(3)n_bins=10#直方图分布的数量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')#取数组的其中一维ax3.set_title('differentsamplesizes')#fig.tight_layout()#自动调整布局plt.show()连接PLC04SNAP7连接PLC以字节的方式访问,不能单独访问位M寻址:7654321010.710.610.510.410.310.210.110.0MB10MB11MB12MB13MB14MW10MW12MW11

MD11MB15

MD12

MD10078位数据字节0DBB0数据字节1DBW0数据字节8191DBD8188DBW8190DBB8191数据字节2DBD0数据字节3DBX4.1DB:存储plc数据的数据块DB(块号).DB(X(位),B(字节),W(字2个字节),D(四个字节))DB1.DBX0.0-DB1.DBX0.7DB1.DB0,DB1.DB1DB1.DBW0,DB1.DBW2DB1.DBD0MM1.0MB0MW2MD4IQ连接PLC添加python_snap7库引入SNAP7importsnap7

fromsnap7importutilPython连接PLC——snap7应用(1)创建连接: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的地址读取连接状态ifplc.get_connected():print('success')else:print('fail')

plc.get_connected()返回与PLC的连接状态,返回TRUE,代表连接成功,返回FALSE,代表连接失败(2)读取数据方法1:read_area(area,dbnumber,start,size)area:读取的存储区域,snap7.client.Areas.DB等dbnumber:对于I、Q、M区,数值为0,对于DB块,对应块号。Start:字节起始地址Size:向后读取的字节长度Areas地址区域Areas地址区域PE0X81I区DB0X84DB区PA0X82Q区CT0X1C计数器MK0X83M区TM0X1D定时器(3)读取数据方法2db_read(dbnumber,start,size)ab_read(start,size)#起始字节,宽度(读取output区域)eb_read(start,size)(读取input区域)mb_read(start,size)(4)获取数据有两种方法: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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论