如何用pandas处理hdf5文件

什么是HDF5

HDF5:Hierarchical Data Format Version 5,对于存储大规模、具有相同类型的数据,HDF5是一种非常不错的存储格式,文件后缀名为h5。这种格式的文件的存储和读取速度非常快,并且我们可以把HDF5文件看成是一个"目录",它是分层次的,我们来看看如何操作。

创建和读取HDF5文件

import pandas as pd
import numpy as np

hdf5 = pd.HDFStore("hello.h5", mode="w", complevel=9)
"""
path: 文件路径
mode: 和python的open函数中的mode一致
complevel: 压缩级别,默认是0到9。值越大,压缩程度越高,那么最终形成的文件所占的体积越小,但是相应的,在读取的时候用的解压缩的时间就越长
"""
# 打印是一个HDFStore对象
print(hdf5) # <class 'pandas.io.pytables.HDFStore'>

# 存储数据,可以直接使用赋值的方式
hdf5["series"] = pd.Series([1, 2, 3, 4, 5])
hdf5["dataframe"] = pd.DataFrame(np.random.randint(3, 10, size=(8, 4)))
# 除此之外,还可以使用put的方式
"""
hdf5.put("series", pd.Series([1, 2, 3, 4, 5]))
hdf5.put("dataframe", pd.DataFrame(np.random.randint(3, 10, size=(8, 4))))

put函数里面支持如下参数:
key:写入数据的key
value:写入数据的value
format:指定写出的模式,指定为"fixed",那么速度会快,但是不支持追加和查询。指定为"table",会以表格的模式写出,速度稍慢,但是支持追加和查询操作
"""

# 我们可以通过items来查看相应属性,类似于字典的items
print(list(hdf5.items()))
"""
File path: hello.h5

[('/dataframe', /dataframe (Group) ''
 children := ['axis0' (CArray), 'axis1' (CArray), 'block0_values' (CArray), 'block0_items' (CArray)]), ('/series', /series (Group) ''
 children := ['index' (CArray), 'values' (CArray)])]
"""
# items不太好看,我们来看keys,查看keys,但是注意:没有values
# 我们发现key是类似于目录一样的东西,名字就是我们设置的名字
# 所以我们可以把HDF5看成是目录,里面不同的目录对应不同的内容
print(hdf5.keys()) # ['/dataframe', '/series']

# 查看元素直接调用即可
print(hdf5["dataframe"])
"""
  0 1 2 3
0 4 8 5 6
1 4 6 7 9
2 6 3 9 4
3 8 9 3 9
4 6 6 3 4
5 6 9 9 8
6 4 8 9 6
7 9 5 8 8
"""

# 删除某个key,调用remove
hdf5.remove("series")
print(hdf5.keys()) # ['/dataframe']

# 如果想将数据保存到本地,那么调用close方法即可
hdf5.close()
# 查看数据流是否开启,返回False代表关闭了
print(hdf5.is_open) # False

# 另外创建HDF5文件,除了使用HDFStore,还可以通过先有的DataFrame进行操作。需要指定路径和key
# df.to_hdf("xx.h5", key="key")

下面来看看如何读取文件

import pandas as pd
import numpy as np

# 将mode改成r即可
hdf5 = pd.HDFStore("hello.h5", mode="r")
# 或者
"""
hdfs = pd.read_hdf("hello.h5", key="xxx")
"""
# 至于操作我们上面已经介绍了

hdf5这种格式是一种非常不错的格式,它无论是在存储方面和读取方面,文件大小和读取数据都比csv强不少,因此如果要存储大量的数据的话,那么hdf5这种文件格式是一种非常不错的选择。

以上就是如何用pandas处理hdf5文件的详细内容,更多关于pandas处理hdf5文件的资料请关注我们其它相关文章!

(0)

相关推荐

  • Python存储读取HDF5文件代码解析

    HDF5 简介 HDF(Hierarchical Data Format)指一种为存储和处理大容量科学数据设计的文件格式及相应库文件.HDF 最早由美国国家超级计算应用中心 NCSA 开发,目前在非盈利组织 HDF 小组维护下继续发展.当前流行的版本是 HDF5.HDF5 拥有一系列的优异特性,使其特别适合进行大量科学数据的存储和操作,如它支持非常多的数据类型,灵活,通用,跨平台,可扩展,高效的 I/O 性能,支持几乎无限量(高达 EB)的单文件存储等,详见其官方介绍:https://suppo

  • 完美解决keras 读取多个hdf5文件进行训练的问题

    用keras进行大数据训练,为了加快训练,需要提前制作训练集. 由于HDF5的特性,所有数据需要一次性读入到内存中,才能保存. 为此,我采用分批次分为2个以上HDF5进行存储. 1.先读取每个标签下的图片,并设置标签 def load_dataset(path_name,data_path): images = [] labels = [] train_images = [] valid_images = [] train_labels = [] valid_labels = [] counte

  • python 读取txt,json和hdf5文件的实例

    一.python读取txt文件 最简单的open函数: # -*- coding: utf-8 -*- with open("test.txt","r",encoding="gbk",errors='ignore') as f: print(f.read()) 这里用open函数读取了一个txt文件,"encoding"表明了读取格式是"gbk",还可以忽略错误编码. 另外,使用with语句操作文件IO是个

  • 如何用pandas处理hdf5文件

    什么是HDF5 HDF5:Hierarchical Data Format Version 5,对于存储大规模.具有相同类型的数据,HDF5是一种非常不错的存储格式,文件后缀名为h5.这种格式的文件的存储和读取速度非常快,并且我们可以把HDF5文件看成是一个"目录",它是分层次的,我们来看看如何操作. 创建和读取HDF5文件 import pandas as pd import numpy as np hdf5 = pd.HDFStore("hello.h5", m

  • Pandas对CSV文件读写操作详解

    目录 什么是 CSV 文件 CSV 库解析 CSV 文件 读取 CSV 文件 CSV reader 参数 CSV 文件的写入 使用 pandas 库解析 CSV 文件 pandas 读取 CSV 文件 pandas 写入 CSV 文件 什么是 CSV 文件 CSV 文件(逗号分隔值文件)是一种纯文本文件,它使用特定的结构来排列表格数据.因为它是一个纯文本文件,所以只能包含实际的文本数据,换句话说就是可打印的 ASCII 或 Unicode 字符. 通常,CSV 文件的结构由其名称给出,使用逗号分

  • 利用numpy和pandas处理csv文件中的时间方法

    环境:numpy,pandas,python3 在机器学习和深度学习的过程中,对于处理预测,回归问题,有时候变量是时间,需要进行合适的转换处理后才能进行学习分析,关于时间的变量如下所示,利用pandas和numpy对csv文件中时间进行处理. date (UTC) Price 01/01/2015 0:00 48.1 01/01/2015 1:00 47.33 01/01/2015 2:00 42.27 #coding:utf-8 import datetime import pandas as

  • python:pandas合并csv文件的方法(图书数据集成)

    数据集成:将不同表的数据通过主键进行连接起来,方便对数据进行整体的分析. 两张表:ReaderInformation.csv,ReaderRentRecode.csv ReaderInformation.csv: ReaderRentRecode.csv: pandas读取csv文件,并进行csv文件合并处理: # -*- coding:utf-8 -*- import csv as csv import numpy as np # ------------- # csv读取表格数据 # ---

  • 使用pandas读取csv文件的指定列方法

    根据教程实现了读取csv文件前面的几行数据,一下就想到了是不是可以实现前面几列的数据.经过多番尝试总算试出来了一种方法. 之所以想实现读取前面的几列是因为我手头的一个csv文件恰好有后面几列没有可用数据,但是却一直存在着.原来的数据如下: GreydeMac-mini:chapter06 greyzhang$ cat data.csv 1,name_01,coment_01,,,, 2,name_02,coment_02,,,, 3,name_03,coment_03,,,, 4,name_04

  • python 利用pandas将arff文件转csv文件的方法

    直接贴代码啦: #coding=utf-8 import pandas as pd def arff_to_csv(fpath): #读取arff数据 if fpath.find('.arff') <0: print('the file is nott .arff file') return f = open(fpath) lines = f.readlines() content = [] for l in lines: content.append(l) datas = [] for c i

  • pandas读取CSV文件时查看修改各列的数据类型格式

    下面给大家介绍下pandas读取CSV文件时查看修改各列的数据类型格式,具体内容如下所述: 我们在调bug的时候会经常查看.修改pandas列数据的数据类型,今天就总结一下: 1.查看: Numpy和Pandas的查看方式略有不同,一个是dtype,一个是dtypes print(Array.dtype) #输出int64 print(df.dtypes) #输出Df下所有列的数据格式 a:int64,b:int64 2.修改 import pandas as pd import numpy a

  • 解决Python中pandas读取*.csv文件出现编码问题

    1.问题 在使用Python中pandas读取csv文件时,由于文件编码格式出现以下问题: Traceback (most recent call last): File "pandas\_libs\parsers.pyx", line 1134, in pandas._libs.parsers.TextReader._convert_tokens File "pandas\_libs\parsers.pyx", line 1240, in pandas._libs

随机推荐