数据科学导论课件第二章Python入门.pptx

上传人:小飞机 文档编号:1294732 上传时间:2022-11-05 格式:PPTX 页数:78 大小:1.88MB
返回 下载 相关 举报
数据科学导论课件第二章Python入门.pptx_第1页
第1页 / 共78页
数据科学导论课件第二章Python入门.pptx_第2页
第2页 / 共78页
数据科学导论课件第二章Python入门.pptx_第3页
第3页 / 共78页
数据科学导论课件第二章Python入门.pptx_第4页
第4页 / 共78页
数据科学导论课件第二章Python入门.pptx_第5页
第5页 / 共78页
点击查看更多>>
资源描述

《数据科学导论课件第二章Python入门.pptx》由会员分享,可在线阅读,更多相关《数据科学导论课件第二章Python入门.pptx(78页珍藏版)》请在三一办公上搜索。

1、1,数据科学导论,第二章 Python 入门,2,主要内容,一 Python 简介二 安装和运行三 试试Python 编程四 Numpy 模块五 Pandas 模块六 Matplotlib 模块,3,一 Python 简介,Python 简介,4,5,Python和R的异同,管理和运行模型 R有统一的志愿团队管理, 语法相对一致, 安装程序包很简单 Python 是一个通用软件, 没有统一团队管理, 针对不同Python 版本的模块非常多. 不同的计算机操作系统, 不同版本的Python, 不同的模块, 安装过程多种多样, 相对复杂. 统计模型 R 主要用于数据分析, 有统计背景的人员会更加偏

2、爱. Python 的统计模型不如R 那么多, 但从其基本语法所产生的成千上万的模块使得它可以做几乎任何想做的事情.,6,二 Python安装和运行,安装及开始体验,在多种运行平台中, 建议使用Anaconda 下载Python Navigator 4, 以获得Jupyter, RStudio, VisualStudio Code等软件界面, 然后运行Python程序. Anaconda 运行优势:包含常用的模块Numpy, Pandas, Matplotlib, 而且安装其他一些模块(比如Sklearn) 比较方便.本书中Python 的介绍是基于Anaconda 的notebook 运行P

3、ython3 的实践.,7,Anaconda的安装,1.进入Anaconda官网下载:https:/,8,Anaconda的安装,2. 下载完直接双击运行即可, 注意环境变量设置页即可.,9,Anaconda测试,安装完Anaconda 后, 就可以在开始菜单栏中运行Jupyter Notebook 了. 也可以通过终端键入cd Python Work 到达工作目录, 再键入jupyter notebook 在默认浏览器产生一个工作界面(称为“Home”).,10,Jupyter Notebook,11,创建一个新的. ipynb文件,点击右上角New 并选择Python3,则产生一个没有名字

4、的(默认是Untitled) 以.ipynb 为扩展名的文件.出现In : 标记, 在其右边的框中输入代码, 然后得到的结果就出现在代码(代码所在的框称为“Cell”) 下面的地方.,12,输入和输出测试,在Cell中 输入 3* Python is easy!Ctrl+Enter 输出 Python is easy! Python is easy! Python is easy!一个Cell 中, 可以一行输入几个简单(不分行的) 命令, 用分号分隔. 要注意,Python 和R 的代码一样是分大小写的. Python 与R 的注释一样, 在# 号后面的符号不会当成代码执行.,13,查看和修

5、改工作目录,import osprint (os.getcwd() #查看目录os.chdir(D:/Python work) #Windows系统中改变工作目录os.chdir(/users/Python work) #OSx系统中改变工作目录,14,查看文件路径,import osfrom os.path import joinfor (dirname, dirs, files) in os.walk(/users/work/):for filename in files:if filename.endswith(.csv) :thefile = os.path.join(dirname,

6、filename)print (thefile,os.path.getsize(thefile),15,16,三 试试Python 编程,试试Python 编程,Python 中的向量、矩阵、列表或其他多元素对象的下标是从0 开始, 请输入下面代码并看输出:y=1,2,1,2,3,ss,swa,sticky2,y2:2,y11:x=A poet can survive everything but a misprint.x:10+x10:20+x20:30+x30:40+x40:,17,首尾连接的下标区间,append, extend 和pop,x=1,2,3,5,7,Oscar Wildey

7、=save,the worldx.append(y);print(x)x.extend(y);print(x)x.pop();print(x)x.pop(2);print(x),18,关于remove 和del,print (2*0.5,2.0*(1/2),2*(1/2.)print( 4/3,4./3 )x=0,1,4,23x.remove(4);print(x)del x0;print (x, type(x),19,关于tuple,x =(0,12,345,67,8,9,we,they)print (type(x),x-4:-1)x=range(2,11,2)print (x=, list

8、(x)=.format(x,list(x)print (type of x is .format(type(x),20,dictionary(字典) 类型,data = age: 34, Children : 1,2, 1: apple,zip: NAprint (type(data)print (age=,dataage)dataage = 99dataname = abcprint (data),21,集合运算,x=set(we,you,he,I,they);y=set(I,we,us)x.add(all);print (x,type(x),len(x)set.add(x,none);pr

9、int (x)print (set.difference(x,y)=, set.difference(x,y)print (set.union(x,y)=,set.union(x,y)print (set.intersection(x,y)=,set.intersection(x,y)x.remove(none); print (x=,x,n,y=, y),22,Id 函数,x=1;y=x;print (x,y,id(x),id(y)x=2.0;print (x,y,id(x),id(y)x = 1, 2, 3;y = x;y0 = 10print (x,y,id(x),id(y)x = 1,

10、 2, 3;y = x:print (x,y,id(x)=id(y),id(x0)=id(y0)print (id(x1)=id(y1),id(x2)=id(y2),23,函数的简单定义,def f(x): return x*2-xg=lambda x: max(x*2,x*3)print (list(map(lambda x: x*2+1-abs(x), 1.2,5.7,23.6,6)print (f(10),g(-3.4)print (list(range(-10,10,2),n, list(filter(lambda x: x0,range(-10,10,2),24,注意函数中的符号和缩

11、进,25,在python 中, 函数, 类, 条件和循环等语句后面有冒号“:”.而随后的行, 要缩进确定数目的若干空格, 和R 中的花括号作用类似.,循环和条件的例子,# 例1 for line in open(UN.txt): for word in line.split(): if word.endswith(er): print (word),26,循环和条件的例子,# 例2with open(UN.txt) as f: lines=f.readlines()lines1:20# 例3x=Just a wordfor i in x: print (i),27,循环和条件的例子,# 例4

12、for i in x.split(): print (i,len(i)# 例5 for i in -1,4,2,27,-34: if i0 and i5: print (abs(i) else: print (4.5*i),28,关于list,x = range(5)y = for i in range(len(x): if float(i/2)=i/2: y.append(xi*2) print (y, y)z=xi*2 for i in range(len(x) if float(i/2)=i/2print (z,z),29,30,四 Numpy 模块,Numpy 模块,Numpy 是高性

13、能科学计算和数据分析的基础包;它是pandas等其他工具的基础。内容包括:强大的N维数组对象Array;比较成熟的函数库;用于整合C/C+和Fortran代码的工具包;实用的线性代数、傅里叶变换和随机数生成函数等。,31,Numpy 模块,导入模块: import numpy, 凡是该模块的命令(比如array) 都要加上 numpy 成为numpy.array. 简写形式: 输入时敲入 import numpy as np numpy.array np.array.,32,数据文件存取,import numpy as npx = np.random.randn(25,5)np.savetxt

14、(tabs.txt,x) #存成制表符分隔的文件np.savetxt(commas.csv,x,delimiter=,)#存成逗号分隔的文件(如csv)u = np.loadtxt(commas.csv,delimiter=,)#读取逗号分隔文件v = np.loadtxt(tabs.txt) #读取逗号分隔文件,33,矩阵和数组,import numpy as npy = np.array(1,4,7,2,5,8,3,6,9, 10,100,1000)print (y)print (np.shape(y)print (type(y),y.dtype)print (y1,0,0,y0,1,:)

15、,34,整形和浮点型数组(向量) 运算,import numpy as npu = 0, 1, 2;v=5,2,7u=np.array(u);v=np.array(v)print (u.shape,v.shape)print (u+v,u/v,np.dot(u,v)u = 0.0, 1, 2;v=5,2,7u=np.array(u);v=np.array(v); print (u+v,u/v); print (v/3, v/3.,v/float(3),(v-2.5)*2),35,向量和矩阵的运算,x=np.arange(3,5,.5)y=np.arange(4)print (x,y,x+y,x

16、*y) #向量计算print (x:,np.newaxis.dot(ynp.newaxis,:)print (np.shape(x),np.shape(y)print (np.shape(x:,np.newaxis),np.shape(ynp.newaxis,:)print (np.dot(x.reshape(4,1),y.reshape(1,4)x.shape=4,1;y.shape=1,4,36,向量和矩阵的运算,rint (x.dot(y); print (np.dot(x,y)print (np.dot(x.T,y.T), x.T.dot(y.T)#x.T是x的转置print (x.r

17、eshape(2,2).dot(np.reshape(y,(2,2)x=2,3,7,5z = np.asmatrix(x)print (z, type(z);print (z.transpose() * z )print (z.T*z= z.T.dot(z),z.transpose()*z=z.T*z)print (np.ndim(z),z.shape),37,按行或列合并矩阵,x = np.array(1.0,2.0,3.0,4.0)y = np.array(5.0,6.0,7.0,8.0)z = np.concatenate(x,y),axis = 0)z1 = np.concatenat

18、e(x,y),axis = 1)print (z,n ,z1,n,z.transpose()*z1)z = np.vstack(x,y) # Same as z = concatenate(x,y),axis = 0)z1 = np.hstack(x,y); print (z,n,z1),38,数组赋值,print (np.ones(2,2,3),np.zeros(2,2,3), np.empty(2,2,3)x=np.random.randn(20).reshape(2,2,5);print (x)x=np.random.randn(20).reshape(4,5)x0,:=np.pi; p

19、rint (x)x0:2,0:2=0; print (x)x:,4=np.arange(4); print (x)x1:3,2:4=np.array(1,2,3,4); print (x),39,行列序列的定义,这里np.c_0:10:2 是从0 到10, 间隔2 的列(c) 序列, 而np.r_1:5:4j 是从1到5, 等间隔地分为4 行的(r) 序列.print (np.c_0:10:2,np.c_0:10:2.shape)print (np.c_1:5:4j,np.c_1:5:4j.shape)print (np.r_1:5:4j,np.r_1:5:4j.shape),40,抽取数组(

20、矩阵) 的子数组,print (np.ogrid0:3,0:2:.5,n,np.mgrid0:3,0:2:.5)print (np.ogrid0:3:3j,0:2:5j,n,np.mgrid0:3:3j,0:2:5j)x = np.reshape(np.arange(25.0),(5,5)print (x=n,x)print (np.ix_(np.arange(2,4),0,1,2)=n,np.ix_(np.arange(2,4),0,1,2),41,抽取数组(矩阵) 的子数组,print (ix_(2,3,0,1,2)=n,np.ix_(2,3, 0,1,2)print (xnp.ix_(n

21、p.arange(2,4),0,1,2)=n, xnp.ix_(np.arange(2,4),0,1,2) print (xix_(3,0,1,4,2)=n, xnp.ix_(3,0,1,4,2)print (x2:4,:3=n,x2:4,:3)print (xix_(0,3,0,1,4)=n,xnp.ix_(0,3, 0,1,4),42,向量和数组的数学运算,x = np.random.randn(3)print (np.round(x,2)=,np.round(x, 4)=.format(np.round(x,2),np.round(x, 4)print (np.around(np.pi,

22、4)=, np.around(np.pi,4)print (np.around(x,3)=, np.around(x,3)print (x.round(3)=,np.floor(x)=. format(x.round(3),np.floor(x).,43,一些函数的操作,x = np.repeat(np.random.randn(3),(2)print (x)print (np.unique(x)y,ind = (np.unique(x, True)print (y=,ind=,xind=,x.flatind=. format(y,ind,xind,x.flatind),44,一些函数的操作,

23、x = np.arange(10.0)y = np.arange(5.0,15.0)print (np.in1d(x,y)=, np.in1d(x,y)print (np.intersect1d(x,y)=, np.intersect1d(x,y)print (np.union1d(x,y)=, np.union1d(x,y),45,一些函数的操作,print (np.setdiff1d(x,y)= , np.setdiff1d(x,y)print (np.setxor1d(x,y)=,np.setxor1d(x,y)x=np.random.randn(4,2)print (x,n,n,np.

24、sort(x,1),n, np.sort(x,axis=None)print (np.sort(x,0),np.sort(x,0),46,一些函数的操作,rint (x.sort(0),x.sort(axis=0) )x=np.random.randn(3)x0=np.nan #赋缺失值print (xnsum(x)=nnp.nansum(x)=.format(x,sum(x),np.nansum(x)print (np.nansum(x)/np.nanmax(x)=, np.nansum(x)/np.nanmax(x),47,分割数组,x = np.reshape(np.arange(24)

25、,(4,6)y = np.array(np.vsplit(x,2)z = np.array(np.hsplit(x,3)print (x=ny=nz=.format(x,y,z)print (x.shape,y.shape,z.shape)print (np.delete(x,1,axis=0) #删除x第2行print (np.delete(x,2,3,axis=1) #删除x第3,4列print (x.flat:, x.flat:4) #把x变成向量,48,矩阵的对角线元素与对角线矩阵,x = np.array(10,2,7,3,5,4,45,76,100, 30,2,0) #same a

26、s Ry=np.diag(x) #对角线元素print (x=ny=.format(x,y)print (np.diag(y)=n,np.diag(y) #由向量形成对角线方阵print (np.triu(x)=n ,np.triu(x) #x上三角阵print (np.tril(x)=n,np.tril(x) #x下三角阵,49,随机数的产生,rint(np.random.randn(2,3) #随机标准正态2x3矩阵 #给定均值矩阵和标准差矩阵的随机正态矩阵:print (np.random.normal(1,0,3,3,2,1,1,1,2, 2,1,1)print (np.random.

27、normal(2,3),(3,1) #均值为2,3标准差为3,1的2个随机正态数print (np.random.uniform(2,3) #均匀U2,3随机数,50,随机数的产生,np.random.seed(1010) #随机种子print (np.random.random(10) #10个随机数(0-1之间)print (np.random.randint(20,100) #20到100之间的随机整数print (np.random.randint(20,100,10) #20到100之间的10个随机整数print (np.random.choice(np.arange(-10,10,

28、3) #从序列随机选一个x=np.arange(10);np.random.shuffle(x);print (x),51,线性代数运算,import numpy as npx=np.random.randn(3,4)print (x)u,s,v= np.linalg.svd(x) #奇异值分解Z=np.array(1,-2j,2j,5)print (Cholsky:, np.linalg.cholesky(Z) #Cholsky分解print (x=nu=ndiag(s)=nv=.format (x,u,np.diag(s),v)print (np.linalg.cond(x) #条件数,5

29、2,线性代数运算,x=np.random.randn(3,3)print (np.linalg.slogdet(x) #行列式的对数(及符号:1.为正-1.为负)print (np.linalg.det(x) #行列式y=np.random.randn(3)print (np.linalg.solve(x,y) #解联立方程,53,线性代数运算,X = np.random.randn(100,2)y = np.random.randn(100)beta, SSR, rank, sv= np.linalg.lstsq(X,y,rcond=None)#最小二乘法print (beta=nSSR=n

30、rank=nsv=.format(beta, SSR, rank, sv) #cov(x)方阵的特征值问题解:va,ve=np.linalg.eig(np.cov(x),54,线性代数运算 续,rint (eigen value=neigen vectors=.format(va,ve)x = np.array(1,.5,.5,1)print (x inverse=, np.linalg.inv(x) #矩阵的逆x = np.asmatrix(x)print (x inverse=, np.asmatrix(x)*(-1) #注意使用*(-1)的限制,55,线性代数运算 续,z = np.kr

31、on(np.eye(3),np.ones(2,2) #单位阵和全1矩阵的Kronecker积print (z=,z.shape=.format(z,z.shape)print (trace(Z)=, rank(Z)=.format(np.trace(z),np.linalg.matrix_rank(z),56,关于日期,import datetime as dtyr, mo, dd = 2016, 8, 30print (dt.date(yr, mo, dd)=,dt.date(yr, mo, dd)hr, mm, ss, ms= 10, 32, 10, 11print (dt.time(hr

32、, mm, ss, ms)=,dt.time(hr, mm, ss, ms)print (dt.datetime(yr, mo, dd, hr, mm, ss, ms)d1 = dt.datetime(yr, mo, dd, hr, mm, ss, ms)d2 = dt.datetime(yr + 1, mo, dd, hr, mm, ss, ms),57,关于日期,print (np.datetime64(2016-08-30T00,h)print (np.datetime64(2016-08-30T00,s)print (np.datetime64(2016-08-30T00,ms)pri

33、nt (np.datetime64(2016-08-30,W)#Upcase!dates = np.array(2016-09-01,2017-09-02,dtype=datetime64)print (dates)print (dates0),58,关于日期,print (d2-d1, d2-d1 )print (np.datetime64(2016)print (np.datetime64(2016-08)print (np.datetime64(2016-08-30)print (np.datetime64(2016-08-30T12:00) #Timeprint (np.datetim

34、e64(2016-08-30T12:00:01)print (np.datetime64(2016-08-30T12:00:01.123456789) # Nanoseconds,59,60,五 Pandas 模块,Pandas模块简介,Pandas模块是数据导入及整理的模块,是数据分析和建模的基础。最初由AQR Capital Management于2008年开发,属于PyData项目的一部分。Pandas名称来源: 面板数据(panel data)和数据分析(data analysis)。Pandas模块的数据结构主要有两:Series(数组), Time- Series(时序数组), D

35、ataFrame(二维表格型数据), Panel (三维的数组)及更高维数组.,61,数据框产生和存储,import pandas as pdnp.random.seed(1010)w=pd.DataFrame(np.random.randn(10,5),columns=X1,X2,X3,X4,Y)v=pd.DataFrame(np.random.randn(20,4),columns=X1,X2,X3,Y)w.to_csv(Test.csv,index=False)writer=pd.ExcelWriter(Test1.xlsx)v.to_excel(writer,sheet1,index=

36、False)w.to_excel(writer,sheet2),62,读入数据,W=pd.read_csv(Test.csv)V=pd.read_excel(Test1.xlsx,sheet2)U=pd.read_table(Test.csv,sep=,)print (V.head()=n,V.head() #头5行print (U.head(2)=n,U.head(2) #头2行print (U.tail(3)=n,U.tail(3) #最后3行print (U.size=nU.columns=.format(U.size, U.columns)U.describe() #简单汇总统计量,6

37、3,一个例子,diamonds=pd.read_csv(diamonds.csv)print (diamonds.head()print (diamonds.describe()print (diamonds.columns=,diamonds.columns)print (sample size=, len(diamonds) #样本量cut=diamonds.groupby(cut) #按照变量cut的水平分群print (cut.median()=n,cut.median()print (Cross table=n,pd.crosstab(diamonds.cut, diamonds.c

38、olor),64,65,六 Matplotlib 模块,Matplotlib 模块,Matplotlib 是 Python 中常用的图形框架.模块对比 numpy可以高效的处理数据、提供数组支持, 是 pandas的基础, pandas则主要用于数据预处理和简单的数据探索. Matplotlib 模块的主要作用是作图,解决可视化问题,66,Matplotlib 模块,import matplotlib.pyplot as plty = np.random.randn(100)plt.plot(y)plt.plot(y,g-)plt.title(Random number)plt.xlabel(

39、Index)plt.ylabel(y)plt.show(),67,几张图形的例子,import scipy.stats as statsfig = plt.figure(figsize=(15,10)ax = fig.add_subplot(2, 3, 1) #2x3图形阵y = 50*np.exp(.0004 + np.cumsum(.01*np.random.randn(100)plt.plot(y)plt.xlabel(time ($tau$)plt.ylabel(Price,fontsize=16)plt.title(Random walk: $dln p_t = mu dt + si

40、gma dW_t$,fontsize=16),68,几张图形的例子,y = np.random.rand(5)x = np.arange(5)ax = fig.add_subplot(2, 3, 5)colors = #FF0000,#FFFF00,#00FF00,#00FFFF,#0000FFplt.barh(x, y, height = 0.5, color = colors, edgecolor = #000000, linewidth = 5)ax.set_title(Bar plot),69,几张图形的例子,y = np.random.rand(5)y = y / sum(y)yy

41、.05 = .05ax = fig.add_subplot(2, 3, 3)plt.pie(y)ax.set_title(Pie plot),70,几张图形的例子,z = np.random.randn(100, 2)z:, 1 = 0.5 * z:, 0 + np.sqrt(0.5) * z:, 1x = z:, 0y = z:, 1ax = fig.add_subplot(2, 3, 4)plt.scatter(x, y)ax.set_title(Scatter plot),71,几张图形的例子,ax = fig.add_subplot(2, 3, 2)x = np.random.rand

42、n(100)ax.hist(x, bins=30, label=Empirical)xlim = ax.get_xlim()ylim = ax.get_ylim(),72,几张图形的例子,pdfx = np.linspace(xlim0, xlim1, 200)pdfy = stats.norm.pdf(pdfx)pdfy = pdfy / pdfy.max() * ylim1plt.plot(pdfx, pdfy,r-,label=PDF)ax.set_ylim(ylim0, 1.2 * ylim1)plt.legend()plt.title(Histogram),73,几张图形的例子,ax

43、 = fig.add_subplot(2, 3, 6)x = np.cumsum(np.random.randn(100,4), axis = 0)plt.plot(x:,0,b-,label = Series 1)plt.plot(x:,1,g-.,label = Series 2)plt.plot(x:,2,r:,label = Series 3),74,几张图形的例子,plt.plot(x:,3,h-,label = Series 4)plt.legend()plt.title(Random lines)plt.show(),75,76,本章的python代码,本章代码,.DS python codeDSchap2.ipynb,77,78,谢谢敬请指正!,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号