如何解决如何检查Pandas DataFrame的稀疏性?
在Pandas中,如何检查DataFrame的稀疏程度?有可用的功能,还是我需要编写自己的功能?
现在,我有这个:
df = pd.DataFrame({'a':[1,1,3],'b':[0,1],'c':[4,0],'d':[0,3,0]})
a b c d
0 1 0 4 0
1 0 0 0 0
2 1 0 0 3
3 1 0 0 0
4 3 1 0 0
sparsity = sum((df == 0).astype(int).sum())/df.size
将零的数量除以元素的总数,在此示例中为0.65。
想知道是否有更好的方法可以做到这一点。并且,如果有任何函数可以提供有关稀疏度的更多信息(例如NaN,则其他任何重要数字,例如-1)。
解决方法
解决方案的一个主意是将其转换为numpy数组,进行比较并使用mean
:
a = (df.to_numpy() == 0).mean()
print (a)
0.65
如果想使用Sparse
dtypes,可以使用:
#convert each column to SparseArray
sparr = df.apply(pd.arrays.SparseArray)
print (sparr)
a b c d
0 1 0 4 0
1 0 0 0 0
2 1 0 0 3
3 1 0 0 0
4 3 1 0 0
print (sparr.dtypes)
a Sparse[int64,0]
b Sparse[int64,0]
c Sparse[int64,0]
d Sparse[int64,0]
dtype: object
print (sparr.sparse.density)
0.35
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。