将大型训练集CSV文件转为HDF5(.h5)文件的作用及示例代码

将大的CSV文件转换为HDF5(.h5)文件有以下几个作用:

更快的读写速度:HDF5文件采用二进制格式存储数据,相比于CSV文件的文本格式,读写速度更快,尤其是对于大型数据集。

更小的存储空间:HDF5文件采用压缩算法存储数据,相比于CSV文件的文本格式,可以大大减小存储空间。

更方便的数据访问:HDF5文件可以通过索引和标签等方式方便地访问数据,而CSV文件则需要逐行读取和解析。

更好的数据组织:HDF5文件支持多维数组和嵌套数据结构,可以更好地组织和管理数据。

因此,将大的CSV文件转换为HDF5文件可以提高数据处理的效率和可靠性,特别是对于需要频繁读写和访问大型数据集的应用程序。

将大型的CSV文件转为.h5文件示例代码

import pandas as pd
import h5py


def csv2h5(csv_file, chunk_size, name):
    df_chunks = pd.read_csv(csv_file,
                            sep=',',
                            index_col=0,
                            chunksize=chunk_size)

    with h5py.File(name, 'w') as file:
        total_cols = 0
        for i, chunk in enumerate(df_chunks):
            chunk = chunk.transpose()
            chunk = chunk.fillna(0)
            # 0填充
            data_array = chunk.to_numpy()
            chunk_cols = data_array.shape[1]
            if i == 0:
                samples_num = data_array.shape[0]
                dataset = file.create_dataset('data',
                                              shape=data_array.shape,
                                              maxshape=(samples_num, None))

            dataset.resize((dataset.shape[0], total_cols + chunk_cols))

            dataset[:, total_cols:total_cols + chunk_cols] = data_array

            total_cols += chunk_cols

    return None


chunk_size = 5000

csv_file = 'traindata.csv'
csv2h5(csv_file , chunk_size, 'train.h5')
print('transform traindata over')

你可能感兴趣的:(机器学习)