python - 如何检查 Pandas DataFrame 的稀疏性?

标签 python pandas dataframe sparse-matrix

在 Pandas 中,如何检查 DataFrame 的稀疏程度?有没有可用的功能,或者我需要自己编写?
现在,我有这个:

df = pd.DataFrame({'a':[1,0,1,1,3], 'b':[0,0,0,0,1], 'c':[4,0,0,0,0], 'd':[0,0,3,0,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

关于python - 如何检查 Pandas DataFrame 的稀疏性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63986466/

相关文章:

python - 统计每个月的值,低于一定限度填NaN

python - 映射声波涉及哪些技术?

python - 窗口图标不显示

python - 在 groupby 函数中应用 tail 重复列

python - 使用 Pandas 根据该行中的值从 csv 文件中删除特定行之前的行

python - 如何对DataFrame的列进行分类和计数?

Python:在特定位置将行插入数据帧的更快方法?

python - 如何在屏幕上绘制对象?

python - Biopython 可以执行 Seq.find() 解释歧义代码吗

python - 合并两个具有列表的数据集,并在使用 pandas 合并后保留列表