gpt4 book ai didi

python - fillna的 Pandas 稀疏数据帧密度问题

转载 作者:太空宇宙 更新时间:2023-11-03 11:47:33 27 4
gpt4 key购买 nike

我正在尝试在 Pandas 中创建一个稀疏数据框。我通过

创建初始数据框
df =  pd.read_sql(sql=sql, con=db_eng, index_col=index)
idx = pd.MultiIndex.from_product([df.index.levels[0], df.index.levels[1]], names=df.index.names)
my_df = df.reindex(idx)

然后用下面的方法让它变得稀疏

s1 = my_df.to_sparse()
s2 = my_df.to_sparse(fill_value=0)
s2 = my_df.to_sparse().fillna(value=0)

当我检查 s1, s2, s3 的密度时,我得到了不同的值:

>>> s1.density
0.054158277796754875
>>> s2.density
1.0
>>> s3.density
0.054158277796754875

为什么第二种方法给我的密度为 1?

最佳答案

我无权访问您的数据,但看起来您的“空”值是 NaN,因此在基于 0 值(即 s2)使其稀疏时>),那么稀疏数据帧根本就不稀疏。

这将返回您所期望的:

s2 = my_df.fillna(0).to_sparse(fill_value=0)

现在您的“空”值为 0,因此使用 fill_value=0 调用 to_sparse 实际上会使您的数据帧变得稀疏。


编辑:换句话说,to_sparse 将根据 fill_value 使您的数据帧稀疏,即 NaN 默认情况下。

如果您在填充有 NaN 值的数据帧上使用 fill_value=0 调用 to_sparse,则生成的数据帧根本不稀疏( density = 1.0), 它充满了 NaN 值。

您应该阅读简介:http://pandas.pydata.org/pandas-docs/stable/sparse.html .

关于python - fillna的 Pandas 稀疏数据帧密度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35653544/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com