Overview文件读写*Pandas模块读写常见格式文件*数据可视化2Python程序设计7.1文件读写计算机文件,是存储在某种长期储存设备上的一段数据流。所谓“长期储存设备”一般指磁盘、光盘、磁带等。其特点是所存信息可以长期、多次使用,不会因为断电而消失。计算机文件可分为二种:二进制文件和文本文件图形文件及文字处理程序等计算机程序都属于二进制文件。这些文件含有特殊的格式及计算机代码。文本文件则是可以用文字处理程序阅读的简单文本文件。3Python程序设计文件读写步骤1.打开文件2.处理数据3.关闭文件Python程序设计4显示文件名为7-1.txt的内容,该文件只有一行textFile=open(7-1.txt,rt)#以文本方式打开t=textFile.readline()print(t)textFile.close()binFile=open(7-1.txt,rb)#以二进制方式打开b=binFile.readline()print(b)binFile.close()程序输出:欢迎学习Python语言b'\xbb\xb6\xd3\xad\xd1\xa7\xcf\xb0Python\xd3\xef\xd1\xd4'Python程序设计5open函数fileobj=open(filename,mode)fileobj是open()返回的文件对象filename是该文件的文件名mode是指明文件类型和操作的字符串mode的第一个字母表明对其的操作。mode的第二个字母是文件类型:t(可省略)代表文本类型文件;b代表二进制类型文件。后面的文件处理操作均以文本方式为例。Python程序设计6文件打开模式文件打开模式含义r只读模式(默认)w覆盖写模式(不可读,不存在则新创建;存在则重写新内容)a追加模式(可读,不存在则新创建;存在则只追加内容)x创建写模式(不可读,不存在则新创建;存在则出错)+与r/w/a/x一起使用,增加读写功能t文本类型b二进制类型Python程序设计7文件读写函数名称含义open()打开文件read(size)从文件读取size大小字节数,如果未给定或为负则读取所有内容readline()读取整行readlines()读取所有行并返回列表write(s)把字符串s的内容写入文件writelines(s)向文件写入一个元素为字符串的列表,如果需要换行则要自己加入每行的换行符。seek(off,whence=0)设置文件当前位置tell()返回文件读写的当前位置close()关闭文件。关闭后文件不能再进行读写操作。Python程序设计8【例7-2】文件复制Python程序设计9cj.txt文件是学生一门课的成绩,它的内容如下:978093698790849475768983833372486686988989888763878110080376871779866472987939610070858335需要把这个文件的内容复制到“cjback.txt”文件中。复制文件不需要考虑行结构,用read函数就可以了。程序:source=open(cj.txt,r)back=open(cjback.txt,w)s=source.read()back.write(s)source.close()back.close()【例7-3】计算总评分Python程序设计10文件score.txt是学生一学期的成绩,每一行代表一个学生的成绩,由笔试、平时和实验三部分构成。总评=笔试*50%+平时*25%+实验*25%学号姓名专业笔试平时实验2050921018詹延峰计算数学6585762050921036李小鹏金融学类8695852050921039裴凡法经济学类8695652040912116茅舒瑶社会保障90951002050912017陈见影化学工程6275922050912064梅钦钦材料科学8795802050109153王影平大气科学8689722050151003韩平医化学工程829960readlines函数f=open(score.txt,r)s=f.readlines()print(s)运行结果:['学号姓名专业笔试平时实验\n','2050921018詹延峰计算数学658576\n','2050921036李小鹏金融学类869585\n','2050921039裴凡法经济学类869565\n','2040912116茅舒瑶社会保障9095100\n','2050912017陈见影化学工程627592\n','2050912064梅钦钦材料科学879580\n','2050109153王影平大气科学868972\n','2050151003韩平医化学工程829960\n']Python程序设计11文件逐行读取f=open(score.txt,r)forlineinf.readlines():print(line)程序输出:学号姓名专业笔试平时实验2050921018詹延峰计算数学6585762050921036李小鹏金融学类8695852050921039裴凡法经济学类869565。。。。。。Python程序设计12计算总评分f=open(score.txt,r)head=f.readline()#读表头行newhead=head[:9]+''+head[9:18]+''+head[18:-1]+'总评成绩‘#加空格对齐print(newhead)forlineinf.readlines():l=line.split()#求总评分s=round(int(l[3])*0.5+int(l[4])*0.25+int(l[5])*0.25,2)l[4]=''+l[4]#加空格对齐l[5]=''+l[5]#加空格对齐print(''.join(l)+''+str(s))#加空格对齐Python程序设计13总评成绩学号姓名专业笔试平时实验总评成绩2050921018詹延峰计算数学65857672.752050921036李小鹏金融学类86958588.02050921039裴凡法经济学类86956583.02040912116茅舒瑶社会保障909510093.752050912017陈见影化学工程62759272.752050912064梅钦钦材料科学87958087.252050109153王影平大气科学86897283.252050151003韩平医化学工程82996080.75Python程序设计14重定向Python程序设计15sys.stdin标准输入sys.stdout标准输出sys.stderr标准错误输出importsyss=sys.stdin.readlines()#从文件读入变为从键盘输入print(s)词频统计(取自pintia网站)请编写程序,对一段英文文本,统计其中所有不同单词的个数,以及词频最大的10%的单词。所谓“单词”,是指由不超过80个单词字符组成的连续字符串,但长度超过15的单词将只截取保留前15个单词字符。而合法的“单词字符”为大小写字母、数字和下划线,其它字符均认为是单词分隔符。注意“单词”不区分英文大小写,例如“PAT”和“pat”被认为是同一个单词。输入给出一段非空文本,最后以符号#结尾。输入保证存在至少10个不同的单词。输出按照词频递减的顺序,按照“词频:单词”的格式输出词频最大的前10%的单词。若有并列,则按递增字典序输出。16DataandComputation输入处理“s=sys.stdin.read()”表示重定向为键盘输入“s[:s.find(‘#’)]”表示取输入字符串,以符号“#”结尾Python程序设计17产生词频字典Python程序设计18forkinset([iforiinstrsifi.isalnum()==Falseandi!='_']):strs=strs.replace(k,'')#其它字符均认为是单词分隔符strs=strs.rstrip('').lower().split()#全部变小写counts=dict()foriinstrs:k=i[:15]ifknotincounts:counts[k]=1else:counts[k]+=1排序及输出#词频递减的顺序,若有并列,则按递增字典序ans=sorted(counts.items(),key=lambdax:(-x[1],x[0]))print(len(counts))foriinrange(0,int(0.1*len(counts))):词频最大的前10%的单词print(str(ans[i][1])+':'+ans[i][0])Python程序设计19完整程序importsyss=sys.stdin.read()strs=s[:s.find('#')]#以符号#结尾forkinset([iforiinstrsifi.isalnum()==Falseandi!='_']):strs=strs.replace(k,'')#其它字符均认为是单词分隔符strs=strs.rstrip('').lower().split()#全部变小写counts=dict()foriinstrs:k=i[:15]ifknotincounts:counts[k]=1else:counts[k]+=1#词频递减的顺序,若有并列,则按递增字典序ans=sorted(counts.items(),key=lambdax:(-x[1],x[0]))print(len(counts))foriinrange(0,int(0.1*len(counts))):词频最大的前10%的单词print(str(ans[i][1])+':'+ans[i][0])Python程序设计20*7.2用Pandas模块读写常见格式文件Python的模块函数分三个层次:一.内置函数不用import语句引入,它里面的函数可直接调用。二.标准模块函数用import语句引入后再调用,但不必安装。如math库。三.第三方模块函数需先安装,再用import语句引入模块后才能调用里面的函数,如Pandas模块。Python程序设计21第三方库安装Python程序设计22打开网页:输入模块名,就可查到模块的详细说明pip命令Python程序设计23c:\pipinstallpandas安装pandas模块Pandas模块Pandas是python的一个数据分析包,Pandas最初被作为金融数据分析工具而开发出来,Pandas为时间序列分析提供了很好的支持。Pandas是基于NumPy的一种工具。Pandas纳入了大量函数和一些标准的数据模型,提供了高效地操作大型数据集所需的工具,提供了大量能使我们快速便捷地处理数据的函数和方法,它是使Python成为强大而高效的数据分析环境的重要因素之一。Python程序设计24Plotly模块Plotly是一个基于JavaScript的动态绘图模块。Plotly的绘图效果与我们在网页上看到的动态交互式绘图结果是一样的,其默认的绘图结果是一个HTML网页文件,通过浏览器就可以查看。Plotly有着自己强大又丰富的绘图库,支持各种类型的绘图方案。Plotly是基于JavaScript的绘图库,所以其绘图结果可以与web应用无缝集成。Plotly最初是一款商业化的绘图软件,自plotly.js开源之后,我们可以使用本地的离线模式进行绘图,不依赖于官方的服务器,使得绘图速度更快,而效果与在线绘图一样,这也是目前使用Plotly绘图的主流模式。fromplotly.offlineimportplot网址: