35

Pandas がSparse Matrices と Arrays をサポートするようになったことに気付きました。現在、次DataFrame()のような sを作成しています。

return DataFrame(matrix.toarray(), columns=features, index=observations)

SparseDataFrame()またはでを作成する方法はありますscipy.sparse.csc_matrix()csr_matrix()? 高密度フォーマットに変換すると、RAM が大幅に消費されます。ありがとう!

4

3 に答える 3

30

ダイレクト コンバージョンはサポートされていません。貢献は大歓迎です!

これを試してみてください。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
于 2013-07-23T19:32:57.817 に答える
-8

はるかに短いバージョン:

df = pd.DataFrame(m.toarray())
于 2015-11-04T06:47:00.493 に答える