第 6 章 数据加载、存储与文件格式 |
您所在的位置:网站首页 › 破解二进制文件存储格式的方法 › 第 6 章 数据加载、存储与文件格式 |
6.2 二进制数据格式使用HDF5格式读取Microsoft Excel文件6.2 二进制数据格式 实现数据的高效二进制格式存储最简单的办法之一是使用Python内置的pickle序列化。pandas对象都有一个用于将数据以pickle格式保存到磁盘上的to_pickle方法: In [87]: frame = pd.read_csv('examples/ex1.csv')In [88]: frameOut[88]: a b c d message0 1 2 3 4 hello1 5 6 7 8 world2 9 10 11 12 fooIn [89]: frame.to_pickle('examples/frame_pickle')你可以通过pickle直接读取被pickle化的数据,或是使用更为方便的pandas.read_pickle: In [90]: pd.read_pickle('examples/frame_pickle')Out[90]: a b c d message0 1 2 3 4 hello1 5 6 7 8 world2 9 10 11 12 foo注意:pickle仅建议用于短期存储格式。其原因是很难保证该格式永远是稳定的;今天pickle的对象可能无法被后续版本的库unpickle出来。虽然我尽力保证这种事情不会发生在pandas中,但是今后的某个时候说不定还是得“打破”该pickle格式。 pandas内置支持两个二进制数据格式:HDF5和MessagePack。下一节,我会给出几个HDF5的例子,但我建议你尝试下不同的文件格式,看看它们的速度以及是否适合你的分析工作。pandas或NumPy数据的其它存储格式有: bcolz:一种可压缩的列存储二进制格式,基于Blosc压缩库。Feather:我与R语言社区的Hadley Wickham设计的一种跨语言的列存储文件格式。Feather使用了Apache Arrow的列式内存格式。 使用HDF5格式HDF5是一种存储大规模科学数组数据的非常好的文件格式。它可以被作为C标准库,带有许多语言的接口,如Java、Python和MATLAB等。HDF5中的HDF指的是层次型数据格式(hierarchical data format)。每个HDF5文件都含有一个文件系统式的节点结构,它使你能够存储多个数据集并支持元数据。与其他简单格式相比,HDF5支持多种压缩器的即时压缩,还能更高效地存储重复模式数据。对于那些非常大的无法直接放入内存的数据集,HDF5就是不错的选择,因为它可以高效地分块读写。 虽然可以用PyTables或h5py库直接访问HDF5文件,pandas提供了更为高级的接口,可以简化存储Series和DataFrame对象。HDFStore类可以像字典一样,处理低级的细节: In [92]: frame = pd.DataFrame({'a': np.random.randn(100)})In [93]: store = pd.HDFStore('mydata.h5')In [94]: store['obj1'] = frameIn [95]: store['obj1_col'] = frame['a']In [96]: storeOut[96]: File path: mydata.h5/obj1 frame (shape->[100,1]) /obj1_col series (shape->[100]) /obj2 frame_table (typ->appendable,nrows->100,ncols->1,indexers->[index])/obj3 frame_table (typ->appendable,nrows->100,ncols->1,indexers->[index])HDF5文件中的对象可以通过与字典一样的API进行获取: In [97]: store['obj1']Out[97]: a0 -0.2047081 0.4789432 -0.5194393 -0.5557304 1.965781.. ...95 0.79525396 0.11811097 -0.74853298 0.58497099 0.152677[100 rows x 1 columns]HDFStore支持两种存储模式,’fixed’和’table’。后者通常会更慢,但是支持使用特殊语法进行查询操作: In [98]: store.put('obj2', frame, format='table')In [99]: store.select('obj2', where=['index >= 10 and index |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |