任何一张图都是「把若干列数映射成位置、长度、角度、颜色」。数进去几个,就能回答几个问题。 饼图只映射了一列数:占比。条形图映射了「类别 + 数量」,还隐含一条时间轴。 体现数据的意思是:先决定比什么,再让图去承载这个比较——顺序反了,图就只是在替猜测作证。
上一篇看清了三份图缺什么。这一篇换个方向:从图反推它装了哪些数。 这个方向更有用。以后看到别人的图,先在心里数一遍「它装了几个变量」,比听解释快得多。
一、饼图里其实只有一列数
饼图的每一块扇形,长度是角度,角度来自「这一类的量除以总量」。 所以它装的只有一列数,外加一个类别名。 六个城市的饼图,装的其实就是六个转化率。 转化率之间的差很小(2.8% 到 5.2%),画成扇形几乎看不出差别——这是饼图第二个毛病:角度不敏感。 饼图适合表达「一家独大」或者「两家占八成」。六个差不多大的块画成饼,等于什么都没说。
二、条形图藏着一条时间轴和一个分母
| 图 | 显式的数 | 隐含的数 | 隐含的假设 |
|---|---|---|---|
| 饼图 | 各类占比 | 总量 | 总量不随时间变 |
| 条形图 | 每月订单 | 时间顺序、每月访客 | 访客不变时才比得出改进 |
| 折线图 | 两点之间的走势 | 采样间隔 | 间隔之间是平滑变化的 |
「隐含的假设」这一列最容易被忽略。折线图默认两点之间是直线过渡,可现实里这中间可能有个大坑。 条形图的隐含假设更狠:它默认你在比「同一批人」。 访客从 1.2 万涨到 1.82 万,来的可能是一批完全不同的人。
三、双轴折线把两个单位画在了一起
两根 y 轴的好处是能在一张图里看两个指标,坏处是「谁高谁低」变成了画图人随手定的缩放。 你把右轴的范围从 0 到 300 改成 200 到 300,两条线的相对位置立刻变个样,数据一个都没动。 这不是说双轴图不能用,是说它只能看「各自怎么动」,不能看「谁带动谁」。
四、体现数据:你决定比什么
订单涨了 66.7%,访客涨了 51.7%。这两个数放在一起,还是看不出「改版有没有用」。 要分得清,就得把订单除以访客——转化率。这一步叫「体现数据」:把两个绝对量变成一个比例。 比出来的结果有点扫兴:转化率从 3.50% 到 3.85%,只涨了 9.9%,而且中间 3 月还掉到 3.20%。
同一批数据,比「订单」得出「干得不错,继续加预算」; 比「转化率」得出「转化基本没动,增长全靠拉流量」。 两张图画得一样漂亮,结论却相反。差别不在画法,在分子分母。
五、一个四问清单
第一问:这张图想让我比较什么?答不出来就别画。 第二问:分子分母各是什么? 比例类指标最容易在这里偷换——「转化率」的分母是访客还是访问次数,差得很远。 第三问:基线是多少?没有基线的「涨了 9.9%」,可能只是回到三个月前的水平。
第四问:换一种比法,结论会不会变?会变的话,就该把两种比法都摆出来。
六、动手 Demo:体现数据:图是为了比较,不是为了好看
六个月访客与订单摆在一张表里,算出转化率,看结论怎么翻个面。 这段代码不做图,只算数——先确认数对不对,再去想怎么画。
VISIT = [12000, 13500, 15800, 14200, 16900, 18200]
ORDER = [420, 470, 505, 610, 640, 700]
print("月份 访客 订单 转化率")
for i in range(6):
cr = ORDER[i] / float(VISIT[i]) * 100
print("%2d月 %5d %5d %.2f%%" % (i + 1, VISIT[i], ORDER[i], cr))
cr0 = ORDER[0] / float(VISIT[0]) * 100
cr5 = ORDER[5] / float(VISIT[5]) * 100
grow_o = (ORDER[5] / float(ORDER[0]) - 1) * 100
grow_v = (VISIT[5] / float(VISIT[0]) - 1) * 100
print()
print("订单涨了 %.1f%%,访客涨了 %.1f%%" % (grow_o, grow_v))
print("转化率 %.2f%% -> %.2f%% %+.1f%%" % (cr0, cr5, (cr5 / cr0 - 1) * 100))
print("验算:访客 x%.3f,转化 x%.3f,乘起来 x%.3f,对比订单的 x%.3f"
% (VISIT[5] / float(VISIT[0]), cr5 / cr0,
(VISIT[5] / float(VISIT[0])) * (cr5 / cr0), ORDER[5] / float(ORDER[0])))
实跑输出:
--------------------------------------------------------------------
体现数据:图是为了比较,不是为了好看
--------------------------------------------------------------------
① 把两个数放在一起比
--------------------------------------------------------------------
订单涨了 67%,访客涨了 52%。
单看这两个数,分不出「转化率是不是也涨了」。
要分的清,就得把订单除以访客——转化率。
② 算出来
--------------------------------------------------------------------
| 月份 | 访客 | 订单 | 转化率 |
|---|---:|---:|---:|
| 1月 | 12,000 | 420 | 3.50% |
| 2月 | 13,500 | 470 | 3.48% |
| 3月 | 15,800 | 505 | 3.20% |
| 4月 | 14,200 | 610 | 4.30% |
| 5月 | 16,900 | 640 | 3.79% |
| 6月 | 18,200 | 700 | 3.85% |
转化率从 3.50% 到 3.85%,+9.9%
而订单涨了 66.7%——多出来的部分,主要是访客带来的。
③ 这就是「体现数据」
--------------------------------------------------------------------
数据本身不会告诉你该比什么。是你决定比什么,图才有意义。
比「订单」得出「干得不错」;比「转化率」才得出「转化基本没动,全靠拉流量」。
两张图可以画得一模一样漂亮,结论却相反——差别在分子分母。
④ 一个检查清单
--------------------------------------------------------------------
| 问自己 | 为什么 |
|---|---|
| 这张图想让我比较什么 | 没有比较对象的图,只是装饰 |
| 分子分母各是什么 | 比例类指标最容易在这里偷换 |
| 基线是多少 | 没有基线的「涨了」,可能只是回到了三个月前 |
转化率的涨幅 9.9%,远小于访客的 51.7%,也远小于订单的 66.7%。 订单的漂亮增长,几乎全是拉来的人多。 顺手看见的第三件事:3 月转化率 3.20% 是个坑,4 月跳到 4.30%。 这一个月的跳变,图上不标出来,故事就讲不圆。
30 秒实验
- 把转化率的分母从「访客」换成「商品详情页浏览数」,转化率会变大还是变小?为什么。
- 如果 3 月做过一次促销,转化率的算法该怎么调,才不至于把促销的效果算成改版的功劳?
- 想一想:这一节里哪句话是「数说得对、但结论可能错」的?
常见误区
- 用绝对量比改进:订单涨了就是干得好,忽略了人来得更多这个前提。
- 比例不写分母:转化率 3.85%,分母是访客还是浏览量?两个数能差一倍。
- 拿一个月当趋势:4 月跳到 4.30%,5 月又回落到 3.79%,一个点连不成趋势。
- 图画得漂亮就交差:图好看只说明审美在线,跟分析对不对没关系。
自测三问(点开对答案)
1. 饼图为什么不适合比六个差不多的数? —— 它只映射占比这一个量,而且人眼对角度的分辨力差。六块差不多大的扇形,读不出差别。 2. 「体现数据」在这本书里具体指什么? —— 把两个绝对量变成一个比例(比如订单除以访客),让比较有基准。 3. 为什么折线图的采样间隔也是一条信息? —— 因为它默认两点之间平滑过渡。间隔里可能藏着一次活动、一次故障,图上完全看不见。比什么定下来了,接下来是「能不能一次比好几个」。下一篇看三个变量怎么塞进一张图。
- ☐ (本篇完,下一篇 4.3 数据多不是问题)