如何在 Python 中创建大数据框

数据挖掘 Python 数据框 tfidf
2022-02-27 13:59:04

我有一个由 TfidfVectorizer 创建的稀疏矩阵,其大小为我想将转换为数据框,但总是出现内存错误。X(500000,200000)X

我试过

pd.DataFrame(X.toarray(), columns=tokens)

pd.read_csv(X.toarray().astype("float32"), columns=tokens, chunksize=...).

似乎当我使用 将转换为 numpy 数组 时,出现错误。XX.toarray()

有人能告诉我什么是一个简单的解决方案吗?创建一个稀疏数据帧而不会出现内存错误?X

我一直在 Google Colab Pro 上运行我的代码,我认为它为我提供了不到 100 GB 的内存。

3个回答

您可以使用pandas.Dataframe.sparse.from_spmatrix. 它将创建一个由pd.arrays.SparseArrayscipy 稀疏矩阵填充的 Dataframe。

Pandas 曾经有明确的稀疏数据帧,但在更现代的版本中没有这样的概念。只有正常的 pd.Dataframe 由稀疏数据填充。

正如你提到的,我不得不处理巨大的数据帧,以防问题通过将数据帧存储为picklepd.to_pickle()而不是csv来“解决”。

内存使用量减少 60%

我最近还听说了一种名为羽毛的格式

以供参考:

https://towardsdatascience.com/the-best-format-to-save-pandas-data-414dca023e0d

在此处输入图像描述

除了稀疏数组之外,您还可以使用max_dfandmin_df或tfidfvectorizer。max_features