版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章
文件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]=1
else:
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]=1
else:
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打开网页:https:///输入模块名,就可查到模块的详细说明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网址:https://plot.ly/python/Python程序设计25DataFrame数据类型DataFrame是Pandas库的一种数据类型。DataFrame是一个行和列都具有标签的表格,它与Excel电子表格并无不同。DataFrame使用非常方便,当你在处理二维表格数据时,都应该使用它们。DataFrame可由元组、列表、Python字典或另一个DataFrame构造出来Python程序设计26用列表产生DataFrame变量dataPython程序设计27fromplotly.offlineimportplotfromplotlyimportfigure_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=("学号","姓名","专业","笔试","平时","实验"))table=FF.create_table(data)#用plotly产生输出表格plot(table,show_link=False)程序输出Python程序设计28用DataFrame计算总评分Python程序设计29fromplotly.offlineimportplotfromplotlyimportfigure_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=("学号","姓名","专业","笔试","平时","实验"))data["总评成绩"]=data["笔试"]*0.5+data["平时"]*0.25+data["实验"]*0.25table=FF.create_table(data)plot(table,show_link=False)程序输出Python程序设计30用pandas读写各种类型文件Python程序设计31读取函数写入函数含义
read_csvto_csv读写csv文件
read_excelto_excel读写excel文件
read_jsonto_json读写json文件
read_clipboardto_clipboard读写粘贴板内容读取CSV和表格文件importplotlyaspyfromplotlyimportfigure_factoryasFFimportplotly.graph_objsaspygoimportpandasaspdpyplt
=py.offline.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"基础上开发的汉字编码。Python程序设计32写网页文件产生网页文件'scoregp.htmlimportplotlyaspyfromplotlyimportfigure_factoryasFFimportplotly.graph_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)Python程序设计33读写Excel文件要装xlrd模块读score.xlsx文件写入scoregp.xlsx文件importpandasaspddata=pd.read_excel("score.xlsx")data["总评"]=data["笔试"]*0.5+data["平时"]*0.25+data["实验"]*0.25data.to_excel("scoregp.xlsx",index=0)Python程序设计34JSON
文件读写JSON建构于两种结构:“名称/值”对的集合(Acollectionofname/valuepairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hashtable),有键列表(keyedlist),或者关联数组(associativearray)。Python中对应字典类型。值的有序列表(Anorderedlistofvalues)。在大部分语言中,它被理解为数组(array)。这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们,这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。Python中对应列表类型。Python程序设计35to_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=False)jsondata=pd.read_json("data.json")print(jsondata)Python程序设计36*7.3数据可视化---plotly模块fromplotly.offlineimportplotimportplotly.graph_objsasgomydata=[{"x":[1,2],"y":[5,6]}]mylayout={}
fig=go.Figure({"data":mydata,"layout":mylayout})#fig=go.Figure({data=mydata,layout=mylayout})plot(fig)Python程序设计37折线图#绘制总评分的折线图fromplotly.offline
importplotimportplotly.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)Python程序设计38输出图形Python程序设计39同时绘制笔试和总评分的折线图
fromplotly.offline
importplotimportplotly.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()#取笔试成绩这一列,变列表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)Python程序设计40显示图形Python程序设计41气泡图fromplotly.offlineimportplotimportplotly.graph_objsasgoimportnumpyasnpN=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)Python程序设计42气泡图参数mode=‘markers’散点图,气泡图
marker={‘size’:sz,点的大小
‘color’:colors,点的颜色
‘opacity’:0.6,点的透明度
'colorscale':'Viridis'
}mode=‘lines’,折线图Mode=“lines+
markers”折线图+散点图Python程序设计43绘制成绩柱状图fromplotly.offline
importplotimportplotly.graph_objsasgoimportpandasaspddata=pd.read_csv("score.csv",encoding="GBK")xdata=data["姓名"].tolist()#取姓名这一列,变列表ydata1=(data["平时"]*0.25).tolist()#取平时成绩这一列,变列表ydata2=(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)Python程序设计44柱状图Python程序设计45显示各部分成绩Python程序设计46圆饼图fromplotly.offline
importplotimportplotly.graph_objsasgolabels=['Oxygen','Hydrogen','Carbon_Dioxide','Nitrogen']values=[4500,2500,1053,500]trace=go.Pie(labels=labels,values=values)plot([trace])Python程序设计47FIGURE层次
DATA[]TRACE{}
x,y,z[]color,text,size[]
colorscale
ABC,{}MARKER{}colorABCsymbolABCLINE{}colorABCwidth123LAYOUT{}titleabc
XAXIS
YAXIS
{}SCENE{}
XAXIS,YAXIS,
ZAXIS{}
GE0{}LEGEND{}ANNOTATIONS{}Python程序设计48表格和折线同屏显示fromplotly.offlineimportplotimportplotly.graph_objsasgoimportnumpyasnpimportpandasaspddf=pd.read_csv('https:///plotly/datasets/master/Mining-BTC-180.csv')Python程序设计49画表格table_trace1=go.Table(domain=dict(x=[0,0.5],y=[0,1.0]),#左半边
columnwidth=[30]+[33,35,33],
columnorder=[0,1,2,3,4],header=dict(height=50,values=[['<b>Date</b>'],['<b>Number<br>transactions</b>'],['<b>Output<br>volume(BTC)</b>'],['<b>Market<br>Price</b>']],line=dict(color='rgb(50,50,50)'),align=['left']*5,font=dict(color=['rgb(45,45,45)']*5,size=14),fill=dict(color='#d562be')),cells=dict(values=[df[k].tolist()forkin['Date','Number-transactions','Output-volume(BTC)','Market-price']],line=dict(color='#506784'),align=['left']*5,font=dict(color=['rgb(40,40,40)']*5,size=12),format=[None]+[",.2f"]*2+[',.4f'],prefix=[None]*2+['$',u'\u20BF'],suffix=[None]*4,height=27,)
)Python程序设计50画折线trace1=go.Scatter(x=df['Date'],y=df['Hash-rate'],
xaxis='x1',yaxis='y1',mode='lines',line=dict(width=2,color='#9748a1'),name='hash-rate-TH/s')trace2=go.Scatter(x=df['Date'],y=df['Mining-revenue-USD'],
xaxis='x2',yaxis='y2',mode='lines',line=dict(width=2,color='#b04553'),name='miningrevenue')trace3=go.Scatter(x=df['Date'],y=df['Transaction-fees-BTC'],
xaxis='x3',yaxis='y3',mode=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 单元式玻璃幕墙安装施工方案
- 2026年美妆行业产品包装设计创新报告
- 2025年航空燃油添加剂应用前景报告
- 2026年智能材料形状记忆合金行业创新报告
- 2026年超高清视频技术发展报告
- 初中英语写作中介词错误纠正策略的对比实验课题报告教学研究课题报告
- 2024年石材加工质量保障合同二篇
- 气液分离器操作与故障判断参考手册
- 肾上腺髓质增生症:精准诊断与综合治疗策略的深度剖析
- 办公室隔断协议2026年
- 重庆南岸区2026年九年级质量监测英语试卷试题(含答案详解)
- 潍坊市工程技师学院招聘事业单位教师笔试真题2025
- LY/T 2407-2025森林资源价值核算和资产评估技术规范
- 2026年全国《考评员》专业技能鉴定考试题库(新版)
- 2026年北京市西城区中考语文一模试卷(含详细答案解析)
- 山东济南城投集团招聘笔试题库2026
- 2026年初中生数学思维能力训练试题及答案
- 医保风险点培训课件
- 幸福的教师培训课件
- 【《基于SOR模型的电商直播对消费者购物行为的影响实证研究》17000字(论文)】
- (正式版)JTT 1218.4-2024 城市轨道交通运营设备维修与更新技术规范 第4部分:轨道
评论
0/150
提交评论