首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python笔记-数据加载、存储与文件格式(2)

今天的导图是数据加载、存储与文件格式这一章的剩余部分,考虑到这本书内容难度不是很大,虽然总结到公众号上的东西有点多,但是之后还是一篇一章。毕竟进度要加快啦。

数据加载、存储与文件格式一共分为四部分:

1⃣️读写文本格式中的数据

2⃣️二进制数据格式

3⃣️Web APIs交互

4⃣️数据库交互

今天还有上篇没写完的读写文本格式中的数据的最后一部分。

01

读写文本格式中的数据

JSON数据

JSON(JavaScript Object Notation的简称)已经成为通过HTTP请求在Web浏览器和其他应用程序之间发送数据的标准格式之一。它是一种比表格型文本格式(如CSV)灵活得多的数据格式。

原数据obj为JSON类型数据,json.loads为JSON转Python格式,json.dumps为Python转JSON格式。具体转换如图:

JSON直接转DateFrame数据结构:

pandas.read_json可以自动将特别格式的JSON数据集转换为Series或DataFrame

要将数据从pandas输出到JSON,可以使用to_json方法:

XML和HTML:Web信息收集

pandas有一个内置的功能,read_html,它可以使用lxml和Beautiful Soup自动将HTML文件中的表格解析为DataFrame对象。pandas.read_html有一些选项,默认条件下,它会搜索、尝试解析标签内的的表格数据。

利用lxml.objectify解析XML

XML(Extensible Markup Language)是另一种常见的支持分层、嵌套数据以及元数据的结构化数据格式。

纽约大都会运输署发布了一些有关其公交和列车服务的数据资料(http://www.mta.info/developers/download.html)。这里,我们将看看包含在一组XML文件中的运行情况数据。每项列车或公交服务都有各自的文件(如Metro-North Railroad的文件是Performance_MNR.xml),其中每条XML记录就是一条月度数据,如下:

我们先用lxml.objectify解析该文件,然后通过getroot得到该XML文件的根节点的引用。root.INDICATOR返回一个用于产生各个XML元素的生成器。对于每条记录,我们可以用标记名(如YTD_ACTUAL)和数据值填充一个字典(排除几个标记)。最后,将这组字典转换为一个DataFrame:

这组例子多看几遍应该就能明白的~

02

二进制数据格式

实现高效二进制格式存储

实现数据的高效二进制格式存储最简单的办法之一是使用Python内置的pickle序列化。pandas对象都有一个用于将数据以pickle格式保存到磁盘上的to_pickle方法,可以通过pickle直接读取被pickle化的数据,或是使用更为方便的pandas.read_pickle:

使用HDF5格式

HDF5是一种存储大规模科学数组数据的非常好的文件格式。它可以被作为C标准库,带有许多语言的接口,如Java、Python和MATLAB等。HDF5中的HDF指的是层次型数据格式(hierarchical data format)。每个HDF5文件都含有一个文件系统式的节点结构,它使你能够存储多个数据集并支持元数据。与其他简单格式相比,HDF5支持多种压缩器的即时压缩,还能更高效地存储重复模式数据。对于那些非常大的无法直接放入内存的数据集,HDF5就是不错的选择,因为它可以高效地分块读写。

虽然可以用PyTables或h5py库直接访问HDF5文件,pandas提供了更为高级的接口,可以简化存储Series和DataFrame对象。HDFStore类可以像字典一样,处理低级的细节:

存储模式:

读取Microsoft Excel文件

这个比较简单,直接看图就可以:

03

Web APIs交互

许多网站都有一些通过JSON或其他格式提供数据的公共API。通过Python访问这些API的办法有不少。一个简单易用的办法(推荐)是requests包(http://docs.python-requests.org)。

响应对象的json方法会返回一个包含被解析过的JSON字典,加载到一个Python对象中:(data=resp.json()),data中的每个元素都是一个包含所有GitHub主题页数据(不包含评论)的字典。我们可以直接传递数据到DataFrame,并提取感兴趣的字段。运行issues可得。

04

数据库交互

将数据从SQL加载到DataFrame的过程很简单,此外pandas还有一些能够简化该过程的函数。此处使用SQLite数据库,并且直接省去复杂过程,直接使用简化的pandas函数:

SQLAlchemy项目是一个流行的Python SQL工具,它抽象出了SQL数据库中的许多常见差异。pandas有一个read_sql函数,可以让你轻松的从SQLAlchemy连接读取数据。

还是那句话,温故而知新,可以为师矣。

另外,古人云,书读百遍,其义自见也不是没有道理的,

学习完了多回去总结总结,能得到更多新的东西 。

jio得好看就给我点个好看吧~

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190103G18QN000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券