《Python文件操作PPT55页》由会员分享,可在线阅读,更多相关《Python文件操作PPT55页(57页珍藏版)》请在金锄头文库上搜索。
1、第第7章章文件文件Overview文件文件读写写*Pandas模模块读写常写常见格式文件格式文件*数据可数据可视化化2Python程序设计程序设计7.1 文件文件读写写计算机文件,是存储在某种长期储存设备上的一段数据流。所谓“长期储存设备”一般指磁盘、光盘、磁带等。其特点是所存信息可以长期、多次使用,不会因为断电而消失。计算机文件可分为二种:二进制文件和文本文件图形文件及文字处理程序等计算机程序都属于二进制文件。这些文件含有特殊的格式及计算机代码。文本文件则是可以用文字处理程序阅读的简单文本文件。3Python程序设计程序设计文件读写步骤1.打开文件2.处理数据3.关闭文件4Python程序设
2、计程序设计显示文件名为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语言bxbbxb6xd3xadxd1xa7xcfxb0Pythonxd3xefxd1xd45Python程序设计程序设计open函数fileobj=open(filename,mode)fileobj是o
3、pen()返回的文件对象filename是该文件的文件名mode是指明文件类型和操作的字符串mode的第一个字母表明对其的操作。mode的第二个字母是文件类型:t(可省略)代表文本类型文件;b代表二进制类型文件。后面的文件处理操作均以文本方式为例。6Python程序设计程序设计文件打开模式文件打开模式含义r只读模式(默认)w覆盖写模式(不可读,不存在则新创建;存在则重写新内容)a追加模式(可读,不存在则新创建;存在则只追加内容)x创建写模式(不可读,不存在则新创建;存在则出错)+与r/w/a/x一起使用,增加读写功能t文本类型b二进制类型7Python程序设计程序设计文件读写函数名称含义ope
4、n()打开文件read(size)从文件读取size大小字节数,如果未给定或为负则读取所有内容readline()读取整行readlines()读取所有行并返回列表write(s)把字符串s的内容写入文件writelines(s)向文件写入一个元素为字符串的列表,如果需要换行则要自己加入每行的换行符。seek(off,whence=0)设置文件当前位置tell()返回文件读写的当前位置close()关闭文件。关闭后文件不能再进行读写操作。8Python程序设计程序设计【例7-2】文件复制cj.txt文件是学生一门课的成绩,它的内容如下:97809369879084947576898383337
5、2486686988989888763878110080376871779866472987939610070858335需要把这个文件的内容复制到“cjback.txt”文件中。复制文件不需要考虑行结构,用read函数就可以了。程序:source=open(cj.txt,r)back=open(cjback.txt,w)s=source.read()back.write(s)source.close()back.close()9Python程序设计程序设计【例7-3】计算总评分文件score.txt是学生一学期的成绩,每一行代表一个学生的成绩,由笔试、平时和实验三部分构成。总评=笔试*50%
6、+平时*25%+实验*25%学号姓名专业笔试平时实验2050921018詹延峰计算数学6585762050921036李小鹏金融学类8695852050921039裴凡法经济学类8695652040912116茅舒瑶社会保障90951002050912017陈见影化学工程6275922050912064梅钦钦材料科学8795802050109153王影平大气科学8689722050151003韩平医化学工程82996010Python程序设计程序设计readlines函数f=open(score.txt,r)s=f.readlines()print(s)运行结果:学号姓名专业笔试平时实验n,2
7、050921018詹延峰计算数学658576n,2050921036李小鹏金融学类869585n,2050921039裴凡法经济学类869565n,2040912116茅舒瑶社会保障9095100n,2050912017陈见影化学工程627592n,2050912064梅钦钦材料科学879580n,2050109153王影平大气科学868972n,2050151003韩平医化学工程829960n11Python程序设计程序设计文件逐行文件逐行读取取f=open(score.txt,r)forlineinf.readlines():print(line)程序输出:学号姓名专业笔试平时实验2050
8、921018詹延峰计算数学6585762050921036李小鹏金融学类8695852050921039裴凡法经济学类869565。12Python程序设计程序设计计算总评分f=open(score.txt,r)head=f.readline()#读表头行newhead=head:9+head9:18+head18:-1+总评成绩#加空格对齐print(newhead)forlineinf.readlines():l=line.split()#求总评分s=round(int(l3)*0.5+int(l4)*0.25+int(l5)*0.25,2)l4= +l4#加空格对齐l5= +l5#加空格
9、对齐print(.join(l)+str(s)#加空格对齐13Python程序设计程序设计总评成绩学号姓名专业笔试平时实验总评成绩2050921018詹延峰计算数学65857672.752050921036李小鹏金融学类86958588.02050921039裴凡法经济学类86956583.02040912116茅舒瑶社会保障909510093.752050912017陈见影化学工程62759272.752050912064梅钦钦材料科学87958087.252050109153王影平大气科学86897283.252050151003韩平医化学工程82996080.7514Python程序设计
10、程序设计重定向sys.stdin标准输入sys.stdout标准输出sys.stderr标准错误输出importsyss=sys.stdin.readlines()#从文件读入变为从键盘输入print(s)15Python程序设计程序设计词频统计(取自pintia网站)请编写程序,对一段英文文本,统计其中所有不同单词的个数,以及词频最大的10%的单词。所谓“单词”,是指由不超过80个单词字符组成的连续字符串,但长度超过15的单词将只截取保留前15个单词字符。而合法的“单词字符”为大小写字母、数字和下划线,其它字符均认为是单词分隔符。注意“单词”不区分英文大小写,例如“PAT”和“pat”被认为
11、是同一个单词。输入给出一段非空文本,最后以符号#结尾。输入保证存在至少10个不同的单词。输出按照词频递减的顺序,按照“词频:单词”的格式输出词频最大的前10%的单词。若有并列,则按递增字典序输出。16DataandComputation输入入处理理“s=sys.stdin.read()”表示重定向为键盘输入“s:s.find(#)”表示取输入字符串,以符号“#”结尾17Python程序设计程序设计产生词频字典forkinset(iforiinstrsifi.isalnum()=Falseandi!=_):strs=strs.replace(k,)#其它字符均认为是单词分隔符strs=strs.
12、rstrip().lower().split()#全部变小写counts=dict()foriinstrs:k=i:15ifknotincounts:countsk=1else:countsk+=118Python程序设计程序设计排序及输出#词频递减的顺序,若有并列,则按递增字典序ans=sorted(counts.items(),key=lambdax:(-x1,x0)print(len(counts)foriinrange(0,int(0.1*len(counts):词频最大的前10%的单词print(str(ansi1)+:+ansi0)19Python程序设计程序设计完整程序impor
13、tsyss=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:15ifknotincounts:countsk=1else:countsk+=1#词频递减的顺序,若有并列,则按递增字典序ans=sorted(counts.items(),key=lambdax:(-x
14、1,x0)print(len(counts)foriinrange(0,int(0.1*len(counts):词频最大的前10%的单词print(str(ansi1)+:+ansi0)20Python程序设计程序设计*7.2 用用Pandas模模块读写常写常见格式文件格式文件Python的模块函数分三个层次:一.内置函数不用import语句引入,它里面的函数可直接调用。二.标准模块函数用import语句引入后再调用,但不必安装。如math库。三.第三方模块函数需先安装,再用import语句引入模块后才能调用里面的函数,如Pandas模块。21Python程序设计程序设计第三方库安装打开网页:
15、https:/pypi.org/输入模块名,就可查到模块的详细说明22Python程序设计程序设计pip命令c:pipinstallpandas安装pandas模块23Python程序设计程序设计Pandas模模块Pandas是python的一个数据分析包,Pandas最初被作为金融数据分析工具而开发出来,Pandas为时间序列分析提供了很好的支持。Pandas是基于NumPy的一种工具。Pandas纳入了大量函数和一些标准的数据模型,提供了高效地操作大型数据集所需的工具,提供了大量能使我们快速便捷地处理数据的函数和方法,它是使Python成为强大而高效的数据分析环境的重要因素之一。24Pyt
16、hon程序设计程序设计Plotly模模块Plotly是一个基于JavaScript的动态绘图模块。Plotly的绘图效果与我们在网页上看到的动态交互式绘图结果是一样的,其默认的绘图结果是一个HTML网页文件,通过浏览器就可以查看。Plotly有着自己强大又丰富的绘图库,支持各种类型的绘图方案。Plotly是基于JavaScript的绘图库,所以其绘图结果可以与web应用无缝集成。Plotly最初是一款商业化的绘图软件,自plotly.js开源之后,我们可以使用本地的离线模式进行绘图,不依赖于官方的服务器,使得绘图速度更快,而效果与在线绘图一样,这也是目前使用Plotly绘图的主流模式。from
17、plotly.offlineimportplot网址:https:/plot.ly/python/25Python程序设计程序设计DataFrame数据类型DataFrame是Pandas库的一种数据类型。DataFrame是一个行和列都具有标签的表格,它与Excel电子表格并无不同。DataFrame使用非常方便,当你在处理二维表格数据时,都应该使用它们。DataFrame可由元组、列表、Python字典或另一个DataFrame构造出来26Python程序设计程序设计用列表产生DataFrame变量datafromplotly.offlineimportplotfromplotlyimpo
18、rtfigure_factoryasFFimportpandasaspddata=pd.DataFrame(2050921018,詹延峰,计算数学,65,85,76,2050921036,李小鹏,金融学类,86,95,85,2050921039,裴凡法,经济学类,86,95,65,2040912116,茅舒瑶,社会保障,90,95,100,2050912017,陈见影,化学工程,62,75,92,2050912064,梅钦钦,材料科学,87,95,80,2050109153,王影平,大气科学,86,89,72,2050151003,韩平医,化学工程,82,99,60,columns=(学号,姓
19、名,专业,笔试,平时,实验)table=FF.create_table(data)#用plotly产生输出表格plot(table,show_link=False)27Python程序设计程序设计程序程序输出出28Python程序设计程序设计用DataFrame计算总评分fromplotly.offlineimportplotfromplotlyimportfigure_factoryasFFimportpandasaspddata=pd.DataFrame(2050921018,詹延峰,计算数学,65,85,76,2050921036,李小鹏,金融学类,86,95,85,2050921039
20、,裴凡法,经济学类,86,95,65,2040912116,茅舒瑶,社会保障,90,95,100,2050912017,陈见影,化学工程,62,75,92,2050912064,梅钦钦,材料科学,87,95,80,2050109153,王影平,大气科学,86,89,72,2050151003,韩平医,化学工程,82,99,60,columns=(学号,姓名,专业,笔试,平时,实验)data总评成绩=data笔试*0.5+data平时*0.25+data实验*0.25table=FF.create_table(data)plot(table,show_link=False)29Python程序设
21、计程序设计程序输出30Python程序设计程序设计用用pandas读写各种写各种类型文件型文件读取函数写入函数含义read_csvto_csv读写csv文件read_excelto_excel读写excel文件read_jsonto_json读写json文件read_clipboardto_clipboard读写粘贴板内容31Python程序设计程序设计读取CSV和表格文件importplotlyaspyfromplotlyimportfigure_factoryasFFimportplotly.graph_objsaspygoimportpandasaspdpyplt=py.offline.
22、plot#离线模式data=pd.read_csv(score.csv,encoding=GBK)table=FF.create_table(data) #产生表格pyplt(table,show_link=False)GB2312、GBK和CP936都是用两个字节表示中文。GB2312是中国制定的中文编码,GBK是GB2312的扩展,CP936是在GB2312基础上开发的汉字编码。32Python程序设计程序设计写网页文件产生网页文件scoregp.htmlimportplotlyaspyfromplotlyimportfigure_factoryasFFimportplotly.graph
23、_objsaspygoimportpandasaspdpyplt=py.offline.plot#离线模式data=pd.read_csv(scoregp.csv,encoding=GBK)table=FF.create_table(data)#产生表格pyplt(table,filename=scoregp.html,show_link=False)33Python程序设计程序设计读写Excel文件要装xlrd模块读score.xlsx文件写入scoregp.xlsx文件importpandasaspddata=pd.read_excel(score.xlsx)data总评=data笔试*0
24、.5+data平时*0.25+data实验*0.25data.to_excel(scoregp.xlsx,index=0)34Python程序设计程序设计JSON文件读写JSON建构于两种结构:“名称/值”对的集合(Acollectionofname/valuepairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hashtable),有键列表(keyedlist),或者关联数组(associativearray)。Python中对应字典类型。值的有序列表(Anorderedlistofvalues)。在大
25、部分语言中,它被理解为数组(array)。这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们,这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。Python中对应列表类型。35Python程序设计程序设计to_json和read_json读取Excel文件score.xlsx”,用to_json函数产生JSON文件data.json,最后用read_json读JSON文件“data.json”importpandasaspddata=pd.read_excel(score.xlsx)data.to_json(data.json,force_ascii=Fals
26、e)jsondata=pd.read_json(data.json)print(jsondata)36Python程序设计程序设计* *7.3 数据可数据可视化化-plotly模块fromplotly.offlineimportplotimportplotly.graph_objsasgomydata=x:1,2,y:5,6mylayout=fig=go.Figure(data:mydata,layout:mylayout)#fig=go.Figure(data=mydata,layout=mylayout)plot(fig)37Python程序设计程序设计折折线图#绘制总评分的折线图from
27、plotly.offlineimportplotimportplotly.graph_objsasgoimportpandasaspddata=pd.read_csv(score.csv,encoding=GBK)data总评成绩=data笔试*0.5+data平时*0.25+data实验*0.25xdata=data姓名.tolist()#x轴数据ydata=data总评成绩.tolist()#y轴数据fig=go.Figure(data:go.Scatter(x=xdata,y=ydata)plot(fig)38Python程序设计程序设计输出出图形形39Python程序设计程序设计同时绘
28、制笔试和总评分的折线图fromplotly.offlineimportplotimportplotly.graph_objsasgoimportpandasaspddata=pd.read_csv(score.csv,encoding=GBK)data总评成绩=data笔试*0.5+data平时*0.25+data实验*0.25data总评成绩=data笔试*0.5+data平时*0.25+data实验*0.25xdata=data姓名.tolist()#取姓名这一列,变列表ydata1=data总评成绩.tolist()#取总评成绩这一列,变列表ydata2=data笔试.tolist()#
29、取笔试成绩这一列,变列表trace0=go.Scatter(x=xdata,y=ydata1,name=总评成绩)#总评折线trace1=go.Scatter(x=xdata,y=ydata2,name=笔试成绩)#笔试折线mylayout=go.Layout(title=总评成绩和笔试成绩相关图)#图的标题fig=go.Figure(data=trace0,trace1,layout=mylayout)plot(fig)40Python程序设计程序设计显示图形41Python程序设计程序设计气泡图fromplotly.offlineimportplotimportplotly.graph_o
30、bjsasgoimportnumpyasnpN=10x=np.random.rand(N)y=np.random.rand(N)colors=np.random.rand(N)sz=np.random.rand(N)*30fig=go.Figure()fig.add_scatter(x=x,y=y,mode=markers,marker=size:sz,color:colors,opacity:0.6,colorscale:Viridis);plot(fig)42Python程序设计程序设计气泡图参数mode=markers散点图,气泡图marker=size:sz,点的大小color:col
31、ors,点的颜色opacity:0.6,点的透明度colorscale:Viridismode=lines,折线图Mode=“lines+markers”折线图+散点图43Python程序设计程序设计绘制成绩柱状图fromplotly.offlineimportplotimportplotly.graph_objsasgoimportpandasaspddata=pd.read_csv(score.csv,encoding=GBK)xdata=data姓名.tolist()#取姓名这一列,变列表ydata1=(data平时*0.25).tolist()#取平时成绩这一列,变列表ydata2=(
32、data笔试*0.5).tolist()ydata3=(data实验*0.25).tolist()trace0=go.Bar(x=xdata,y=ydata1,name=平时成绩)trace1=go.Bar(x=xdata,y=ydata2,name=笔试成绩)trace2=go.Bar(x=xdata,y=ydata3,name=实验成绩)layout=go.Layout(title=层叠柱状图表表示成绩,barmode=stack)fig=go.Figure(data=trace0,trace1,trace2,layout=layout)plot(fig)44Python程序设计程序设计柱
33、状图45Python程序设计程序设计显示各部分成绩46Python程序设计程序设计圆饼图fromplotly.offlineimportplotimportplotly.graph_objsasgolabels=Oxygen,Hydrogen,Carbon_Dioxide,Nitrogenvalues=4500,2500,1053,500trace=go.Pie(labels=labels,values=values)plot(trace)47Python程序设计程序设计FIGURE层次DATATRACEx,y,zcolor,text,sizecolorscaleABC,MARKERcolorABCsymbolABCLINEcolorABCwidth123LAYOUTtitleabcXAXISYAXISSCENEXAXIS,YAXIS,ZAXISGE0LEGENDANNOTATIONS48Python程序设计程序设计表格和折线同屏显示fromplotly.offlineimportplotimportplotly.graph_objsasgoimportnumpyasnpimportpandasaspddf=pd.read_csv(https:/