微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何检查Pandas DataFrame的稀疏性?

如何解决如何检查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 举报,一经查实,本站将立刻删除。