店长要做「满 200 减 30」,估算销量涨 30%,营业额从 486,000 涨到 631,800——看着很对。 换成毛利口径一算:218,700 变成 202,176,反而少了 16,524 元。 要追平,营业额得涨到 683,437 元,也就是涨 40.6%,比店长估的多了 10.6 个百分点。
上一篇讲「把总量拆开」,这一篇讲「换个口径」。 两件事加起来,就是数据分析最日常的用处:在拍板之前,把一个决定换算成一个能核的数。 这一篇的例子是一道减法题加一道除法题,不需要任何统计知识。
一、一个看着很对的决定
店长想做「满 200 减 30」。理由很直接:客流会涨,销量会涨,营业额会涨。 他算了一遍:促销前一个月 486,000 元,按涨 30% 估,促销后到 631,800 元。 这个算术没错。但他算的是营业额,而营业额不是他真正关心的东西。
营业额是一句真话,但它不是决策依据。决策依据是赚了多少钱。
二、换一个口径:毛利
营业额减去进货成本,剩下的叫毛利。它的百分比形式叫毛利率,这家店平时是 45%。 「满 200 减 30」意味着每卖出 200 元的东西,要少收 30 元。这 30 元是真金白银从毛利里出的。 按 15% 的让利幅度算,毛利率会从 45% 掉到 32% 左右——掉了 13 个百分点。
| 口径 | 营业额(元) | 毛利率 | 毛利(元) |
|---|---|---|---|
| 促销前 | 486,000 | 45% | 218,700 |
| 促销后 | 631,800 | 32% | 202,176 |
| 变化 | +145,800 | -13 个点 | -16,524 |
营业额涨了 145,800 元,毛利少了 16,524 元。同一个决定,两个口径给出相反的结论。 选错口径,算得再准也是白算。这也解释了为什么「我们这个月 GMV 涨了」这种话常常不能当结论用。
三、把「够不够」算成一个数
店长真正想问的是:销量涨多少,这个促销才不亏? 设促销后的营业额为 T,毛利率 32%,要让新毛利追平旧的 218,700 元,就得解一个一元方程。 218,700 ÷ 0.32 = 683,437。所以营业额得到 683,437 元,也就是涨 40.6%。
店长估的 30% 差了 10.6 个百分点。这 10.6 个百分点,就是「拍脑袋」和「算过」的距离。 注意这一步没有用到任何统计方法,只有一次除法。分析的门槛经常比想象的低,难的是想到该这么问。
四、结论对假设有多敏感
上面的答案依赖一个假设:毛利率会掉到 32%。这个数是怎么来的?是按「让利 15%」估的。 如果换成「满 200 减 20」,让利 10%,毛利率掉到 42%,同样的方程给另一个答案: 218,700 ÷ 0.42 = 520,714,营业额涨 7.1% 就够本——店长估的 30% 绰绰有余。
两个假设,两个结论:一个说「30% 远远不够」,一个说「30% 很宽裕」。 所以只报一个数的分析是不可用的。别人没法判断这个数稳不稳,也就没法据此拍板。
五、什么时候不需要这么算
不是每个决定都值得算。满 200 减 5、门店换个海报、客服换句话术,这类直接做,做完看结果。 值得算的是三类:一是不可逆的(签合同、改价、上新品),二是投入大的,三是会持续很久的。 判断标准很简单:错了以后能不能改回来。能改的,边做边看;改不回来的,先算。
分析的用途不是替你做决定,是把「错了会有多贵」提前告诉你。
六、动手 Demo:一个决定到底值多少钱
一组数字:促销前营业额 486,000 元、毛利率 45%,促销后营业额涨 30%、毛利率掉到 32%。 先按营业额算(涨了),再按毛利算(跌了),最后反解「要涨多少才不亏」。
BEFORE = (486000, 0.45)
AFTER = (int(486000 * 1.3), 0.32)
g0 = BEFORE[0] * BEFORE[1]
g1 = AFTER[0] * AFTER[1]
print("促销前 营业额 %d 毛利 %d" % (BEFORE[0], g0))
print("促销后 营业额 %d 毛利 %d" % (AFTER[0], g1))
print("营业额 %+d 元,毛利 %+d 元" % (AFTER[0] - BEFORE[0], g1 - g0))
need = g0 / AFTER[1]
print("要追平旧毛利,营业额得达到 %d 元" % need)
print("相当于涨 %.1f%%" % ((need - BEFORE[0]) * 100.0 / BEFORE[0]))
need2 = g0 / 0.42
print("若毛利率只掉到 42%%,要涨 %.1f%%" % ((need2 - BEFORE[0]) * 100.0 / BEFORE[0]))
实跑输出:
--------------------------------------------------------------------
一个决定到底值多少钱
--------------------------------------------------------------------
① 拍脑袋的决定:促销一定增收
--------------------------------------------------------------------
店长要做一个「满 200 减 30」的促销。他的理由很直接:客流会涨,销量会涨。
他算的是营业额:促销前一个月 486,000 元,促销后估计涨 30%,到 631,800 元。
营业额确实涨了。到这儿为止,这个决定看起来是对的。
! 「营业额涨了」是一句真话,但它不是决策依据。决策依据是赚了多少钱。
② 换一个口径:毛利
--------------------------------------------------------------------
| 口径 | 营业额(元) | 毛利率 | 毛利(元) |
|---|---:|---:|---:|
| 促销前 | 486,000 | 45% | 218,700 |
| 促销后 | 631,800 | 32% | 202,176 |
| 变化 | +145,800 | -13 个点 | -16,524 |
营业额涨了 145,800 元,毛利却少了 16,524 元。
原因在毛利率:满减那 30 元是真金白银从毛利里出的,卖得越多,出的越多。
! 同一个决定,两个口径给出两个相反的结论。选错口径,算得再准也是白算。
③ 补一个问法:要涨多少才不亏
--------------------------------------------------------------------
设促销后的营业额为 T,毛利率 32%,要让新毛利追平旧毛利,就得解一个一元方程。
| 项目 | 数值 |
|---|---:|
| 促销前毛利 | 218,700 元 |
| 促销后毛利率 | 32% |
| 要追平旧毛利,营业额得达到 | 683,437 元 |
| 相当于销量涨 | 40.6% |
按 32% 的毛利率,营业额得涨到 683,437 元才不亏,也就是要涨 40.6%。
店长估的是涨 30%,差 10.6 个百分点——这个差距就是「拍脑袋」和「算过」的距离。
! 数据分析的价值不在于把数算出来,在于把「涨多少才够」这句话变成一个可核的数。
④ 换个假设再算一遍
--------------------------------------------------------------------
如果促销只让毛利率掉到 42%(比如满 200 减 20),要涨多少才不亏?
答案是营业额到 520,714 元,涨 7.1%——店长估的 30% 就够得着了。
! 结论对假设的敏感度,本身就是结论的一部分。只报一个数的分析,别人没法判断它稳不稳。
第三行那个反解是这一篇的核心:g0 / AFTER[1],用旧毛利除以新毛利率,得到「要追平的营业额」。
%+d 让正数显示加号,%+d 遇到负数会天然带减号,比手写 if 干净。
30 秒实验
- 把促销后的毛利率从 32% 调到 34%,要追平的营业额变成多少?涨多少才够?
- 如果促销只做一周,上面那些「一个月」的数该怎么改?
- 想一想:为什么「满 200 减 30」的让利幅度是 15%,而毛利率却掉了 13 个百分点?两者为什么不等?
常见误区
- 拿营业额当收益:营业额里含成本,涨营业额不等于多赚钱。
- 只算一头:只算让利多、不算销量涨,或者反过来,都会得出偏乐观的结论。
- 把估算值当实测值:30% 是估的,真做出来可能是 12%,结论会整个翻掉。
- 不做敏感度分析:只给一个数,别人没法判断这个建议稳不稳。
自测三问(点开对答案)
1. 为什么营业额涨了 30%,毛利反而少了? —— 因为毛利率掉了 13 个百分点。 1.3 倍的营业额乘 0.32 的毛利率,得到的绝对值比 1 倍营业额乘 0.45 小。 2. 「要涨 40.6% 才不亏」这句话里的 40.6% 是怎么来的? —— 用旧毛利 218,700 除以新毛利率 32%,得到需要达到的营业额,再和促销前的营业额比。 3. 为什么说只报一个数的分析不可用? —— 因为结论依赖假设(比如毛利率掉到多少)。不给出假设和它的影响,别人无法判断结论的可靠程度。算清楚一个决定值多少钱之后,接下来是流程本身:一份数据从拿到手到能算,中间要经过哪四步。 下一篇按顺序走一遍。
- ☐ (本篇完,下一篇 1.3 流程前四步:从熟悉工具到处理数据)