1数据科学导论—第二章Python入门2主要内容一Python简介二安装和运行三试试Python编程四Numpy模块五Pandas模块六Matplotlib模块3一Python简介Python简介45Python和R的异同管理和运行模型R有统一的志愿团队管理,语法相对一致,安装程序包很简单Python是一个通用软件,没有统一团队管理,针对不同Python版本的模块非常多.不同的计算机操作系统,不同版本的Python,不同的模块,安装过程多种多样,相对复杂.统计模型R主要用于数据分析,有统计背景的人员会更加偏爱.Python的统计模型不如R那么多,但从其基本语法所产生的成千上万的模块使得它可以做几乎任何想做的事情.6二Python安装和运行安装及开始体验•在多种运行平台中,建议使用Anaconda下载PythonNavigator4,以获得Jupyter,RStudio,VisualStudioCode等软件界面,然后运行Python程序.•Anaconda运行优势:包含常用的模块Numpy,Pandas,Matplotlib,而且安装其他一些模块(比如Sklearn)比较方便.•本书中Python的介绍是基于Anaconda的notebook运行Python3的实践.7Anaconda的安装•1.进入Anaconda官网下载:的安装•2.下载完直接双击运行即可,注意环境变量设置页即可.9Anaconda测试•安装完Anaconda后,就可以在开始菜单栏中运行JupyterNotebook了.•也可以通过终端键入cdPythonWork到达工作目录,再键入jupyternotebook在默认浏览器产生一个工作界面(称为“Home”).10JupyterNotebook11创建一个新的.ipynb文件•点击右上角New并选择Python3,则产生一个没有名字的(默认是Untitled)以.ipynb为扩展名的文件.•出现In[]:标记,在其右边的框中输入代码,然后得到的结果就出现在代码(代码所在的框称为“Cell”)下面的地方.12输入和输出测试•在Cell中输入3*'Pythoniseasy!’•Ctrl+Enter输出'Pythoniseasy!Pythoniseasy!Pythoniseasy!‘•一个Cell中,可以一行输入几个简单(不分行的)命令,用分号分隔.•要注意,Python和R的代码一样是分大小写的.Python与R的注释一样,在#号后面的符号不会当成代码执行.13查看和修改工作目录•importos•print(os.getcwd())•#查看目录•os.chdir('D:/Pythonwork’)•#Windows系统中改变工作目录•os.chdir('/users/Pythonwork’)•#OSx系统中改变工作目录14查看文件路径•importos•fromos.pathimportjoin•for(dirname,dirs,files)inos.walk('/users/work/'):•forfilenameinfiles:•iffilename.endswith('.csv'):•thefile=os.path.join(dirname,filename)•print(thefile,os.path.getsize(thefile))1516三试试Python编程试试Python编程•Python中的向量、矩阵、列表或其他多元素对象的下标是从0开始,请输入下面代码并看输出:•y=[[1,2],[1,2,3],['ss','swa','stick']]•y[2],y[2][:2],y[1][1:]•x='Apoetcansurviveeverythingbutamisprint.'•x[:10]+x[10:20]+x[20:30]+x[30:40]+x[40:]17首尾连接的下标区间append,extend和pop•x=[[1,2],[3,5,7],'OscarWilde']•y=['save','theworld']•x.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,23]•x.remove(4);print(x)•delx[0];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(x)={}'.format(x,list(x)))•print('typeofxis{}'.format(type(x)))20dictionary(字典)类型•data={'age':34,'Children':[1,2],1:'apple','zip':'NA'}•print(type(data))•print('age=',data['age'])•data['age']='99'•data['name']='abc'•print(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');print(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)22Id函数•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;y[0]=10•print(x,y,id(x),id(y))•x=[1,2,3];y=x[:]•print(x,y,id(x)==id(y),id(x[0])==id(y[0]))•print(id(x[1])==id(y[1]),id(x[2])==id(y[2]))23函数的简单定义•deff(x):returnx**2-x•g=lambdax:max(x**2,x**3)•print(list(map(lambdax: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(lambdax:x0,range(-10,10,2))))24注意函数中的符号和缩进25在python中,函数,类,条件和循环等语句后面有冒号“:”.而随后的行,要缩进确定数目的若干空格,和R中的花括号作用类似.循环和条件的例子•#例1forlineinopen(UN.txt):forwordinline.split():ifword.endswith('er’):print(word)26循环和条件的例子#例2withopen('UN.txt')asf:lines=f.readlines()lines[1:20]#例3x='Justaword’foriinx:print(i)27循环和条件的例子#例4foriinx.split():print(i,len(i))#例5foriin[-1,4,2,27,-34]:ifi0andi15:print(i,i**2+i/.5)elifi0andabs(i)5:print(abs(i))else:print(4.5**i)28关于listx=range(5)y=[]foriinrange(len(x)):iffloat(i/2)==i/2:y.append(x[i]**2)print('y',y)z=[x[i]**2foriinrange(len(x))iffloat(i/2)==i/2]print('z',z)2930四Numpy模块Numpy模块•Numpy是高性能科学计算和数据分析的基础包;它是pandas等其他工具的基础。内容包括:–强大的N维数组对象Array;–比较成熟的函数库;–用于整合C/C++和Fortran代码的工具包;–实用的线性代数、傅里叶变换和随机数生成函数等。31Numpy模块•导入模块:importnumpy,•凡是该模块的命令(比如array)都要加上numpy成为numpy.array.•简写形式:输入时敲入importnumpyasnp•numpy.arraynp.array.32数据文件存取•importnumpyasnp•x=np.random.randn(25,5)•np.savetxt('tabs.txt’,x)#存成制表符分隔的文件•np.savetxt('commas.csv',x,delimiter=',’)•#存成逗号分隔的文件(如csv)•u=np.loadtxt('commas.csv',delimiter=',’)•#读取逗号分隔文件•v=np.loadtxt('tabs.txt’)#读取逗号分隔文件33矩阵和数组importnumpyasnpy=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(y[1,0,0],y[0,1,:])34整形和浮点型数组(向量)运算importnumpyasnpu=[0,1,2];v=[5,2,7]u=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,7]u=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*y)#向量计算print(x[:,np.newaxis].dot(y[np.newaxis,:]))print(np.shape(x),np.shape(y))print(np.shape(x[:,np.newaxis]),np.shape(y[np.newaxis,:]))print(np.dot(x.reshape(4,1),y.reshape(1,4)))x.shape=4,1;y.shape=1,436向量和矩阵的运算•print(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.reshape(2,2).dot(np.reshape(y,(2,2))))•x=[[2,3],[7,5]]•z=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.