📈 第4章 数据图形化
📄 一句话概括

六个城市、三个变量、一张二维图:多出来的那个变量,靠点的大小编码进去,这就是气泡图。 图一画出来就看见负相关:转化率高的城市,客单价低。这个负相关是真的,但它不是「谁做得更好」。 换一个比较对象——每千访客收入——六个城市的排名换了个样子。选错比较对象,比数据太多危险得多。

📝 本章和前面几章的关系

上一篇把「比什么」定成了转化率。这一篇往上加一个维度:除了比转化率,还想同时看客单价。 三个变量、六个观察值,这是数据分析里最舒服的规模——图能画清,人也能记住。

一、三个变量一张图

六个城市各有一个转化率和一个客单价,这是两个连续变量,正好放在 x 和 y 上。 第三个变量是订单量,没有第三根轴,就把它编码成点的大小——气泡图。 气泡图的代价要记住:人对面积的分辨力很差。两个圆面积差一倍,看着只差一点点。 所以大小只适合「大致分级」,不适合读精确值。

二、负相关这件事

六个点摆开,大体是一条从左上往右下的斜线:转化率越高的城市,客单价越低。 北京 3.4%/268 元,上海 3.9%/292 元,都在右上;西安 5.2%/188 元,落在右下。 容易读错的一步:这不是「西安做得更好」,是「西安来的人更愿意买便宜货」。

负相关只是说两个数一起动,方向相反。它不告诉你谁好谁坏,甚至不告诉你哪个是因。

三、换一个比较对象,排名换一个样子

有人看到这张图会说:西安转化率最高,把资源往西安倾斜。 那就换个比法:每千访客带来的收入 = 转化率 × 客单价 × 1000。

城市 转化率 客单价 每千访客收入 排名
上海 3.9% 292 11388 1
杭州 4.1% 255 10455 2
西安 5.2% 188 9776 3
成都 4.6% 205 9430 4
北京 3.4% 268 9112 5
广州 2.8% 241 6748 6

转化率第一的西安,收入只排第三;收入第一的上海,转化率排第四。 两个排名都对,因为它们回答的是两个不同的问题:一个问「来的人里多少买」, 一个问「一千个人能掏出多少钱」。

四、数据多不是问题,选错对象才是

这一节最想让人记住的一句话:数据太多绝不会成为你的问题。 三个变量、三十个变量都能画,画不下就分面、就拆图。 真正会毁掉结论的是另一件事——拿一个不合适的比较对象去比。 合适的比较对象由「要做什么决定」决定:要给谁加预算,比每千访客收入;要改落地页,比转化率; 要调商品结构,比客单价。

先定决定,再定指标,最后定图。顺序反了,就会像前一位设计师那样,画了三张漂亮的图, 一张也用不上。

五、每千访客收入也不是唯一答案

每千访客收入高,也可能只是因为客单价高、毛利低。要比利润,还得乘上毛利率。 每往下一层,就多一个变量、多一个口径。 所以分析很少有一次到位这回事,都是「先答一个粗问题,再往下追」。 这一层一层往下追的过程,就是这本书后面几章要讲的东西:抽样、假设检验、回归。

六、动手 Demo:数据太多不是你的问题

六个城市、三个变量画成气泡图,再把每千访客收入算出来对照。 重点不在图,在「换个比法,排名就换一个样子」这件事。

CITY = [("北京", 3.4, 268.0), ("上海", 3.9, 292.0), ("广州", 2.8, 241.0),
        ("成都", 4.6, 205.0), ("杭州", 4.1, 255.0), ("西安", 5.2, 188.0)]

rev = [(nm, cr, cr / 100.0 * 1000 * aov) for nm, cr, aov in CITY]
rev.sort(key=lambda x: -x[2])
by_cr = sorted(CITY, key=lambda c: -c[1])

print("按每千访客收入排")
for i, (nm, cr, v) in enumerate(rev, 1):
    print("%d. %s  转化率 %.1f%%  每千访客 %5.0f 元" % (i, nm, cr, v))

print()
print("按转化率排")
for i, (nm, cr, aov) in enumerate(by_cr, 1):
    print("%d. %s  %.1f%%" % (i, nm, cr))

print()
xa = [nm for nm, _, _ in rev].index("西安") + 1
sh = [nm for nm, _, _ in rev].index("上海") + 1
print("西安:转化率第 1,收入第 %d" % xa)
print("上海:转化率第 4,收入第 %d" % sh)

实跑输出:

--------------------------------------------------------------------
数据太多不是你的问题
--------------------------------------------------------------------

  ① 一次看三个变量
  --------------------------------------------------------------------
  六个城市,每个城市有三个数:转化率、客单价、订单量。
  三个变量画在一张二维图上,靠「点的大小」把第三个塞进去。
  气泡图存成 PNG:17322 字节

  ② 这张图说了什么
  --------------------------------------------------------------------
  大体上是一条从左上往右下的斜线:转化率高的城市,客单价低——但中间有散点。
  北京、上海:转化率 3.4%/3.9%,客单价 268/292 元。
  西安:转化率 5.2%,客单价只有 188 元。
  ! 这不是「西安做得更好」,是「西安来的人更愿意买便宜货」。

  ③ 数据多不是问题,选错比较对象才是
  --------------------------------------------------------------------
  有人看到这张图会说:把资源往西安倾斜,因为它转化最高。
  可算一下每个城市的「每千访客收入」——转化率乘客单价,排名会换一个样子。

| 城市 | 转化率 | 客单价 | 每千访客收入 |
|---|---:|---:|---:|
| 北京 | 3.4% | 268 | 9112 |
| 上海 | 3.9% | 292 | 11388 |
| 广州 | 2.8% | 241 | 6748 |
| 成都 | 4.6% | 205 | 9430 |
| 杭州 | 4.1% | 255 | 10455 |
| 西安 | 5.2% | 188 | 9776 |

  按每千访客收入排:上海 11388 元、杭州 10455 元、西安 9776 元、成都 9430 元、北京 9112 元、
  广州 6748 元。
  转化率第一的西安,收入排第 3;收入第一是 上海,它的转化率 3.9% 只排第 4。
  ! 排名换了个位置,说明「谁最好」这个问题,答之前得先说清按什么排。

  ④ 一张图能装几个变量
  --------------------------------------------------------------------

| 图形元素 | 能编码的量 | 注意 |
|---|---|---|
| 位置(x、y) | 两个连续变量 | 最准,优先用 |
| 大小 | 一个正数量 | 人对面积不敏感,别用来比精确值 |
| 颜色 | 一个分类或一个有序量 | 超过 6 色就看不清了 |
| 分面 | 一个分类变量 | 最可靠,但占地方 |

两个排名都算对了,差别只在「分子是什么」。排名换位置,不是谁算错了,是问题问的不一样。 气泡图本身还有个坑:点的大小编码的是订单量,而人对面积不敏感。 所以这张图能看出「谁大谁小」,看不出「大多少」。

30 秒实验

  1. 把每千访客收入再乘一次毛利率(假设分别为 32%、28%、35%、30%、33%、26%),排名会变吗?
  2. 如果只看「新增访客成本」,比较对象又会换成什么?
  3. 想一想:为什么书上反复说「数据多不是问题」?数据多到底会带来什么真实的麻烦?

常见误区

  1. 把负相关读成因果:转化率高、客单价低,可能只是这两类人群的消费习惯不同。
  2. 只看一个指标就下结论:转化率第一不等于最值得投钱,收入第一也不等于利润第一。
  3. 用面积比精确值:气泡大小只适合分档,读「差 12%」这种精度纯属自欺。
  4. 指标越加越多:每加一个变量就多一个口径,最后谁也说不清结论是怎么来的。
自测三问(点开对答案) 1. 气泡图把第三个变量编码成了什么?代价是什么? —— 编码成点的大小。代价是人对面积不敏感,只能看出大致分级,读不出精确差异。 2. 为什么西安转化率第一、收入却只排第三? —— 因为客单价低。收入 = 转化率 × 客单价,一个高一个低,乘起来就落到中间。 3. 该选哪个指标当比较对象? —— 由要做的决定决定。加预算看每千访客收入,改落地页看转化率,调商品结构看客单价。

三个变量都能塞进一张图了,但塞进去不等于比得对。下一篇讲比较本身的规矩:同口径、同基线、同尺度。

相关笔记