我正在将一个具有两列(A和B)的记录列表转换为矩阵表示。我一直在使用 pandas 中的 pivot 函数,但结果变得相当大。Pandas 是否支持将数据透视为稀疏格式?我知道我可以将其旋转然后将其转换为某种稀疏表示,但这不像我想要的那样优雅。我的最终目标是将其用作预测模型的输入。
或者,除了 pandas 之外,是否存在某种稀疏透视功能?
编辑:这里是一个非稀疏透视的示例
import pandas as pd
frame=pd.DataFrame()
frame['person']=['me','you','him','you','him','me']
frame['thing']=['a','a','b','c','d','d']
frame['count']=[1,1,1,1,1,1]
frame
person thing count
0 me a 1
1 you a 1
2 him b 1
3 you c 1
4 him d 1
5 me d 1
frame.pivot('person','thing')
count
thing a b c d
person
him NaN 1 NaN 1
me 1 NaN NaN 1
you 1 NaN 1 NaN
这会创建一个矩阵,其中包含所有可能的人和物品组合,但它不是稀疏的。
http://docs.scipy.org/doc/scipy/reference/sparse.html
稀疏矩阵需要更少的空间,因为它们可以表示NaN或0之类的东西。如果我有一个非常大的数据集,这个枢轴函数可以生成一个应该是稀疏的矩阵,因为它有大量的NaN或0。我希望通过生成一些稀疏的东西来节省大量空间/内存,而不是创建一个密集矩阵,然后将其转换为稀疏。