Python 创建pandas.DataFrame或pandas.sparaframe的最便宜方法

Python 创建pandas.DataFrame或pandas.sparaframe的最便宜方法,python,pandas,scipy,bigdata,sparse-matrix,Python,Pandas,Scipy,Bigdata,Sparse Matrix,假设我们有一个巨大而稀疏的矩阵,将其填充到pandas.DataFrame中最便宜的方法是什么?更具体地说,庞大的矩阵来自一个包含大量虚拟变量的大数据集,密集版本矩阵占用150Gb+的内存,这显然是不持久的 作为熊猫的新手,我试图深入了解python.pandas的内存管理。目前的困境描述如下: 使用密集源矩阵并调用pd.DataFrame不会导致内存复制。但密集矩阵会占用大部分空间 如果使用scipy.csr\u矩阵,pd.DataFrame不接受它作为构造函数的参数。退一步说,如果我们求助

假设我们有一个巨大而稀疏的矩阵,将其填充到pandas.DataFrame中最便宜的方法是什么?更具体地说,庞大的矩阵来自一个包含大量虚拟变量的大数据集,密集版本矩阵占用150Gb+的内存,这显然是不持久的

作为熊猫的新手,我试图深入了解python.pandas的内存管理。目前的困境描述如下:

  • 使用密集源矩阵并调用
    pd.DataFrame
    不会导致内存复制。但密集矩阵会占用大部分空间
  • 如果使用
    scipy.csr\u矩阵
    pd.DataFrame
    不接受它作为构造函数的参数。退一步说,如果我们求助于
    pd.sparsaframe
    ,如何避免内存复制
  • 介绍了一种将
    scipy.csr\u矩阵
    转换为
    pd.sparaframe
    的好方法。但是for循环效率太低,导致内存拷贝
此外,我正在尝试将
sparaframe
初始化到内存块中,并逐行分配值,结果是:

a = np.random.rand(4,5)
b = pd.DataFrame(a)
c = sparse.csr_matrix(a)
d = pd.SparseDataFrame(index=b.index, columns=b.columns)
elem = pd.SparseSeries(c[2].toarray().ravel())
d.loc[[2]] = [ elem ]  # Got a NotImplementedError.
elem = pd.Series(c[2].toarray().ravel())
b.loc[[2]] = [ elem ]  # Yes.
我觉得脚本语言是不错的,毫无疑问。但我现在可能只需要一个指针


任何帮助都将提前感谢

我觉得这可能是一个相关的帖子/答案