Python-Hypothesis:指定和管理 NaN 值

标签 python-hypothesis

我正在尝试使用假设来生成一组数据帧,并将其合并在一起。我希望允许每个单独的列具有 NaN 值,并且我希望允许 Hypothesis 生成一些古怪的示例。

但我最想关注的是每个数据帧中至少有一行具有实际值的示例 - 特别是,我希望能够生成具有在相应列之间共享的一些信息的数据帧,这样合并的数据框不为空。 (例如,我希望 store.csv 中“store”的某些值与 train.csv 中“store”的值重叠。)

我有一些示例代码 here它会到处生成 NaN 值和古怪的示例,但大多数生成的示例包含很少的非 NaN 值。 (数据框策略从第 57 行开始。)

对于如何创建稍微更“现实”的示例有什么建议吗?谢谢!

最佳答案

您的解决方案对我来说看起来不错,但这里还有两个可能有帮助的策略:

  1. 使用 columnsseriesfill=st.nothing() 参数来禁用填充行为。这使得条目变得密集而不是稀疏,因此运行时成本很高,但示例密度发生了显着变化。或者 fill=st.floats(allow_nan=False) 可能会更便宜并且仍然有效!

  2. 在策略上使用 .filter(...) 来拒绝没有任何 nan-free 行的数据帧。典型的经验法则是当它会拒绝超过一半的示例时避免使用 .filter ,并在超过十分之一时寻找替代方案......但这可以很容易地与第一点结合起来够了。

关于Python-Hypothesis:指定和管理 NaN 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54448434/

相关文章:

python - Pytest/假设未按预期匹配字符串

pytest:使用假设时的monkeypatch

python - 如何使用 Hypothesis 的复合策略执行 Python 函数?

python - 平面图假设未评估

python - 为什么strategy.permutations不提供最小的排列集?

python-hypothesis - 如何创建假设策略以在一定范围内均匀采样?

python - 如何构建策略来创建具有相同值对的元组数组?

python - 如何直接从数据类生成带有假设的测试样本?

python - 使用 pytest 和假设,如何让测试在发现第一个反例后立即返回?