(1.21)--4-2-2不同文件格式的数据读写.ppt
《(1.21)--4-2-2不同文件格式的数据读写.ppt》由会员分享,可在线阅读,更多相关《(1.21)--4-2-2不同文件格式的数据读写.ppt(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第4 4章章 数据处理和分析数据处理和分析-Pandas-Pandas第第0404讲讲 不同格式文件的数据读写不同格式文件的数据读写Contents目录01文本文件的读写与解析文本文件的读写与解析二进制文件的读写与解析二进制文件的读写与解析02与与Web APIsWeb APIs的交互的交互0301文本文件的读写与解析文本格式的文件采用不同标准的字符编码,主要有CSV、JSON、XML和HTML等不同文件类型。CSV格式文件CSV(Comma Separated Values),即逗号分隔值(分隔符也可以其他符号),是一种广泛使用的文本格式,用以存储表格数据,包括数字或字符。这种格式的文件数
2、据使用虽然广泛(如Kaggle上一些题目提供的数据就是CSV格式),但却没有通用的标准,在处理时常常会碰到麻烦。操作CSV格式文件的方法:使用Python标准模块csv,需要预先导入。提供如reader、writer等方法进行读写操作;使用Pandas库,读操作可以使用pd.read_csv()或pd.read_table()函数,写操作可以使用Series或DataFrame对象的to_csv()方法。CSV格式文件-读取数据读取CSV文件中的数据时,默认将文件中的第一行解析为标题行,作为列标签的名称,而行索引默认采用从0开始的数字。import os os.chdir(ud:DSPanda
3、sdata)#设置文件所在的目录 df=pd.read_csv(temp.csv)#默认以逗号分隔 df=pd.read_table(temp.csv,sep=,)#指定逗号为分隔符 df S.No Name Age City Salary0 1 Tom 28 Toronto 200001 2 Lee 32 HongKong 30002 3 Steven 43 Bay Area 83003 4 Ram 38 Hyderabad 3900CSV格式文件-读取数据(1 1)行索引的设置)行索引的设置如果要将意义明确的某一列作为行索引标识,可以使用index_col参数指定,如下:pd.read_c
4、sv(temp.csv,index_col=S.No)#指定S.No列为行索引如果需要一个多层索引,可将由列编号或列名构成的列表作为index_col参数的值,如index_col=Name,Age或index_col=1,2。(2 2)分隔符的设置)分隔符的设置在有些情况下,数据中各字段的分隔符不是默认的分隔符,则可以通过sep参数指定要分隔的字符;若使用不同数量的空白字符进行分隔,如空格、Tab制表符、换行符、换页符等,则可以正则表达式“s+”作为sep参数的值,以匹配多个空白字符。使用read_csv()函数读取文件中的数据时,为便于数据理解和处理,结合函数参数的使用,有如下需要注意的问
5、题:CSV格式文件-读取数据(3 3)标题行的设置)标题行的设置若CSV格式文件中没有标题行,或者虽然有标题行,但标题行的意义并不明确,可以自定义各列标签的名称或进行标题行之间的匹配。pd.read_csv(data1.csv,header=None)#无标题行,采用默认的数字标签 pd.read_csv(ex2.csv,names=A,B,C,D,Msg)#自定义标题行(4 4)缺失值处理)缺失值处理缺失值处理是文件解析任务中的一个重要组成部分。默认情况下,Pandas会用一组经常出现的标记值进行识别,如np.nan、NULL、None等。参数na_values可以用一个列表或集合来指定缺失
6、值;若使用字典,可以对不同的列使用不同的缺失值标记。pd.read_csv(data2.csv,na_values=apple,orange)#用列表指定缺失值 na_dict=message:energy,something:apple,orange#定义字典 pd.read_csv(data2.csv,na_values=na_dict)#用字典标记缺失值读取CSV文件数据应注意的问题:CSV格式文件-读取数据(5 5)设置最大显示的行数、列数)设置最大显示的行数、列数为显示紧凑,便于阅读和理解数据,可以对Pandas的显示选项进行设置:pd.options.display.max_col
7、umns=7#最大显示列数 pd.options.display.max_rows=10#最大显示行数(6 6)读取数据子集)读取数据子集如果针对大数据文件,只需要读取其中的一部分数据,可以通过nrows、usecols参数指定要读取的行数和列,获取到需要的数据子集。columns=list(range(0,11)#生成由列号组成的列表 pd.read_csv(mn.csv,index_col=0,nrows=6,usecols=columns)#读取子集示例中,编号为0的列通过index_col参数设置为行索引。读取CSV文件数据应注意的问题:CSV格式文件-读取数据(7 7)数据的块读取方
8、法)数据的块读取方法要逐块读取文件,可以指定chunksize参数的值,read_csv()函数将返回一个TextParser对象,使你可以根据chunksize对文件进行逐块迭代。如我们对mn.csv中的数据进行迭代处理,将值计数聚合到“HH1”列中。chunk=pd.read_csv(mn.csv,index_col=0,usecols=columns,chunksize=1000)chunk#返回一个TextParser对象 tot=pd.Series()#创建一个由列表组成的空系列对象 for cluster in chunk:#迭代访问TextParser对象 tot=tot.add
9、(clusterHH1.value_counts(),fill_value=0)tot=tot.sort_values(ascending=False)#将值计数降序排序对刚刚生成的TextParser对象,可以使用其get_chunk()方法读取任意大小的块。chunk.get_chunk(size=6)#每次调用get_chunk方法都从当前位置开始读取读取CSV文件数据应注意的问题:CSV格式文件-写数据若要将数据写出到CSV文本格式的文件,可以使用DataFrame或Series对象的to_csv等方法。将DataFrame对象中的数据写入到CSV文件之前,可以通过修改对象column
10、s属性的方式,将列标题替换为意义更加明确的内容。df.columns=headers#headers为标题列表将DataFrame对象的数据写入到CSV格式文件out.csv中 df.to_csv(out.csv)sys为Python标准模块,可以指定仅在屏幕上显示输出文本内容 import sys#导入sys模块 df.to_csv(sys.stdout,sep=|,na_rep=NULL)#指定新的分隔符并标记空值默认情况下,to_csv会输出行列的标签,但可以通过indexheader参数设置禁用行列标签。df.to_csv(sys.stdout,sep=|,na_rep=NULL,in
11、dex=False,header=False)CSV格式文件-使用Python标准库csv文件中数据格式不规则时,除手工处理外,也可以使用Python的标准模块csv。在处理文件中的分隔符时,若分隔符是单个字符,可以直接将已经打开的文件传递给csv.reader()方法,对返回的可迭代对象进行处理,以满足数据格式的要求,如下:import csv#导入内置csv模块 file=open(data3.csv)#打开文件 lines=list(csv.reader(file)#将reader返回的可迭代对象转换为列表 lines0#访问列表元素,HH1,HH2,LN,MWM1,MWM2,MWM4,
12、MWM5,MWM6D,MWM6M,MWM6Y,MWM7,MWM8,MWM9,MWM10H,MWM10M,MWM11H,MWM11M,MWB1M,MWB1Y,MWB2 lines11,1,17,1,1,17,1,14,7,4,2014,Completed,2,20,17.0,59.0,18.0,7.0,5.0,1984.0,29.0 header,values=lines0,lines1:#将所有行拆分为标题行和数据行使用字典推导式,并通过zip(*values)解包,将行转置为列,从而创建数据列的字典。data_dict=h:v for h,v in zip(header,zip(*value
13、s)CSV格式文件-使用Python标准库csvCSV文件的形式有很多,可以使用csv.Dialect创建一个子类,满足数组的格式要求,如专门的分隔符、字符串引用符、行结束符等。class new_format(csv.Dialect):lineterminator=ndelimiter=;quotechar=quoting=csv.QUOTE_MINIMAL reader=csv.reader(file,dialect=new_format)读写读写CSVCSV格式文件应该注意的两个问题:格式文件应该注意的两个问题:对于分隔符有多个或比较复杂的情况,Python内置的csv模块将无法解析,可
14、使用字符串的split()方法或正则表达式的split()方法进行拆分和整理;编码问题:使用Windows记事本程序将CSV文件保存为UTF-8模式时,默认含有隐藏的BOM(Byte Order Mark)字符,对CSV文件的读写造成干扰。因此,需要首先消除文件中的BOM字符。JSON格式文件JSON全称为JavaScript Object Notation,已经成为通过HTTP请求在Web浏览器和其他应用程序之间发送数据的标准格式之一。它是一种比表格型文本格式(如CSV)灵活得多的数据格式。注:使用记事本程序打开的JSON格式文件的内容不会自动换行显示,部分内容如下:JSON格式文件-数据类
15、型与数据格式JSON格式的数据与Python的数据类型非常接近。除空值外,JSON数据与Python的代码也存在一些细微的差别,如列表末尾不允许存在多余的逗号等。Python数据类型数据类型JSON格式数据格式数据dict-字典object-对象list-列表array-数组str-字符串string-字符串None-空值null-空值int-整型number-整数float-浮点型number-实数JSON数据的书写格式为key:value,其对象中所有的键都必须是字符串。JSONJSON对象对象“firstName”:”John”,”lastName”:”Doe”,”age”:20JSON
16、JSON数组数组sid:a1001,name:张大山,age:21,sid:a1002,name:李晓明,age:20,sid:a1003,name:赵志坚,age:22,JSON格式文件-Python标准模块jsonJSON格式文件的读写,也可以使用如下方式:pandas.read_json():读取JSON格式文件内容,并自动解析,转换为DataFrame对象DataFrame.to_json():将DataFrame对象中的数据写入到JSON格式的文件Python提供了json标准模块,该模块提供的方法可以实现JSON格式的数据与Python数据类型的转换以及JSON格式文件的读写。js
17、on模块的常用方法如下:json.dumps(obj):将Python对象转换为JSON格式,即编码;json.loads(str):将JSON格式的字符串转换为Python数据类型,即解码;json.dump():把数据写入文件;json.load():把文件中的数据读取出来。JSON格式文件-json文件读写示例import pandas as pdimport json#导入Python内置的json模块import os obj=firstName:John,lastName:Doe,age:20 result=json.loads(obj)#将Python对象转换为JSON格式 re
18、sultfirstName:John,lastName:Doe,age:20 obj=sid:a1001,name:张大山,age:21,sid:a1002,name:李晓明,age:20,sid:a1003,name:赵志坚,age:22 result=json.loads(obj)#将Python数组转换为JSON格式resultsid:a1001,name:张大山,age:21,sid:a1002,name:李晓明,age:20,sid:a1003,name:赵志坚,age:22 json.dumps(result)#转换时汉字重新编码sid:a1001,name:u5f20u5927u
19、5c71,age:21,sid:a1002,name:u674eu6653u660e,age:20,sid:a1003,name:u8d75u5fd7u575a,age:22 df=pd.DataFrame(result,columns=sid,name,age)#将JSON数组转换为DataFrame对象 data=pd.read_json(iso-2.json)#读取json格式文件中的数据,自动解析并转换为DataFrame对象 data.to_json(iso.json)#将数据输出到JSON格式文件HTML格式文件HTML,即HyperText Markup Language,超文本
20、标识语言,是网页设计中最常用的一种基本格式。XML格式文件XML即eXtensible Markup Language,是一种可扩展的标记语言,应用于Web开发数据的诸多方面。数据能够以纯文本格式存储在独立的XML文件中,可简化数据的存储和共享。XML数据的书写格式如下:dataXML文档本质上只是格式特殊的数据文件,它以层次化和结构化的方式保存数据,有标签和属性两种形式,如下:,属性category的值为WEBErik T.Ray,标签author的值为Erik T.RayXML格式文件XML的结构和数据存储格式,示例如下:同级根元素根元素属性:属性:“lang”元素元素属性:属性:“cat
21、egory”元素元素元素元素元素元素元素元素文本:文本:Harry Potter文本:文本:JK.Rowing文本:文本:2005文本:文本:29.99父子 Everyday talian Giada De Laurentiis 2005 30.00 Harry Potter J K.Rowling 2005 29.99 Learning XML Erik T.Ray2003 39.95 Python支持XML、HTML操作的外部库Python支持用于读写HTML和XML格式文件数据的外部扩展库主要包括Beautiful Soup、lxml和html5lib。lxml库处理数据的速度相对较快,
22、而BeautifulSoup和html5lib库在使用爬虫技术进行网络数据采集时使用较多,对HTML或XML文件数据的处理有更好的容错性。Windows环境下在线安装:pip install lxmlpip install beautifulsoup4pip install html5lib导入到Python环境:import lxmlimport html5libfrom bs4 import BeautifulSoup as BSHTML文件的读取与解析Pandas提供了read_html()方法,默认情况下可以使用lxml或Beautiful Soup自动搜索并尝试解析HTML文件中所有
23、的标签,将每一个标签内的表格数据解析为一个DataFrame对象,该方法最终返回一个DataFrame对象的列表。美国联邦存款保险公司(网址为https:/www.fdic.gov/),记录了多年来银行倒闭的情况。以下载的HTML文件fdic_failed_bank_list.html为例,简单演示read_html()方法的使用。import pandas as pd tables=pd.read_html(datafdic_failed_bank_list.html)#读取文件内容 len(tables)#tables为DataFrame对象的列表,仅有一个元素 failures=tabl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 1.21 不同 文件格式 数据 读写
限制150内