如何计算旧值为零时的百分比

sam*_*sam 21 math

我需要以下情况的逻辑.这样做我很无能为力.

考虑一月我有10美元的收入,而二月我有20美元的收入.

我的成长((20-10)/10)*100% = 100%

如果我3月份收入为0美元.

那我的成长就是((0-10)/10)*100 % =-100 %.我应该将其称为负百分比吗?(我知道它的通货紧缩)

更进一步,

如果现在我4月20美元的收入.

我现在如何计算增长?确定以下公式是错误的,((20-0)/0)*100 %= ?????

我的基本问题是

  1. 除了上面的那个之外,还有更好的解决方案来找到增长率吗?

  2. 如果我使用上述公式,我应该采取一些值作为参考吗?或者这也错了?

小智 17

肯定一个编程问题.问题在于它本身无法编程.当P实际上为零时,百分比变化的概念没有意义.零到任何东西都不能表示为速率,因为它超出速率的定义边界.从"不存在"变为"存在"并不是存在的变化 ,而是存在的创造.

  • 我喜欢"从'不是'变成'存在'这句话不是存在的变化,而是存在的创造." 这意味着很多:) (14认同)
  • 绝对是编程语言中的莎士比亚! (5认同)

mcw*_*yrm 9

如果您需要以百分比显示增长,则习惯于[NaN]在这些情况下展示或类似.另一方面,在这种情况下,增长率将报告为$ /月.因此,在您的示例中April,增长率将计算为((20-0)/1.

无论如何,确定报告此特殊情况的正确方法是用户决策.它是否包含在您的用户要求中?

  • 否。如果分母为“0”,则计算结果不是数字,需要单独处理。另一方面,如果您想报告增长*率*,那么您应该使用不同的计算方式。具体来说,您应该将美元差异(收入、利润、支出等)除以时间差异(小时、天、月等)。 (3认同)
  • ...但是(这非常重要)显示分母为 0 的计算结果的*正确*方式不是编程决策。这是用户的决定。这里没有人能告诉你正确的做法;问你的用户。 (3认同)

小智 8

从0到任何其他数字都没有增长率.也就是说,没有从零到大于零的增加百分比,并且没有从零到小于零的减少百分比(负数).你需要决定的是在这种情况发生时输出的内容.以下是我感到满意的两种可能性:

  1. 任何时候你必须显示从零开始的增长率,输出无穷大符号(∞).如果您想知道,那就是你的数字键盘上的Alt + 236.您也可以使用负无穷大(-∞)从零开始的负增长率.
  2. 输出诸如"[增加/减少]从零"这样的语句或类似的东西.

不幸的是,如果您需要进一步计算的增长率,上述选项将不起作用,但另一方面,任何数字都会使您的以下计算不正确的数据,所以这一点没有实际意义.您需要更新以下计算以解决此可能性.

另外,当新旧值均为零时,((New-Old)/ Old)函数将不起作用.您应该创建一个初始检查以查看两个值是否为零,如果是,则输出零百分比作为增长率.


Sae*_*eed 7

如何在计算百分比变化时处理零是研究人员的电话,需要一些领域专业知识.如果研究人员认为它不会扭曲数据,那么他/她可以简单地为所有值添加一个非常小的常数来消除所有零.例如,在金融系列中,当处理交易量时,我们可能不想这样做,因为交易量= 0只意味着:资产根本没有交易.volume = 0的含义可能与volume = 0.00000000001非常不同.这是我的首选策略,在这种情况下,我无法在逻辑上为所有值添加一个小常量.考虑百分比变化公式((New-Old)/ Old)*100.如果New = 0,则百分比变化为-100%.这个数字确实具有经济意义,只要它是系列中的最小百分比变化(这确实是系列中最小的百分比变化).为什么?因为它表明交易量经历了最大可能的减少,从任何数字变为0,-100%.所以,在我的百分比变化系列中,我会很好.如果我对该系列进行标准化,那么甚至更好,因为这个(可能)相对较大的绝对值数将​​按照与其他变量相同的比例进行分析.现在,如果Old值= 0该怎么办呢.这是一个棘手的案例.从0到1的百分比变化将等于从0到100万的变化:无穷大.我们称之为"无限"百分比变化的事实是有问题的.在这种情况下,我会将无穷大设置为等于np.nan并插入它们.

下图显示了我上面讨论的内容.从系列1开始,我们得到系列4,可以进行分析,没有Inf或NaN.

在此输入图像描述

还有一件事:很多时候,计算百分比变化的原因是对数据进行固定.因此,如果您的原始系列包含零并且您希望将其转换为百分比变化以实现平稳性,请首先确保它尚未静止.因为如果是,您不必计算百分比变化.关键在于,大量取值为0的系列(OP的问题)很可能已经是静止的,例如我上面考虑的体积系列.想象一下在零上下摆动的系列,有时会达到0.这样的系列很可能已经静止不动.