在 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/