我有一个包含几个字符串列的dataframe,我想将它们转换为分类数据,这样我就可以运行一些模型并从中提取重要的特性。在
但是,由于唯一值的数量,一个热编码的数据会扩展为大量的列,这会导致性能问题。在
为了解决这个问题,我在get_dummies中尝试使用Sparse = True
参数。在
test1 = pd.get_dummies(X.loc[:,['col1','col2','col3','col4']].head(10000))
test2 = pd.get_dummies(X.loc[:,['col1','col2','col3','col4']].head(10000),sparse = True)
但是,当我检查两个比较对象的信息时,它们占用的内存量相同。似乎Sparse = True
使用的空间并没有减少。为什么?在
我查看了pandasget_dummies源代码,但到目前为止还没有发现错误。下面是我做的一个小实验(前半部分是用真实数据重现你的问题)。在
到目前为止,与您的结果相同(}显式地将{}转换为{}
^{pr2}$df1
的大小等于df2
)的结果,但是如果我使用to_sparse
和{现在内存使用量是一半,因为一半的数据是
0
。在总之,我不确定为什么get_dummies(sparse=True)不压缩数据帧,即使它被转换为sparsedaframe,但是有一个解决方法。相关的讨论正在github get_dummies with sparse doesn't convert numeric to sparse中进行,但结论似乎仍悬而未决。在
相关问题 更多 >
编程相关推荐