(这个问题与"populate a Pandas SparseDataFrame from a SciPy Sparse Matrix"有关。我想从scipy.sparse填充SparseDataFrame。 coo _matrix(具体)提到的问题是针对不同的SciPy稀疏矩阵( CSR )... 所以这里......)
我注意到熊猫现在有support for Sparse Matrices and Arrays。目前,我创建了这样的DataFrame()
:
return DataFrame(matrix.toarray(), columns=features, index=observations)
有没有办法用SparseDataFrame()
或scipy.sparse.coo_matrix()
创建coo_matrix()
?转换为密集格式会严重影响RAM。谢谢!
答案 0 :(得分:2)
http://pandas.pydata.org/pandas-docs/stable/sparse.html#interaction-with-scipy-sparse
实现了一个方便的方法SparseSeries.from_coo(),用于从scipy.sparse.coo_matrix创建SparseSeries。
在scipy.sparse
中,有一些方法可以将数据表单相互转换。 .tocoo
,.tocsc
等。因此,您可以使用哪种形式最适合特定操作。
换句话说,我已经回答了
Pandas sparse dataFrame to sparse matrix, without generating a dense matrix in memory
2013年您的关联答案按行进行迭代 - 使用toarray
使行密集。我没看过大熊猫from_coo
做了什么。
关于熊猫稀疏的最新SO问题
non-NDFFrame object error using pandas.SparseSeries.from_coo() function
来自https://github.com/pydata/pandas/blob/master/pandas/sparse/scipy_sparse.py
def _coo_to_sparse_series(A, dense_index=False):
""" Convert a scipy.sparse.coo_matrix to a SparseSeries.
Use the defaults given in the SparseSeries constructor. """
s = Series(A.data, MultiIndex.from_arrays((A.row, A.col)))
s = s.sort_index()
s = s.to_sparse() # TODO: specify kind?
# ...
return s
实际上,它需要使用相同的data
,i
,j
来构建coo
矩阵,制作一个系列,对其进行排序,并将其转换为稀疏系列。