日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

python迭代数据类型_在大型数据集上自动迭代推断数据类型和最小项大小

發(fā)布時(shí)間:2025/4/5 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python迭代数据类型_在大型数据集上自动迭代推断数据类型和最小项大小 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在我的工作領(lǐng)域,我經(jīng)常得到一個(gè)很大的csv文件,根本沒有關(guān)于內(nèi)容或格式的信息。我正在嘗試開發(fā)一個(gè)工作流來自動(dòng)推斷列的數(shù)據(jù)類型以及對(duì)象數(shù)據(jù)類型的最大字符串長(zhǎng)度,最終目標(biāo)是將格式化的數(shù)據(jù)集存儲(chǔ)在HDFStore中。我正在尋求幫助,為這個(gè)場(chǎng)景提供最佳實(shí)踐。我有一些有效的方法,但似乎效率低下:import pandas as pd

# first pass to determine file formats using pd.read_csv inference

fmts = []

chunker = pd.read_csv('../data/train.csv', chunksize=10000)

for chunk in chunker:

fmts.append(chunk.dtypes)

fmts = reduce(lambda x,y: x.combine(y, max), fmts)

前面的代碼段為每個(gè)塊累積推斷的數(shù)據(jù)類型,然后使用最大值減少它們:

^{pr2}$

所以第一步就完成了。我已經(jīng)創(chuàng)建了一個(gè)數(shù)據(jù)類型列表,這些數(shù)據(jù)類型可以在后續(xù)運(yùn)行時(shí)傳遞給read_csv?,F(xiàn)在要找到object列的最大長(zhǎng)度,這些列將作為string存儲(chǔ)在HDFStore中:# second pass now get max lengths of objects

objs = fmts[fmts == 'object'].index

cnvt = {obj : str for obj in objs}

lens = []

chunker = pd.read_csv('../data/train.csv', chunksize=10000,

converters=cnvt, usecols=objs)

for chunk in chunker:

for col in chunk:

lens.append(chunk.apply(lambda x: max(x.apply(len))))

# reduce the lens into one

lens = dict(reduce(lambda x,y: x.combine(y, max), lens))

我現(xiàn)在有了一個(gè)字典,其中object類型的列是鍵,所有塊的最大單元格長(zhǎng)度是值:In[2]:lens

Out[2]:

{'f137': 20,

'f138': 26,

'f206': 20,

'f207': 27,

'f276': 20,

'f277': 27,

'f338': 26,

'f390': 32,

'f391': 42,

'f419': 20,

'f420': 26,

'f466': 19,

'f469': 27,

'f472': 35,

'f534': 27,

'f537': 35,

'f626': 32,

'f627': 42,

'f695': 22,

'f698': 22}

最后一步是使用推斷的格式和長(zhǎng)度將所有內(nèi)容存儲(chǔ)在HDFStore表中:# Lastly loop through once more to append to an HDFStore table!

store = pd.HDFStore("../data/train.h5")

chunker = pd.read_csv('../data/train.csv', chunksize=10000, dtype=dict(fmts))

for chunk in chunker:

store.append('train', chunk, min_itemsize=lens)

這個(gè)工作流程有意義嗎?其他人如何處理不適合內(nèi)存且需要存儲(chǔ)在HDFStore磁盤上的大型數(shù)據(jù)集?在

總結(jié)

以上是生活随笔為你收集整理的python迭代数据类型_在大型数据集上自动迭代推断数据类型和最小项大小的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。