2017-01-20 6 views

答えて

1

はあなたがto_sparse(0)と、それはスパース作ることができるデータフレームdf

df = pd.DataFrame(np.zeros((10, 10))) 
df.iloc[5, 5] = 1 

df 

    0 1 2 3 4 5 6 7 8 9 
0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 
1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 
2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 
3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 
4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 
5 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 
6 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 
7 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 
8 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 
9 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 

Memmory Usage: 880 

を考えてみましょう。
最初の引数は、負担する値です。

d1 = df.to_sparse(0) 

d1 

    0 1 2 3 4 5 6 7 8 9 
0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 
1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 
2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 
3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 
4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 
5 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 
6 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 
7 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 
8 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 
9 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 

Memmory Usage: 88 

メモリフットプリントは、サイズの10分の1です。

0

この回答は、データを可能な限りスパースに保ち、メモリの問題を回避します。 csr_matrixは、モデリングのためにscipyとsklearnで使用できる標準の疎行列形式です。

import pandas as pd 
from scipy import sparse 
df = pd.DataFrame({'rowid':[1,2,3,4,5], 'val1':[1, 1, 0, 0, 0], 'val2':[1, 0, 0, 1, 0]}) 
print 'Input data frame\n{0}'.format(df) 
print 'DataFrame to a sparse matrix' 
df_as_sparse_matrix = sparse.csr_matrix(df.as_matrix()) 
print df_as_sparse_matrix.todense() 
関連する問題