




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 Python是数据科学家最喜欢的语言之一。Python本身就是一门工程性语言,数据科学家用Python实现的算法,可以直接用在产品中。 Python的科学计算方面相关类库非常多,常用的有:NumPy、SciPy、Matplotlib、Pandas、StatsModels、Scikit-Learn、Keras、Gensim等。高性能的科学计算类库NumPy和SciPy,给其他高级算法打了非常好的基础,Matplotlib让Python画图变得像Matlab一样简单。第10章 科学计算 学习重点或难点: NumPy的基本使用 SciPy的基本使用 Matplotlib的基本使用 NumPy是一个
2、定义了数值数组和矩阵类型和它们的基本运算的语言扩展;SciPy是另一种使用NumPy来做高等数学、信号处理、优化、统计和许多其它科学任务的语言扩展;Matplotlib是一个帮助绘图的语言扩展。NumPy、SciPy、Matplotlib堪称为Python科学计算的三剑客。第10章 科学计算10.1 NumPy等的安装10.2 NumPy基本应用10.3 SciPy基本应用10.4 Matplotlib基本应用10.5 数据分析模块pandas第10章 科学计算10.1 NumPy等的安装(1)安装Numpy() cmd管理员模式(启动命令窗口),输入:pip install numpy。nu
3、mpy会自己开始下载安装,等待它提示成功即可。(2)安装SciPy() 打开 https:/sourceforge.Net/projects/scipy/files/scipy/0.15.1/。有很多个压缩包,找到适合Python 2.7.x并且下载量比较多的某个exe版,运行之一直下一步就OK。(3)安装MatPlotLib() cmd管理员模式,直接复制粘贴下面的命令,安装完成后会提示完成,就OK了。 python -m pip install -U pip setuptools python -m pip install matplotlib 因为MatplotLib的使用需要Numpy
4、的支持,所以应先装NumPy再装MatplotLib。10.1 NumPy等的安装 另外,Numpy、SciPy、MatplotLib也都可以下载它们的exe文件来安装,下载地址: NumPy:/projects/numpy/files/NumPy/1.9.2/ SciPy:/projects/scipy/files/scipy/0.15.1/ MatPlotLib: /downloads.html 其中,NumPy和SciPy没有32和64位的区别,MatPlotLib需要根据自己的系统选择32位和64位的。再次提醒,这三个库一定都要下载对应版本的exe文件。下载完成后依次安装就可,它们会自
5、动找到之前安装好的Python所在的路径的。 实际上,Numpy、SciPy、MatplotLib的安装还可以下载安装包实现。譬如,下载相应的Numpy安装包(.whl格式的)。安装时,先进入whl安装包的存放目录。再使用命令行安装:pip install numpy文件名.whl。10.1 NumPy等的安装 在Linux下安装Numpy、SciPy、MatplotLib一般通过如下命令实现:1)apt install python-pip/python3-pip #安装pip 或 pip32)pip/pip3 install numpy #给 Python2.x/Python3.x 安装3
6、)pip/pip3 install scipy #给 Python2.x 安装/Python3.x 安装4)pip/pip3 install matplotlib #给 Python2.x 安装/Python3.x 安装 安装后,证明Numpy、SciPy、MatplotLib是否安装成功。分别import numpy、import scipy、import matplotlib试着导入。如果没报错一般就安装好了,并可试着使用。 例如: 使用Numpy: import numpy as npprint(np.random.rand(4,4) # 输出一个随机的44的矩阵10.2 NumPy基本
7、应用 NumPy提供了两种基本的对象:ufunc(Universal Function Object)ndarray(N-dimensional array object) ndarray(下文统一称之为数组)是存储单一数据类型的多维数组,而ufunc则是能够对数组进行处理的函数。10.2.1 ndarray对象 示例程序假设用以“import numpy as np”方式导入NumPy函数库。 这样,在Python交互操作界面,dir(np)能列出NumPy模块里定义的所有模块、变量和函数等的名称(具体略)。要获得某个名称的详细帮助信息,可以发help命令,如: help(np.array)
8、 就能获得array函数的详细帮助信息,包括使用例子等。 后续模块的学习使用都应该参照这里dir()与help()函数的使用方法。10.2.1 ndarray对象1、创建 首先需要创建数组才能对其进行其它操作。 可以通过给array函数传递Python的序列对象创建数组,如果传递的是多层嵌套的序列,将创建多维数组(下例中的变量c):10.2.1 ndarray对象 a = np.array(1, 2, 3, 4) b = np.array(5, 6, 7, 8) c = np.array(1, 2, 3, 4,4, 5, 6, 7, 7, 8, 9, 10) b # array(5, 6, 7
9、, 8) carray(1, 2, 3, 4,4, 5, 6, 7,7, 8, 9, 10) c.dtype #dtype(int32) 数组的大小可以通过其shape属性获得: a.shape # (4,) c.shape # (3, 4)10.2.1 ndarray对象2、存取元素 数组元素的存取方法和Python的标准方法相同: a = np.arange(10) a5 #5 # 用整数作为下标可以获取数组中的某个元素 a3:5 # 用范围作为下标获取数组的一个切片,包括a3不包括a5array(3, 4) a:5 # array(0, 1, 2, 3, 4) # 省略开始下标,表示从a
10、0开始 a:-1 # 下标可以使用负数,表示从数组后往前数10.2.1 ndarray对象array(0, 1, 2, 3, 4, 5, 6, 7, 8) a2:4 = 100,101 # 下标还可以用来修改元素的值 a # array( 0, 1, 100, 101, 4, 5, 6, 7, 8, 9) a1:-1:2 #范围中的第三个参数表示步长,2表示隔一个元素取一个元素array( 1, 101, 5, 7) a:-1 #省略范围的开始下标和结束下标,步长为-1,整个数组头尾颠倒array( 9, 8, 7, 6, 5, 4, 101, 100, 1, 0) a5:1:-2 # 步长为
11、负数时,开始下标必须大于结束下标array( 5, 101)10.2.1 ndarray对象3、使用整数序列 当使用整数序列对数组元素进行存取时,将使用整数序列中的每个元素作为下标,整数序列可以是列表或者数组。使用整数序列作为下标获得的数组不和原始数组共享数据空间。10.2.1 ndarray对象 x = np.arange(10,1,-1) x # array(10, 9, 8, 7, 6, 5, 4, 3, 2) x3,3,1,8 #获取x中下标为3,3,1,8的4个元素,组成一个新数组array(7, 7, 9, 2) b = xnp.array(3,3,-3,8) #下标可以是负数 b
12、2 = 100 b # array(7, 7, 100, 2) x # 由于b和x不共享数据空间,因此x中的值并没有改变array(10, 9, 8, 7, 6, 5, 4, 3, 2) x3,5,1 = -1, -2, -3 # 整数序列下标也可以用来修改元素的值 x # array(10, -3, 8, -1, 6, -2, 4, 3, 2)10.2.1 ndarray对象4、使用布尔数组 当使用布尔数组b作为下标存取数组x中的元素时,将收集数组x中所有在数组b中对应下标为True的元素。使用布尔数组作为下标获得的数组不和原始数组共享数据空间,注意这种方式只对应于布尔数组,不能使用布尔列表
13、。10.2.1 ndarray对象 x = np.arange(5,0,-1) x # array(5, 4, 3, 2, 1) xnp.array(True, False, True, False, False) # array(5, 3) # 布尔数组中下标为0、2的元素为True,因此获取x中下标为0、2的元素 xTrue, False, True, False, False # 如果是布尔列表,则把True当作1, False当作0,按照整数序列方式获取x中的元素,如:x1, 0,1, 0, 0,则得:array(4, 5, 4, 5, 5) xnp.array(True, False
14、, True, True, False)array(5, 3, 2) xnp.array(True, False, True, True, False) = -1, -2, -3 # 布尔数组下标也可以用来修改元素 x # array(-1, 4, -2, -3, 1)10.2.1 ndarray对象5、多维数组 多维数组的存取和一维数组类似,因为多维数组有多个轴,因此它的下标需要用多个值来表示,NumPy采用元组(Tuple)作为数组的下标。如图10-1所示,a为一个6 * 6的数组,图中给出了各个下标以及其对应的选择区域。 元组不需要圆括号。虽然前面经常在Python中用圆括号将元组括起来
15、,但是其实元组的语法定义只需要用逗号隔开即可,例如 x,y=y,x 就是用元组交换变量值的一个例子。10.2.1 ndarray对象 如何创建这个数组?也许会对如何创建a这样的数组感到好奇,数组a实际上是一个加法表,纵轴的值为0, 10, 20, 30, 40, 50;横轴的值为0, 1, 2, 3, 4, 5。纵轴的每个元素都和横轴的每个元素求和,就得到图中所示的数组a。可以用下面的语句创建它,至于其原理这里略: np.arange(0, 60, 10).reshape(-1, 1) + np.arange(0, 6)array( 0, 1, 2, 3, 4, 5, 10, 11, 12,
16、13, 14, 15, 20, 21, 22, 23, 24, 25, 30, 31, 32, 33, 34, 35, 40, 41, 42, 43, 44, 45, 50, 51, 52, 53, 54, 55)10.2.2 ufunc运算 ufunc是universal function的缩写,它是一种能对数组的每个元素进行操作的函数。NumPy内置的许多ufunc函数都是在C语言级别实现的,因此它们的计算速度非常快。10.2.2 ufunc运算 来看一个例子: x = np.linspace(0, 2*np.pi, 10)对数组x中的每个元素进行正弦计算,返回一个同样大小的新数组 y =
17、 np.sin(x) yarray( 0.00000000e+00, 6.42787610e-01, 9.84807753e-01, 8.66025404e-01, 3.42020143e-01, -3.42020143e-01, -8.66025404e-01, -9.84807753e-01, -6.42787610e-01, -2.44921271e-16)10.2.2 ufunc运算 先用linspace产生一个从0到2*PI的等距离的10个数,然后将其传递给sin函数,由于np.sin是一个ufunc函数,因此它对x中的每个元素求正弦值,然后将结果返回,并且赋值给y。计算之后x中的值
18、并没有改变,而是新创建了一个数组保存结果。如果希望将sin函数所计算的结果直接覆盖到数组x上去的话,可以将要被覆盖的数组作为第二个参数传递给ufunc函数。例如: t = np.sin(x,x) xarray( 0.00000000e+00, 6.42787610e-01, 9.84807753e-01, 8.66025404e-01, 3.42020143e-01, -3.42020143e-01, -8.66025404e-01, -9.84807753e-01, -6.42787610e-01, -2.44921271e-16) id(t) = id(x) # True10.2.3 矩阵
19、运算 NumPy和Matlab不一样,对于多维数组的运算,缺省情况下并不使用矩阵运算,如果希望对数组进行矩阵运算的话,可以调用相应的函数。10.2.3 矩阵运算 matrix对象:numpy库提供了matrix类,使用matrix类创建的是矩阵对象,它们的加减乘除运算缺省采用矩阵方式计算,因此用法和matlab十分类似。但是由于NumPy中同时存在ndarray和matrix对象,因此用户很容易将两者弄混。这有违Python的“显式优于隐式”的原则,因此并不推荐在较复杂的程序中使用matrix。下面是使用matrix的一个例子: a = np.matrix(1,2,3,5,5,6,7,9,9)
20、 a*a*-1matrix( 1.00000000e+00, 1.66533454e-16, -8.32667268e-17, -2.77555756e-16, 1.00000000e+00, -2.77555756e-17, 1.66533454e-16, 5.55111512e-17, 1.00000000e+00) 因为a是用matrix创建的矩阵对象,因此乘法和幂运算符都变成了矩阵运算,于是上面计算的是矩阵a和其逆矩阵的乘积,结果是一个单位矩阵。10.2.3 矩阵运算 矩阵的乘积可以使用dot函数进行计算。对于二维数组,它计算的是矩阵乘积,对于一维数组,它计算的是其点积或内积(两一维数
21、组对应元素乘积之和)。当需要将一维数组当作列矢量或者行矢量进行矩阵运算时,推荐先使用reshape函数将一维数组转换为二维数组: a = array(1, 2, 3) a.reshape(-1,1)array(1, 2, 3) a.reshape(1,-1) # array(1, 2, 3) 除了dot计算乘积之外,NumPy还提供了inner和outer等多种计算乘积的函数。这些函数计算乘积的方式不同,尤其是当对于多维数组的时候,更容易搞混。10.2.3 矩阵运算dot: 对于两个一维的数组,计算的是这两个数组对应下标元素的乘积和(数学上称之为内积);对于二维数组,计算的是两个数组的矩阵乘积
22、;对于多维数组,它的通用计算公式如下,即结果数组中的每个元素都是: 数组a的最后一维上的所有元素与数组b的倒数第二位上的所有元素的乘积和: dot(a, b)i,j,k,m = sum(ai,j,: * bk,:,m)10.2.3 矩阵运算 下面以两个3位数组的乘积演示一下dot乘积的计算结果: 首先创建两个3维数组,这两个数组的最后两维满足矩阵乘积的条件: a = np.arange(12).reshape(2,3,2) b = np.arange(12,24).reshape(2,2,3) c = np.dot(a,b) dot乘积的结果c可以看作是数组a,b的多个子矩阵的乘积: np.a
23、lltrue( c0,:,0,: = np.dot(a0,b0) ) # True np.alltrue( c1,:,0,: = np.dot(a1,b0) ) # True np.alltrue( c0,:,1,: = np.dot(a0,b1) ) # True np.alltrue( c1,:,1,: = np.dot(a1,b1) ) # True10.2.3 矩阵运算 矩阵中更高级的一些运算可以在NumPy的线性代数子库linalg中找到。例如inv函数计算逆矩阵,solve函数可以求解多元一次方程组。 下面是solve函数的一个例子: a = np.random.rand(10,1
24、0) b = np.random.rand(10) x = np.linalg.solve(a,b) np.sum(np.abs(np.dot(a,x)-b) solve函数有两个参数a和b。a是一个N*N的二维数组,而b是一个长度为N的一维数组,solve函数找到一个长度为N的一维数组x,使得a和x的矩阵乘积正好等于b,数组x就是多元一次方程组的解。有关线性代数方面的进一步内容这里略。10.2.4 文件存取 NumPy提供了多种文件操作函数方便存取数组内容。文件存取的格式分为两类:二进制和文本。 而二进制格式的文件又分为NumPy专用的格式化二进制类型和无格式类型。10.2.4 文件存取 使
25、用数组的方法函数tofile可以方便地将数组中数据以二进制的格式写进文件。tofile输出的数据没有格式,因此用numpy.fromfile读回来的时候需要自己格式化数据: a = np.arange(0,12) a.shape = 3,4 aarray( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11) a.tofile(a.bin) b = np.fromfile(a.bin, dtype=np.float) # 按照float类型读入数据 b # 读入的数据是错误的10.2.4 文件存取array( 2.12199579e-314, 6.36598737e-31
26、4, 1.06099790e-313, 1.48539705e-313, 1.90979621e-313, 2.33419537e-313) a.dtype # dtype(int32) # 查看a的dtype b = np.fromfile(a.bin, dtype=32) # 按照int32类型读入数据 b # 数据是一维的array( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11) b.shape = 3, 4 # 按照a的shape修改b的shape b # 这次终于正确了array( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
27、) 从上面的例子可以看出,需要在读入的时候设置正确的dtype和shape才能保证数据一致。此外,如果fromfile和tofile函数调用时指定了sep关键字参数的话,数组将以文本格式输入输出。10.2.4 文件存取 前面所举的例子都是传递的文件名,也可以传递已经打开的文件对象,例如对于load和save函数来说,如果使用文件对象的话,可以将多个数组储存到一个npy文件中: a = np.arange(8) b = np.add.accumulate(a) c = a + b f = file(result.npy, wb) np.save(f, a) # 顺序将a,b,c保存进文件对象f
28、np.save(f, b); np.save(f, c) f.close() f = file(result.npy, rb) np.load(f) # 顺序从文件对象f中读取内容array(0, 1, 2, 3, 4, 5, 6, 7) np.load(f) # array( 0, 1, 3, 6, 10, 15, 21, 28) np.load(f) # array( 0, 2, 5, 9, 14, 20, 27, 35)10.3 SciPy基本应用 SciPy函数库在NumPy库的基础上增加了众多的数学、科学以及工程计算中常用的库函数。例如线性代数、常微分方程数值求解、信号处理、图像处理
29、、稀疏矩阵等等。 SciPy的帮助信息请访问:/。10.3.1 常数与特殊函数1、SciPy常数 SciPy有scipy.constants常数模块,其中的常数有: from scipy import constants as C C.pi # 3.141592653589793 # 值 C.golden # 1.618033988749895 # 黄金比例 C.c # 299792458.0 # 真空中的光速 C.h # 6.62606957e-34 # 普朗克常数10.3.1 常数与特殊函数2、SciPy特殊函数 scipy.special是特殊函数模块。special模块是一个非常完整的
30、函数库,其中包含了基本数学函数、特殊数学函数以及NumPy中出现的所有函数。常用特殊函数求值: 1)伽玛函数,gamma函数是阶乘函数在实数和复数范围上的扩展。伽玛函数值计算: import scipy.special as S S.gamma(0.5) # 1.772458509055159 S.gamma(1+1j) # gamma 函数支持复数 (0.49801566811835629-0.15494982836181106j ) S.gamma(1000) # inf # inf是无穷大10.3.1 常数与特殊函数 2)对数伽玛函数,S.gammaln(x)计算ln(|gamma(x)
31、|)的值,它使用特殊的算法,直接计算gamma函数的对数值,因此可以表示更大的范围。S.gammaln(1000) # 5905.2204232091817 3)log1p(x),log1p(x)计算log(1+x)的值,当x非常小时,log1p(x)约等于x。当使用log1p()时,则可以很精确地计算。 S.log1p(1e-20) # 9.9999999999999995e-2110.3.2 SciPy简单应用1、最小二乘拟合 假设有一组实验数据(xi, yi),我们知道它们之间的函数关系:y = f(x),通过这些已知信息,需要确定函数中的一些参数项。例如,如果f是一个线型函数f(x)
32、= k*x+b,那么参数k和b就是我们需要确定的值。如果将这些参数用 p 表示的话,那么我们就是要找到一组 p 值使得如下公式中的S函数最小:这种算法被称之为最小二乘拟合(Least-square fitting) SciPy中的子函数库optimize已经提供了实现最小二乘拟合算法的函数leastsq。10.3.2 SciPy简单应用【例10-1】 用leastsq进行数据拟合的示例。import numpy as np, pylab as plfrom scipy.optimize import leastsqdef func(x, p): # 数据拟合所用的函数: A*sin(2*pi*
33、k*x + theta) A, k, theta = p return A*np.sin(2*np.pi*k*x+theta)def residuals(p, y, x): 实验数据x, y和拟合函数之间的差,p为拟合需要找到的系数 return y - func(x, p)x = np.linspace(0, -2*np.pi, 100)A, k, theta = 10, 0.34, np.pi/6 # 真实数据的函数参数y0 = func(x, A, k, theta) # 真实数据y1 = y0 + 2 * np.random.randn(len(x) # 加入噪声之后的实验数据p0 =
34、 7, 0.2, 0 # 第一次猜测的函数拟合参数# 调用leastsq进行数据拟合,residuals为计算误差的函数# p0为拟合参数的初始值,args为需要拟合的实验数据plsq = leastsq(residuals, p0, args=(y1, x)print(u真实参数:, A, k, theta)print(u拟合参数, plsq0) # 实验数据拟合后的参数pl.plot(x, y0, label=u真实数据)pl.plot(x, y1, label=u带噪声的实验数据)pl.plot(x, func(x, plsq0), label=u拟合数据)pl.legend(); pl
35、.show() 这个例子中我们要拟合的函数是一个正弦波函数,它有三个参数 A, k, theta ,分别对应振幅、频率、相角。假设我们的实验数据是一组包含噪声的数据 x, y1,其中y1是在真实数据y0的基础上加入噪声的到了。10.3.2 SciPy简单应用 通过leastsq函数对带噪声的实验数据x, y1进行数据拟合,可以找到x和真实数据y0之间的正弦关系的三个参数: A, k, theta。下面是程序的输出: 真实参数: 10, 0.34000000000000002, 0.52359877559829882 拟合参数 -9.84152775 0.33829767 -2.68899335
36、10.3.2 SciPy简单应用2、非线性方程组求解 optimize库中的fsolve函数可以用来对非线性方程组进行求解。它的基本调用形式:fsolve(func, x0)。func(x)是计算方程组误差的函数,它的参数x是一个矢量,表示方程组的各个未知数的一组可能解,func返回将x代入方程组之后得到的误差;x0为未知数矢量的初始值。 如果要对如下方程组进行求解的话: f1(u1,u2,u3) = 0; f2(u1,u2,u3) = 0; f3(u1,u2,u3) = 0 那么func可以如下定义:def func(x): u1,u2,u3 = x return f1(u1,u2,u3),
37、 f2(u1,u2,u3), f3(u1,u2,u3)10.3.2 SciPy简单应用【例10-2】 非线性方程组求解示例,求解如下方程组的解: 5*x1 + 3 = 0 4*x0*x0 - 2*sin(x1*x2) = 0 x1*x2 - 1.5 = 0程序如下:from scipy.optimize import fsolvefrom math import sin,cosdef f(x): x0 = float(x0); x1 = float(x1); x2 = float(x2) return 5*x1+3, 4*x0*x0 - 2*sin(x1*x2), x1*x2 - 1.5 re
38、sult = fsolve(f, 1,1,1)print(result) # -0.70622057, -0.6, -2.5 print(f(result) # 0.0,-9.126033262418787e-14, 5.329070518200751e-1510.4 Matplotlib基本应用 Matplotlib是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图。该包下面有很多对象,比如pylab,pyplot等等,pylab集成了pyplot和numpy两个模块,能够进行快速绘图。 Pylab和pyplot都能够通过对象或者属性对图像进
39、行操作。Pyplot下也有很多对象,如figure,Axes对象等等,对图像进行细节处理。 10.4 Matplotlib基本应用 Matplotlib的文档相当完备,网站上Gallery页面中有上百幅缩略图,打开之后都有源程序。因此如果你需要绘制某种类型的图,只需要在这个页面中浏览/复制/粘贴一下,基本上都能搞定。本节作为matplotlib的入门介绍,将简单介绍几个例子,从中理解和学习matplotlib绘图的一些基本概念 Matplotlib的帮助信息请访问: /10.4.1 绘制散点图与曲线图【例10-3】 调用pyplot.scatter函数画散点图。程序如下:import nump
40、y as np, matplotlib.pyplot as pltx = np.arange(0,20,2); y = np.linspace(0,20,10)plt.figure(); plt.scatter(x,y,c=r,marker=*)plt.xlabel(X); plt.ylabel(Y)plt.title($X*Y$)plt.show() # 说明:plt.scatter函数也可以画不同大小点的散点图又如:n = 1024; X=np.random.normal(0,1,n); Y=np.random.normal(0,1,n)plt.scatter(X,Y); plt.show
41、() # 绘制的图如图10-4所示10.4.1 绘制散点图与曲线图【例10-4】 通过plot函数画多种曲线(如图10-5)。程序如下:import numpy as np; import matplotlib.pyplot as plta = plt.subplot(1,1,1)x = np.arange(0.,3.,0.1)# 这里b表示blue,g表示green,r表示red,-表示连接线,-表示虚线链接a1 = a.plot(x, x, bx-, label = line 1)a2 = a.plot(x, x*2, g-, label = line2)a3 = a.plot(x, x*
42、3, gv-, label = line3)a4 = a.plot(x, 3*x, ro-, label = line4)a5 = a.plot(x, 2*x, r*-, label = line5)a6 = a.plot(x, 2*x+1, ro-, label = line6)plt.title(My matplotlib learning) #标记图的题目、x和y轴plt.xlabel(X); plt.ylabel(Y)handles, labels = a.get_legend_handles_labels() #显示图例a.legend(handles:-1, labels:-1)p
43、lt.show()10.4.2 绘制正弦余弦曲线【例10-5】 用matplotlib绘制的正弦余弦曲线(如图10-6)。程序如下:import numpy as np, matplotlib, matplotlib.pyplot as pltX = np.linspace(-np.pi,+np.pi,256); Y = np.sin(X); Y2= np.cos(X)fig = plt.figure(figsize=(8,6), dpi=72,facecolor=white)axes = plt.subplot(111)axes.plot(X,Y, color = blue, linewid
44、th=2, linestyle=-)axes.set_xlim(X.min(),X.max()axes.set_ylim(1.01*Y.min(),1.01*Y.max()axes.plot(X,Y2, color = red, linewidth=2, linestyle=-)axes.set_xlim(X.min(),X.max()axes.set_ylim(1.01*Y2.min(),1.01*Y2.max()axes.spinesright.set_color(none)axes.spinestop.set_color(none)10.4.2 绘制正弦余弦曲线axes.xaxis.se
45、t_ticks_position(bottom)axes.spinesbottom.set_position(data,0)axes.yaxis.set_ticks_position(left)axes.spinesleft.set_position(data,0)plt.show()10.5 数据分析模块pandas pandas 是一个开源的软件,它具有 BSD 的开源许可,为 Python 编程语言提供高性能,易用数据结构和数据分析工具。在数据改动和数据预处理方面,Python 早已名声显赫,但是在数据分析与建模方面,Python 是个短板。pandas 软件就填补了这个空白,能让你用
46、Python 方便地进行数据的处理,而不用转而选择更主流的专业语言,例如R语言。 pandas的帮助信息请访问: /10.5 数据分析模块pandas1、pandas的数据结构 在pandas中有两类非常重要的数据结构,即序列Series和数据框DataFrame。 Series类似于numpy中的一维数组,除了通用一维数组可用的函数或方法,而且其可通过索引标签的方式获取数据,还具有索引的自动对齐功能;DataFrame类似于numpy中的二维数组,同样可以通用numpy数组的函数和方法,而且还具有其他灵活应用。10.5 数据分析模块pandas(1)Series的创建 序列的创建主要有三种方
47、式:1)通过一维数组创建序列import numpy as np, pandas as pdarr1 = np.arange(10)arr1 # type(arr1)s1 = pd.Series(arr1)s1 # type(s1)2)通过字典的方式创建序列dic1 = a:10,b:20,c:30,d:40,e:50dic1 # type(dic1)s2 = pd.Series(dic1)s2 # type(s2) 3)通过DataFrame中的某一行或某一列创建序列10.5 数据分析模块pandas(2)DataFrame的创建数据框的创建主要有三种方式:1)通过二维数组创建数据框arr2 = np.array(np.arange(12).reshape(4,3)arr2 # type(arr2)df1 = pd.DataFrame(arr2)df1 # type(df1)10.5 数据分析模
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025汽车交易合同范本
- 2025版合同协议模板
- 路桥施工公司推土机租赁合同
- 木材板材购销合同范本
- 个人借款还款合同范本
- 2025北京办公室租赁合同范本
- 2025合伙型投资基金合同范本
- 广播对接协议书范本
- 产权移交协议书范本
- 2025年03月浙江杭州市萧山区事业单位招录50人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 医保业务培训大纲
- 2025年中国短圆柱滚子轴承市场调查研究报告
- 教师的情绪管理课件
- 湖北省十一校2024-2025学年高三第二次联考数学试卷(解析版)
- 英语-华大新高考联盟2025届高三3月教学质量测评试题+答案
- 《手工制作》课件-幼儿园挂饰
- 【初中地理】西亚+课件-2024-2025学年人教版地理七年级下册
- 鼓励员工发现安全隐患的奖励制度
- 苏教版一年级下册数学全册教学设计(配2025年春新版教材)
- 【特易资讯】2025中国二手车行业出口分析及各国进口政策影响白皮书
- (一诊)2025年兰州市高三诊断考试生物试卷(含官方答案)
评论
0/150
提交评论