python pandas HDFStore append不连续大小d

2024-09-30 00:24:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我在使用python2.7和pandas和HDFStore

我试图处理一个大数据集,它可以放入磁盘,但不能放入内存。在

我把一个大数据集存储在一个.h5文件中,每一列中的数据大小不是恒定的,例如,一列一行可能有5个字符的字符串,另一个列可能有20个字符的字符串。在

因此,当第一次迭代包含较小的数据,而随后的批处理包含较大的数据时,我在迭代中将数据写入文件时遇到了问题。在

我发现问题是min_大小没有正确使用,数据不适合列,我使用以下代码将数据库缓存到h5中,没有错误

colsLen = {}
        for col in dbCols:
            curs.execute('SELECT MAX(CHAR_LENGTH(%s)) FROM table' % col)
            for a in curs:
                colsLen.update({col: a[0]})

        # get the first row to create the hdfstore
        rx = dbConAndQuery.dbTableToDf(con, table, limit=1, offset=0) #this is my utility that is querying the db 
        hdf.put("table", table, format="table", data_columns=True, min_itemsize=colsLen)

        for i in range(rxRowCount / batchSize + 1):
            rx = dbConAndQuery.dbTableToDf(con, table, limit=batchSize, offset=i * batchSize + 1)
            hdf.append("table", table, format="table", data_columns=True, min_itemsize=colsLen)

        hdf.close() 

在每一个查询中,的情况下,不能使用最大的数据大小?e、 g由于内存限制,在迭代中获取或创建数据。在

我发现我可以使用磁盘内数据帧的dask来处理数据,但它缺少pandas中需要的一些功能,所以主要思想是批量处理数据,并将其附加到现有的HDFStore文件中。在

谢谢!在


Tags: 文件the数据内存inpandasfortable
1条回答
网友
1楼 · 发布于 2024-09-30 00:24:22

我发现问题是hdf优化数据存储并计算每列最大值的大小

我找到了两种方法来解决这个问题: 1.预查询数据库,获取每列的最大数据字符长度 2.将每一批插入到文件中的一个新键中,然后它工作,每个批将被插入到hdf文件中,使用它的最大值作为列中的最大值

相关问题 更多 >

    热门问题