📊 第10章 京东电商销售数据分析与预测
📄 一句话概括

全年两个尖峰:6 月环比涨 50.96% 全年第一,11 月涨 17.09% 第二。 前三个月(6、11、1 月)合计 4493.50 万,占全年 30.43%。 客单价全年在 66.03 到 68.32 元之间几乎不动,销售额涨靠的是单量,差 1.71 倍。

📝 本章和前面几章的关系

上一篇把四个粒度的形状摆出来了,这一篇往深算:走势、环比、贡献度、客单价。 这一节是第 7 章那套分析方法的实战版,方法没变,数据换成了真项目的表。

一、先看走势,别急着算

十二个点连成一条线,形状是两个尖峰夹着一段平缓下坡。 6 月和 11 月各冲一次,冲完立刻掉回原形——7 月环比跌 30.27%。 走势先看形状,形状里已经有一半的结论。剩下那一半才靠指标算出来。

2 月是最低点,912.80 万,比全年月均少 317.74 万。这个差额比很多小公司一个月营业额还大。 看形状还要看斜率:三月到五月是缓慢下滑,不是断崖。缓慢下滑和断崖,处理办法完全不同。

二、环比:这个月比上个月

月份 销售额(万) 环比
1 月 1345.45 —
2 月 912.80 -32.16%
3 月 1065.41 +16.72%
4 月 1119.54 +5.08%
5 月 1064.33 -4.93%
6 月 1606.69 +50.96%
7 月 1120.42 -30.27%
8 月 1157.78 +3.33%
9 月 1223.43 +5.67%
10 月 1316.42 +7.60%
11 月 1541.36 +17.09%
12 月 1292.90 -16.12%

6 月涨 50.96% 全年第一,11 月涨 17.09% 第二;跌得最狠的是 2 月 -32.16%,其次是 7 月 -30.27%。 两个月都是「冲上去、下个月掉回原形」,这就是大促的典型形状:把后面两个月的需求提前挪到这个月。 环比最能反映「这个月发生了什么」,但它只跟上一个月比,看不出长期趋势。

单看环比会误判:12 月 -16.12% 看着像在掉,其实 12 月的绝对额仍高于全年均值。 跌是相对上月跌,不是相对水位跌。

三、极值与贡献:三个月拿走三成

按销售额排序,前三个月是 6 月、11 月、1 月,合计 4493.50 万,占全年 30.43%。 三个月拿走三成,剩下九个月分七成。这就是第 7 章的帕累托法则落到月份上。 用法很直接:备货、投放、客服排班,三成资源压在这三个月,剩下九个月按常规节奏走。

但别把因果搞反:是大促把这三个月拉起来的,不是这三个月本身特殊。把 618 取消,6 月立刻掉回去。 还有一个细节:3 月环比涨 16.72%,但它不在前三个月里——涨幅大不等于贡献大,这两个是不同的问题。

四、客单价:销售额涨,靠什么涨

月份 销售额(万) 订单量 客单价(元)
1 月 1345.45 198277 67.86
2 月 912.80 138249 66.03
3 月 1065.41 157199 67.77
4 月 1119.54 164635 68.00
5 月 1064.33 157019 67.78
6 月 1606.69 236861 67.83
7 月 1120.42 165064 67.88
8 月 1157.78 170156 68.04
9 月 1223.43 179395 68.20
10 月 1316.42 192893 68.25
11 月 1541.36 225602 68.32
12 月 1292.90 189719 68.15

客单价等于销售额乘一万再除订单量——销售额的单位是万元,得先换成元。 全年在 66.03 到 68.32 元之间,波动不到 4%。这一列几乎是平的。 单量却从 138249 单涨到 236861 单,差 1.71 倍。

销售额涨靠的是人多,不是每单越买越贵。这个结论指向拉新,而不是提客单。 派生指标的价值就在这里:光看销售额只知道「涨了」,算出客单价才知道「为什么涨」, 才知道下一步该往哪使劲。

五、这一节的四个指标怎么一起用

走势给形状,环比给节奏,贡献度给重点,客单价给原因。四个指标看同一份数据,结论才立体。 只报一个都容易被反问:只报走势,老板问哪个月最值得投;只报环比,老板问全年到底涨不涨。 下一篇换个问题:广告费到底有没有用。这个问题光靠加减乘除答不了,得用相关。

六、动手 Demo:销售收入分析

按月重采样看走势,算环比找峰谷,取前三算贡献,最后算客单价。 客单价那一节是重点:它把「涨了」这个现象,推到了「为什么涨」。

import pandas as pd

df = pd.read_excel("销售数据_clean.xlsx")
m = df.set_index("日期").resample("MS")["销售额"].sum()

g = (m.pct_change() * 100).round(2)
print("涨最猛 %d 月 %+.2f%%,跌最狠 %d 月 %+.2f%%"
      % (g.idxmax().month, g.max(), g.idxmin().month, g.min()))

top3 = m.nlargest(3)
print("前三 %s 合计 %.2f 万,占 %.2f%%"
      % ("、".join("%d 月" % i.month for i in top3.index),
         top3.sum(), top3.sum() / m.sum() * 100))

cols = ["销售额", "订单量"]
mm = df.groupby("月份")[cols].sum()
mm["客单价"] = mm["销售额"] * 10000 / mm["订单量"]
print("客单价 %.2f 到 %.2f 元"
      % (mm["客单价"].min(), mm["客单价"].max()))
print("单量 %.2f 倍"
      % (mm["订单量"].max() / mm["订单量"].min()))

实跑输出:

--------------------------------------------------------------------
销售收入分析
--------------------------------------------------------------------

  ① 先看全年走势
  --------------------------------------------------------------------
  按月汇总,12 个点,从 912.80 万到 1606.69 万。
  一年里有两个尖峰:6 月和 11 月。618 和双 11,都是大促。
  其余月份平缓,2 月最低——春节前后快递停、消费也停。
  ! 走势先看形状,别急着算数。形状里已经有一半的结论了。

  ② 环比:这个月比上个月
  --------------------------------------------------------------------

| 月份 | 销售额 | 环比 |
|---|---:|---:|
| 1 月 | 1345.45 | — |
| 2 月 | 912.80 | -32.16% |
| 3 月 | 1065.41 | +16.72% |
| 4 月 | 1119.54 | +5.08% |
| 5 月 | 1064.33 | -4.93% |
| 6 月 | 1606.69 | +50.96% |
| 7 月 | 1120.42 | -30.27% |
| 8 月 | 1157.78 | +3.33% |
| 9 月 | 1223.43 | +5.67% |
| 10 月 | 1316.42 | +7.60% |
| 11 月 | 1541.36 | +17.09% |
| 12 月 | 1292.90 | -16.12% |

  环比涨得最猛的是 6 月 +50.96%,跌得最狠的是 2 月 -32.16%。
  6 月环比 +50.96%,全年第一。第二名是 11 月,+17.09%。
  两个月都是「冲上去、下个月掉回原形」——这就是大促的典型形状。
  环比最能反映「这个月发生了什么」,但单看它会误判长期趋势。

  ③ 极值与贡献
  --------------------------------------------------------------------
  全年 14766.53 万,前三个月 6 月、11 月、1 月 合计 4493.50 万,占 30.43%。
  三个月拿走全年 30%,剩下九个月分 70%。
  这就是第 7 章的贡献度分析,放到月份维度上照样成立。

  ④ 客单价
  --------------------------------------------------------------------

| 月份 | 销售额 | 订单量 | 客单价(元) |
|---|---:|---:|---:|
| 1 月 | 1345.45 | 198277 | 67.86 |
| 2 月 | 912.80 | 138249 | 66.03 |
| 3 月 | 1065.41 | 157199 | 67.77 |
| 4 月 | 1119.54 | 164635 | 68.00 |
| 5 月 | 1064.33 | 157019 | 67.78 |
| 6 月 | 1606.69 | 236861 | 67.83 |
| 7 月 | 1120.42 | 165064 | 67.88 |
| 8 月 | 1157.78 | 170156 | 68.04 |
| 9 月 | 1223.43 | 179395 | 68.20 |
| 10 月 | 1316.42 | 192893 | 68.25 |
| 11 月 | 1541.36 | 225602 | 68.32 |
| 12 月 | 1292.90 | 189719 | 68.15 |

  客单价全年在 66.03 到 68.32 元之间,波动不到一成。
  单量却从 138249 单涨到 236861 单,差 1.71 倍。
  销售额涨靠的是单量,不是每单越买越贵。这个结论指向「拉新」而不是「提客单」。
  注意单位:销售额是万元,订单量是单,所以乘一万换成元,再除。
  ! 客单价是自己算出来的派生指标,它一出现,结论立刻从「涨了」推到「为什么涨」。

resample("MS") 是「按月起点重采样」,MS 里的 S 是 start。写成 M 会得到月末的标签。 pct_change 第一行一定是 NaN,因为第一行没有上一个月。表格里那一格要显示成破折号。 nlargest(3) 直接拿前三大的值,比 sort_values().head(3) 短,意思一样。

30 秒实验

  1. 把 resample("MS") 改成 resample("QS"),看环比变成季度环比,数差多少。
  2. 把客单价的乘数从一万改成 1,看那一列变成什么量级,想想为什么会错。
  3. 想一想:如果 11 月的订单量涨了但客单价掉了,该怎么解释?

常见误区

  1. 环比和同比混用:环比比上月,同比比去年同月,两个数放在一张表里必须先标清楚。
  2. 只看环比判断好坏:12 月环比 -16.12%,绝对额仍高于年均线。
  3. 把涨幅大当成贡献大:3 月涨 16.72%,但贡献最大的三个月里没有它。
  4. 万元和元混着除:销售额是万元、订单量是单,不乘一万,客单价会算出 0.68 元。
自测三问(点开对答案) 1. 为什么说大促是「把需求提前」? —— 6 月冲高、7 月立刻跌 30.27%,两个月一加总,增量远小于 6 月单月的涨幅。 2. 客单价几乎不变,说明什么? —— 销售额的变化几乎全部来自单量。想继续涨,得拉新客,而不是让老客多买。 3. 贡献度和环比,回答的是不是同一个问题? —— 不是。贡献度问「谁撑起了总量」,环比问「这个月比上月动了多少」。

销售额的形状和结构都清楚了。下一篇追问一句:广告费到底有没有用。

相关笔记