20200113(数据加载、存储和文件格式)

6. 数据加载、存储和文件格式

输出输出通常包括几个大类:

  • 读取文本文件和其他更高效的磁盘存储格式;
  • 加载数据库中的数据;
  • 利用Web API 操作网络资源。

这里着重介绍pandas的输入输出对象。

6.1  读取文本格式的数据

pandas 提供了一些用于将表格数据读取为DataFrame 对象的函数。如下:

上面这些函数的选项可以划分为以下几个大类:

其中,类型推断(type inference)是这些函数中最重要的功能之一,也就是说不需要指定列的类型到底是数值、整数、布尔值还是字符串。

执行下面语句可以打开文件:

注:!cat E:\\python/ex1.csv  中cat 是UNIX shell命令,可以将csv中的原始内容打印到屏上,windows 中可以使用type 达到同样的目的。

结果:

读取一个以逗号分隔的(csv)文件:

也可以用read_table, 但需要指定分隔符:

注:并不是所有的文件都有标题,pandas可以为其分配默认的列名,也可以自定义列名(需要时自寻)。

有些表格可能不是用固定的分隔符去分隔字段的(比如空白符或其他模式)。对于这种情况,可以编写一个正则表达式来作为read_table的分隔符。

read_csv / read_table 函数的参数:

6.2 逐块读取文本文件

在处理很大的文件时,我们可能只想读取文件的一部分或者逐块对文件进行迭代。

如下面这个表:

如果只想读取几行,通过nrows 进行指定即可:

注:逐块读取文件,需要设置chunksize(格式同上),TextParser 还有一个get_chunk 方法,可以读取任意大小的块。

6.3 将数据写到文本格式

1)利用DataFrame 的to_csv 方法,可以将数据写到一个以逗号分隔的文件中。

结果:

2)可以使用其他分隔符;data.to_csv(…,sep=’|’)

3)缺失值在输出结果中会被表示为空字符串,你可能希望将其表示为别的标记值:

data.to_csv(…,na_rep=’NULL);

4) 若果没有设置其他选项,则会写出行和列的标签。当然,他们也都可以被禁用:

data.to_csv(…,index=False,header=False);

5) 还可以只写出一部分的列,并且可以指定顺序:

data.to_csv(…,index=False,cols =[‘a’, ‘b’, ‘c’]);

6) Series 也有一个to_csv 方法。需要时可查看to_csv 和from_csv 方法。

6.4 手工处理分隔符格式

大部分存储在磁盘上的表格型数据都能用pandas.read_table 进行加载,然而,有时候还需要做一些手工处理。对于任何单字符分隔符文件,可以直接使用python内置的csv模块。

1)csv 语支选项:

2)要手工输出分隔符文件,可以使用csv.writer.

6.5  JSON 数据

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

obj = """
{"name":"wes",
"places_lived":["US","Spain","Germany"],
"pet":null,
"siblings":[{"name":"Scott","age":25,"pet":"Zuko"},
            {"name":"Katie","age":33,"pet":"Cisco"}]
}
"""

如上,JSON 非常接近于有效的Python 代码。基本类型有对象(字典)、数组(列表)、字符串、数值、布尔值以及null。对象中所有的键都必须是字符串。许多Python 库都可以读写JSON数据。

1) 、将JSON 字符串转换成 Python格式:json.loads()

2) 、将Python对象转换成 JSON 格式:json.dumps()

如何将json 对象转换为 DataFrame 或其他便于分析的数据结构就由你决定了,最简单的方式是:向DataFrame 构造器传入一组JSON 对象,并选取数据字段的子集。

6.6 XML 和HTML : Web 信息收集

Python 有许多可以读写HTML 和XML  格式数据的库。lxml 就是其中之一。

本节内容:

  • 用lxml.html 处理HTML ;
  • 用lxml.objectify 做一些XML 处理。

(待补充)

6.7  二进制数据格式

使用Python内置的pickle 序列化,可以实现数据的二进制格式存储。为了使用方便,pandas 对象都有一个用于将数据以 pickle 形式保存到磁盘上的save 方法

也可以使用pandas.load 将数据读回Python。

6.8 使用 HDF5 格式

很多工具都能实现高效读写磁盘上以二进制格式存储的科学数据。HDF5 就是其中一个流行的工业级库,它是一个C 库,带有许多语言的接口,如 Java 、Python 和MATLAB等。

HDF5 中的 HDF指的是层次型数据格式(hierarchical  data  format)。每个HDF5 文件都含有一个文件系统式的节点结构,它使你能够存储多个数据集并支持元数据。

Python 中的HDF5  库有两个接口:

    • PyTables
    • h5py

(详见参考文档)

6.9  读取Excel 文件

pandas 的ExcelFile 类支持读取存储在Excel 2003(或者更高版本)中的表格型数据。由于ExcelFile 用到了xlrd  和openpyxl 包,所以得先安装。

通过传入一个xls  或 xlsx 文件的路径即可创建一个ExcelFile 实例:

xls_file = pd.ExcelFile (‘data.xls‘)

存放在某个工作表中的数据可以通过parse 读取到DataFrame 中:

table = xls_file.parse(‘Sheet1‘)

6.10  使用数据库

详见参考文档

原文地址:https://www.cnblogs.com/bltstop/p/12182076.html

时间: 2024-10-09 10:11:54

20200113(数据加载、存储和文件格式)的相关文章

数据加载存储和文件格式

原文地址: https://github.com/AsuraDong/Blog/blob/master/Articles/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/%E6%95%B0%E6%8D%AE%E5%8A%A0%E8%BD%BD%E5%AD%98%E5%82%A8%E5%92%8C%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F.md 1.读取文本格式数据 import pandas as pd import numpy as np

【汇编指令】arm指令集之但寄存器数据load/store (加载存储)

数据的传送: LDR              STR                   .WORD LDRB            STRB              .BYTE LDRH             STRH            .HALFWORD LDR 和STR 加载/存储字和无符号字节指令.使用单一数据传送指令(STR 和LDR)来装载和存储单一字节或字的数据从/到内存.LDR指令用于从内存中读取数据放入寄存器中:STR 指令用于将寄存器中的数据保存到内存.指令格式如下

实现虚拟模式的动态数据加载Windows窗体DataGridView控件 .net 4.5 (一)

实现虚拟模式的即时数据加载Windows窗体DataGridView控件 .net 4.5 原文地址 :http://msdn.microsoft.com/en-us/library/ms171624.aspx  译 Q:77811970 实现虚拟模式的原因之一 DataGridView控制只检索数据,因为它是必要的. 这就是所谓的 即时数据加载 . 如果你正在与一个非常大的表在一个远程数据库,例如,您可能希望避免启动延迟,只检索所需的数据显示和检索额外的数据只有当用户新行滚动到视图. 如果客户

自己动手写CPU之第九阶段(5)——实现加载存储指令2(修改执行阶段)

将陆续上传新书<自己动手写CPU>,今天是第42篇,我尽量每周四篇,但是最近已经很久没有实现这个目标了,一直都有事,不好意思哈. 开展晒书评送书活动,在亚马逊.京东.当当三大图书网站上,发表<自己动手写CPU>书评的前十名读者,均可获赠<步步惊芯--软核处理器内部设计分析>一书,大家踊跃参与吧!活动时间:2014-9-11至2014-10-30 9.3.2 修改执行阶段 1.修改EX模块 在执行阶段的EX模块会计算加载存储的目的地址,参考图9-19可知,EX模块会增加部

DICOM:DICOM三大开源库对比分析之“数据加载”

背景: 上一篇博文DICOM:DICOM万能编辑工具之Sante DICOM Editor介绍了DICOM万能编辑工具,在日常使用过程中发现,"只要Sante DICOM Editor打不开的数据,基本可以判定此DICOM文件格式错误(准确率达99.9999%^_^)".在感叹Sante DICOM Editor神器牛掰的同时,想了解一下其底层是如何实现的.通过日常使用以及阅读软件帮助手册推断其底层依赖库很可能是dcmtk,就如同本人使用dcmtk.fo-dicom.dcm4che3等

自己动手写CPU之第九阶段(4)——加载存储指令实现思路

将陆续上传新书<自己动手写CPU>,今天是第40篇,我尽量每周四篇,但是最近已经很久没有实现这个目标了,一直都有事,不好意思哈. 开展晒书评送书活动,在亚马逊.京东.当当三大图书网站上,发表<自己动手写CPU>书评的前十名读者,均可获赠<步步惊芯--软核处理器内部设计分析>一书,大家踊跃参与吧!活动时间:2014-9-11至2014-10-30 9.2 加载存储指令实现思路 9.2.1 实现思路 本节介绍除ll.sc之外的加载存储指令的实现思路,ll.sc指令的实现思路

自己动手写CPU之第九阶段(1)——加载存储指令说明2(lwl、lwr)

将陆续上传新书<自己动手写CPU>,今天是第38篇,我尽量每周四篇,但是最近已经很久没有实现这个目标了,一直都有事,不好意思哈. 开展晒书评送书活动,在亚马逊.京东.当当三大图书网站上,发表<自己动手写CPU>书评的前十名读者,均可获赠<步步惊芯--软核处理器内部设计分析>一书,大家踊跃参与吧!活动时间:2014-9-11至2014-10-20 今天继续对MIPS32中加载存储指令进行说明(主要是lwl.lwr),上次已经介绍一些其他的加载存储指令,大家可以回顾. 9.

Android数据加载及Json解析——框架版

方法调用 new ApiUser(this).initData(new ApiRequest() { @Override public void onResult(BeanRequest bean) { //如果接口调用不成功,给予提示 if (!bean.isSuccess()) { UtilToast.show(Activitymain.this, bean.getErrInfo(), UtilToast.STYLE_ERROR); } //Json数据解析:BeanInitData 数据实

自己动手写CPU之第九阶段(3)——加载存储指令说明2(swl、swr)

将陆续上传新书<自己动手写CPU>,今天是第39篇,我尽量每周四篇,但是最近已经很久没有实现这个目标了,一直都有事,不好意思哈. 开展晒书评送书活动,在亚马逊.京东.当当三大图书网站上,发表<自己动手写CPU>书评的前十名读者,均可获赠<步步惊芯--软核处理器内部设计分析>一书,大家踊跃参与吧!活动时间:2014-9-11至2014-10-30 今天继续对MIPS32中加载存储指令进行说明(主要是swl.swr),上次已经介绍一些其他的加载存储指令,大家可以回顾. 9.