哪个是计算百分比变化的正确公式?

时间:2019-07-18 15:15:48

标签: python pandas data-science

我正在创建一个数据分析模型,我想知道2019年给定月份与2018年同月相比的变化情况。

例如:
2019年6月:358.269
2018年6月:423.149

在这种情况下,我想知道以下两个公式中哪一个是正确的,以便获得百分比变化:

公式1:

(358.269 / 423.149 - 1 ) * 100 = -15.33%

公式2:

((358.269 - 423.149) / 358.269) * 100 = -18.10%

我正在使用熊猫进行此分析

df['variation'] = ((df['2019'] / df['2018'] - 1) * 100 ).round(2)
df['variation'] = ((df['2019'] - df['2018']) / df['2019']) * 100).round(2)

我想知道两个公式中的哪个是正确的,或者如果还有另一个公式,我想知道在我的代码中要更正的内容。

2 个答案:

答案 0 :(得分:0)

您说具有这两个公式的逐年变化或变化

我喜欢第一个

  // Save block structure for ÅR
  var blockContent=[];
  $("#myForm").find('.blockContent').each(function(i,item){
    blockContent.push($(item).data('blockcontent'));
  });

$.ajax({
url:"/ajax/saveBlockStructure",
method:"POST",
async:true,
data: {
  id: "{{ $id }}",
  _token: "{{ csrf_token() }}",
  blockStructure: JSON.stringify(blockContent)
}
year_over_year_change = ((this_year - last_year) /(last_year))*100

第二个解决方案

df['variation'] = ((df['2019']- df['2018'])/df['2018'])*100
year_over_year_change ((this_year /last_year) -1)*100

答案 1 :(得分:0)

正如您的问题所暗示的,两个数字之间的百分比差异取决于您以哪个数字作为基线。通常通过上下文来表示。

诸如“上个月股票上涨18%”之类的意思是在(end - start) / start = 0.18上添加了起始金额的18%。

另一方面,诸如“去年这部手机的价格贵了30%”之类的说法相反:(start - end) / end = 0.3

对于您的特定情况,请确定哪个月份提供参考。 “ 2019年的给定月份与2018年的同一个月” 声音,您想知道2019年的价值相对于2018年的价值是多少/多少,因此您可以使用{{1} }。

在分母中使用2019年的值可以告诉您2018年相对于2019年而言要少得多。通常,我们按时间顺序将基线设置为第一个数据,因此您很少看到这种相反的表述。

可以重写这两个公式以排除分母:(value_2019 - value_2018) / value_2018value_2019 / value_2018 - 1

TL; DR

使用1 - value_2018 / value_2019或等效的(value_2019 - value_2018) / value_2018