2017-01-20 66 views

回答

1

考慮數據框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 

你可以把它與疏to_sparse(0)
第一個參數是假定的值是填充值。

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個大小。

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()