我注意到熊猫现在有支持稀疏矩阵和数组。目前,我创建DataFrame()
像这样:
return DataFrame(matrix.toarray(), columns=features, index=observations)
有没有办法创建一个SparseDataFrame()
with a scipy.sparse.csc_matrix()
or csr_matrix()
?转换为密集格式会严重消耗 RAM。谢谢!
ATM 不支持直接转换。欢迎贡献!
试试这个,在内存上应该没问题,因为 SpareSeries 很像 csc_matrix (对于 1 列)
而且空间利用率很高
In [37]: col = np.array([0,0,1,2,2,2])
In [38]: data = np.array([1,2,3,4,5,6],dtype='float64')
In [39]: m = csc_matrix( (data,(row,col)), shape=(3,3) )
In [40]: m
Out[40]:
<3x3 sparse matrix of type '<type 'numpy.float64'>'
with 6 stored elements in Compressed Sparse Column format>
In [46]: pd.SparseDataFrame([ pd.SparseSeries(m[i].toarray().ravel())
for i in np.arange(m.shape[0]) ])
Out[46]:
0 1 2
0 1 0 4
1 0 0 5
2 2 3 6
In [47]: df = pd.SparseDataFrame([ pd.SparseSeries(m[i].toarray().ravel())
for i in np.arange(m.shape[0]) ])
In [48]: type(df)
Out[48]: pandas.sparse.frame.SparseDataFrame
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)