将HDF5文件转换为.CSV Pandas时出现问题

时间:2017-12-08 18:31:58

标签: python pandas csv tableau hdf5

我正在尝试将许多.h5文件转换为可在tableau中打开的格式。因为我是python调试器的新手,所以我无法检测到可能发生的任何运行时错误。另外,我不确定拆分生成的CSV是否更好,或者只是将其全部保存到一个文件中。我不肯定如何做这些事情。

from pandas import HDFStore
import pdb

import os
indir = 'C:\Users\Aktosar\data'
for root, dirs, filenames in os.walk(indir)
    for f in filenames:
        Pandas.convert(f)

我也无法决定是使用.toCSV还是其他保存方法。将所有数据成功转换为可在tableau中打开的csv的任何方法都是此练习的正确方法。 :)

任何有关完成此任务的帮助都将非常感谢!

1 个答案:

答案 0 :(得分:0)

我认为os.walk可能很棘手。很容易忘记你的位置。最重要的是,无论您是从.h5阅读还是使用pd.HDFStore,带有pandas的pd.read_hdf也会非常棘手。弄清楚h5文件中的数据集名称更加荒谬。这就是说,很多事情都可能出错。

import pandas as pd
import numpy as np
import h5py
import os

dfs = []
for path, dirs, filenames in os.walk(os.curdir):
    if path != os.curdir:
        print(path, dirs, filenames)
        for file in filenames:
            file_path = os.path.join(path, file)
            h5_store = h5py.File(file_path, mode='r')
            dataset_names = list(h5_store.keys())
            for dataset in dataset_names:
                df = pd.DataFrame(h5_store[dataset].value)
                print(file, df.shape)
                dfs.append(df)
            h5_store.close()

final = pd.concat(dfs, ignore_index=True).reset_index()
print(final.shape)

我的目录看起来像:

  dir1
      arr0.h5
     dir4
         arr0.h5
         arr1.h5
         arr2.h5
         arr3.h5
  dir2
      arr0.h5
      arr1.h5
  dir3
      arr0.h5
      arr1.h5
      arr2.h5
     dir5
         arr0.h5
     dir6
         arr0.h5
         arr1.h5
         arr2.h5
         arr3.h5
        dir7
            arr0.h5
            arr1.h5
            arr2.h5
            arr3.h5

df = pd.DataFrame(h5_store[dataset].value)部分是关键。那可能行不通。这取决于数据的类型。如果不起作用,您可以尝试pd.read_hdf(...)。它还取决于每个.h5文件中是否有多个数据集。