绘制对数刻度数据时处理零

数据挖掘 Python 可视化 绘图 对数
2022-02-22 15:26:15

我有一个非负变量,我想绘制它,对数缩放

我试图了解如何处理0-values。我想到的一个天真的想法就是添加1所有值(或一些非常小的大于1

还有哪些其他选择?

谢谢

2个回答

您的建议是有效的,一旦应用缩放,编码具有已知结果的变量。Log(1) 将变为零,所以在下一个阶段请记住这一点。您可以使用clipreplace为此:

df.clip(1, df.max())

或尝试替换为NaN

df.replace(0, np.nan)

或者,您可以执行以下操作之一:

  1. 删除零值行,例如df = df[df['column'] !=0],但随后您会丢失一些数据。
  2. 用具有统计代表性的值(即插值)填充零值。您可以在此处探索Pandas 插值方法

您决定采用哪种方法取决于您的用例以及与您使用的绘图功能的兼容性。

对于这类问题,我通常会添加对数基数的倒数。对于 log10 缩放的数据,这会导致所有值都增加 0.1。对于以 log2 为单位的数据,这会导致所有值都增加 0.5。这具有将所有 0 值映射到对数刻度中的 -1 的好特性,无论您使用什么对数基数。如果您的数据在数值上非常小,您可能希望使用更高的倒数幂来避免添加会导致实际值变化数倍的因素。例如,如果数据都在 0 到 0.01 之间,我可能会在 log10 缩放时添加 0.0001 的因子。