TuShare(3):使用pandas 压缩存储hdf5文件

本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/51025044 未经博主允许不得转载。
博主地址是:http://blog.csdn.net/freewebsys

1,使用压缩



hdf5在存储的是支持压缩,使用的方式是blosc,这个是速度最快的也是pandas默认支持的。
使用压缩可以提磁盘利用率,节省空间。
开启压缩也没有什么劣势,只会慢一点点。
压缩在小数据量的时候优势不明显,数据量大了才有优势。
同时发现hdf读取文件的时候只能是一次写,写的时候可以append,可以put,但是写完成了之后关闭文件,就不能再写了,
会覆盖。

2,使用压缩方式写文件


import numpy as np
import pandas as pd
#生成9000,0000条数据,9千万条
a = np.random.standard_normal((90000000,4))
b = pd.DataFrame(a)
#普通格式存储:
h5 = pd.HDFStore('/data/stock/test_s.h5','w')
h5['data'] = b
h5.close()

#压缩格式存储
h5 = pd.HDFStore('/data/stock/test_c4.h5','w', complevel=4, complib='blosc')
h5['data'] = b
h5.close()

对比文件大小:

-rw-r--r--. 1 root root 2.7G Mar 31 11:20 test_c4.h5
-rw-r--r--. 1 root root 3.4G Mar 31 11:19 test_s.h5

省了700mb空间。

3,总结



本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/51025044 未经博主允许不得转载。
博主地址是:http://blog.csdn.net/freewebsys

pandas官网有CookBook。
http://pandas.pydata.org/pandas-docs/stable/cookbook.html
对比CSV文件格式,hdf5支持按照key寻找,可以直接把股票id作为key寻找。比较hdf5是结构化的数据格式,而csv还是个文本。
比数据库方式效果高多了,读写很快。
对于金融,股票系统。还是直接读写文件来的方便。
按照日期和股票id进行两个分区。而且后期迁移的时候直接可以迁移到hadoop 上面,也非常容易呢。

时间: 2024-09-14 01:34:36

TuShare(3):使用pandas 压缩存储hdf5文件的相关文章

稀疏矩阵 压缩存储-将.off文件中的数据进行压缩存储,最好是做到与稀疏矩阵的压缩存储相关

问题描述 将.off文件中的数据进行压缩存储,最好是做到与稀疏矩阵的压缩存储相关 一个duck.off文件,327个点的坐标(x,y,z.double型数据),650个三角形连接信息.要求是把这些信息读入数组,并将这些数据进行压缩存储. 我想问的是:这些数据的压缩存储怎么样可以抽象成 稀 疏 矩 阵的压缩存储duck.off: OFF (文件格式为OFF) 327 650 0 (有327个顶点构成650个三角形) 539.697 -1035.28 317.708 (第一个顶点的xyz分量) ..

C#中使用WinRAR实现加密压缩及解压缩文件

  本次示例主要实现: 1.压缩文件夹及其下文件 2.压缩文件夹下文件 3.压缩文件夹及其下文件为rar 还是 zip 4.解压缩 5.加密压缩及解加密压缩 ----------- 示例代码如下: ? protected void Button1_Click(object sender, EventArgs e) { string strtxtPath = "C://freezip//free.txt"; string strzipPath = "C://freezip//f

mcu-请教jpeglib库在压缩存储jpeg图片的详细过程

问题描述 请教jpeglib库在压缩存储jpeg图片的详细过程 jpeg库在压缩存储rgb数据时,是以压缩后的MCU为单位存储,还是以压缩后的一行rgb数据为单位存储? jpeg在压缩图片时不是以8x8的像素块(MCU也可能不是8x8)来编码的么,为什么它提供的 jpeg_write_scanlines()函数给人的感觉是压缩一行像素图,再把压缩后的数据存入文件中而不是存储一个压缩后的MCU.

java压缩多个文件并且返回流示例_java

这个类可以压缩多个文件并且返回流,在程序中可以再操作返回的流做其它功能,比如验证MD5,下面看代码吧 复制代码 代码如下: /*** 方法描述:<b>测试类</b></br>*/public class TestFileStream{ //文件和压缩包存储的位置StringtempFilePath="C:/temp/"List<String>fileList=newArrayList<String>();fileList.ad

android数据存储之文件存储方法_Android

文件存储是 Android 中最基本的一种数据存储方式,它不对存储的内容进行任何的格式化处理,所有数据都是原封不动的保存到文件当中的. 概述 文件存取的核心就是输入流和输出流. Android文件的操作模式 文件的相关操作方法 文件读写的实现 openFileOutput和openFileInput方法 /** * openFIleOutput ,openFileInput * 这两种方法同sp一样只能讲文件保存到手机内存固定的路径中, * 默认为 /data/data/<packageName

《MySQL技术内幕:InnoDB存储引擎第2版》——3.6 InnoDB存储引擎文件

3.6 InnoDB存储引擎文件 之前介绍的文件都是MySQL数据库本身的文件,和存储引擎无关.除了这些文件外,每个表存储引擎还有其自己独有的文件.本节将具体介绍与InnoDB存储引擎密切相关的文件,这些文件包括重做日志文件.表空间文件.3.6.1 表空间文件InnoDB采用将存储的数据按表空间(tablespace)进行存放的设计.在默认配置下会有一个初始大小为10MB,名为ibdata1的文件.该文件就是默认的表空间文件(tablespace file),用户可以通过参数innodb_dat

《Python和HDF 5大数据应用》——2.4 你的第一个HDF5文件

2.4 你的第一个HDF5文件 在我们研究组和数据集之前,让我们先看一下File对象能做些什么,来作为你进入HDF5世界的起点. 这里有一个最简单的使用HDF5的程序: File对象是你的起点.它提供方法使你能够在文件内创建新的数据集或组,另外还有一些一目了然的属性如.filename和.mode等. 说到.mode,HDF5文件支持Python对普通文件的读写模式: 还有一个额外的HDF5专有模式用于保护你不会意外覆盖某个已存在的文件: 如果一个同名文件已经存在则该函数会失败,否则会创建一个新

android数据存储之文件存储方法

文件存储是 Android 中最基本的一种数据存储方式,它不对存储的内容进行任何的格式化处理,所有数据都是原封不动的保存到文件当中的. 概述 文件存取的核心就是输入流和输出流. Android文件的操作模式 文件的相关操作方法 文件读写的实现 openFileOutput和openFileInput方法 /** * openFIleOutput ,openFileInput * 这两种方法同sp一样只能讲文件保存到手机内存固定的路径中, * 默认为 /data/data/<packageName

c++-求教!通过内存映射,实现生成的数组存储到文件中,显示出来头100个数?

问题描述 求教!通过内存映射,实现生成的数组存储到文件中,显示出来头100个数? 我目前就了解个大概,现在我不明白const DWORD mmf_size = 512*1024;//?这个地方不懂 ,这个原来的代码部分,我拿别人的代码改的,增加了自己的double的动态数组SigNRead,这个怎么弄 我就想实现,通过内存映射 实现写入 读取 double数组 数组有 1列 90000行个double数组成. #include #include #include #include #define