4、数据加载、存储与文件格式
输入输出通常划分为几个大类:读取文本文件或其他更有效的磁盘存储格式,加载数据库中的数据,利用web API操作网络资源
1、读写文本格式的数据
下面是pandas提供的一些用于将表格型数读取为DF对象的函数
这些函数可能涉及到一下的一些选项:
这一点不是很懂在说什么
列名:
我们可以直接传入,让其默认自动分配,也可以自己定义列名
索引:
我们可能需要将某列做成DF的索引,可以把该列放在索引的地方,或者使用index_col参数指定列
把多个列做成一个层次化索引,只需要传入由编号或者列名组成的列表
有些表格可能不是用固定的分隔符去分隔字段的,我们需要编写一个正则表达式来作为分隔符传入,对于上边的实现我们还可以使用read_table,如果指定的列名比数据行的数量少,所以第一列会被定义成索引
我们还可以传入skiprows这个参数一个列表,来跳过指定的行
缺失值处理,pandas会用一组经常出现的标记值进行识别,如NA,-1,#IND以及NULL等来标记这个缺失值
na_values可以接受一组用于表示缺失值的字符串
可以用一个字典为各列指定不同的 NA标记值,和字面理解的不一样,是指定列名作为键的列,要指定的那个数作为值的 就会变成NA
下面是这个函数的参数:
- 逐块读取文本文件
在处理很大的文件时,或找出大文件中的参数集等一小部分或逐块对文件进行迭代时
如果只想读取几行,通过nrows进行指定
要逐块读取文件,需要设置chunksize,返回的是一个textParser对象,是一个可迭代对象,另外我们还可以使用一个get_chunk方法,可以使你读取任意大小的块。
- 将数据写出到文本格式
我么处理过的数据也可以输出为分隔符格式的文本,利用DF的to_cav方法,我们可以将数据写到一个以逗号分割的文件中,确实值会被表示为空字符串
df.to_csv('./tocsv.csv',sep='|') //指定分隔符附,并保存在文件中
如果没有设置其他选项,则会写出行和列的表签,可以使用下面的禁用
此外我们还可以指定只存入个别列,并进行排序,但是我再进行排序时,显示的是这个关键字没有,我们需要把这个关键字换成全拼columns
df.to_csv('./tocs2.csv',index =False,columns=[2,0,1])
缺失值处理,不作处理的话会被显示成空字符,我们可以指定为别的标记值
对于Series也有这个方法,我们可以直接进行使用,然后如果需要把保存的这个文件重新转为Series,我们可以使用from_csv,但是现在这个版本迭代,建议还是使用read_csv方法
- 手工处理分隔符格式
由于接收到含有畸形文件而使read_table出毛病的情况也挺常见,对于任何单字符分隔符文件,可以使用Python的内置csv模块,将任意已打开的文件或文件型对象给csv.reader,然后再进行处理,如有需要可以看书上
- JSON数据
JSON是通过HTTP请求在Web浏览器和其他应用程序之间发送数据的标准格式之一,是一个由键值对组成的数据结构
load:使用json.loads(obj)可将JSON字符串转换成Python形式
dump:json.dumps(obj) 可以将python对象转换成JSON格式
我们可以直接把一个json格式的对象传递给DF构造函数中
- XML和HTML:WEB信息收集
Python中有许多可以读写HTML和XML格式数据的库,LXML就是其中之一,能够高效可靠的解析大文件,lxml.html专门用来处理HTML,利用lxml.objectify解析XML
2、二进制数据
实现数据的二进制存储最简单的办法之一就是使用Python内置的pickle序列化偏,pandas对对象都有一个用于将数据以pickle形式保存到磁盘上的save方法,啊这,现在版本迭代,使用to_pickle方法代替
df.to_pickle('./aapicle')
相反的我们读取这种文件需要用到read_pickle,可能更早的版本是要用到load函数去转换
- 使用HDF5格式
HDF5就是一个工业级的能实现高效读写磁盘上以二进制格式存储的科学数据 ,它是一个C库,有很多语言的接口,如JAVA、Python和MATLAB等,HDF指的是层次型数据格式,每个HDF5文件都包含一个文件系统式的节点结构,可以是你能够村相互多个数据集并支持元数据,支持多种压缩器的即时压缩,还能更高效的存储重复模式数据,对于那些很大的数据集,HDF5是个不错的选择
Python中的HDF5库有两个接口(PyTables和h5py),后者提供 了一种直接而高级的HDF5 API的访问接口,前者则抽象了HDF5的许多细节以提供多种灵活的 数据容器、表索引、查询功能以及等
pandas有一个最小化的类似于字典的HDFStore类,通过PyTables存储pandas对象
- 读取Excel文件
3、使用HTML和web API
许多网站都有一些通过JSON或其他格式提供数据的公共API,一般返回的都是JSON字符串
4、使用数据库
在应用中,数据很少取自文本文件,一般使用基于SQL的关系型数据库,还有一些非SQL型数据库,数据库的选择通常取决于性能、数据完整性以及应用程序的伸缩性需求,一般都有接口
- 存取MongoDB中的数据
NoSQL数据有许多不同的形式,有些是简单的字典式及哦按支队存储,另一些则是基于文档的,我们可以使用pymongo驱动器通过默认端口进行里阿尼额
MongoDB服务器的每个运行实例可以有多个数据库,而每个数据库可以有多个集合
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!