提交 2b640a7b 编写于 作者: W wizardforcel

ch6.

上级 55067fac
......@@ -478,3 +478,159 @@ bin_counts.hist('Adjusted Gross count', bin_column='bin', unit='Million Dollars'
### 纵轴:密度刻度
一旦我们已经照顾到细节,如桶的末端,直方图的横轴易于阅读。 纵轴的特征需要更多关注。 我们会一一讲解。
我们先来看看如何计算垂直轴上的数字。 如果计算看起来有些奇怪,请耐心等待 - 本节的其余部分将解释原因。
计算。每个条形的高度是桶中的元素的百分比,除以桶的宽度。
> 译者注:存在很多种直方图,比如频数直方图、频率质量直方图和频率密度直方图。它们的纵轴数值不相同,但是图形形状是一样的。这里是最后一种,频率密度直方图。
```py
counts = bin_counts.relabeled('Adjusted Gross count', 'Count')
percents = counts.with_column(
'Percent', (counts.column('Count')/200)*100
)
heights = percents.with_column(
'Height', percents.column('Percent')/100
)
heights
```
| bin | Count | Percent | Height |
| --- | --- | --- | --- |
| 300 | 81 | 40.5 | 0.405 |
| 400 | 52 | 26 | 0.26 |
| 500 | 28 | 14 | 0.14 |
| 600 | 16 | 8 | 0.08 |
| 700 | 7 | 3.5 | 0.035 |
| 800 | 5 | 2.5 | 0.025 |
| 900 | 3 | 1.5 | 0.015 |
| 1000 | 1 | 0.5 | 0.005 |
| 1100 | 3 | 1.5 | 0.015 |
| 1200 | 2 | 1 | 0.01 |
(省略了 8 行)
在上面直方图的纵轴上查看数字,检查列高度是否正确。
如果我们只查看表格的第一行,计算就会变得清晰。
请记住,数据集中有 200 部电影。这个`[300,400)`的桶包含 81 部电影。这是所有电影的 40.5%:![](https://www.zhihu.com/equation?tex=%5Cmbox%7BPercent%7D%20%3D%20%5Cfrac%7B81%7D%7B200%7D%20%5Ccdot%20100%20%3D%2040.5)
`[300, 400)`桶的宽度是`400-300 = 100`。所以 ![](https://www.zhihu.com/equation?tex=%5Cmbox%7BHeight%7D%20%3D%20%5Cfrac%7B40.5%7D%7B100%7D%20%3D%200.405)
用于计算高度的代码使用了总共​​有 200 个电影,以及每个箱的宽度是 100 的事实。
单位。条形的高度是 40.5% 除以 1 亿美元,因此高度是 0.405% 每百万美元。
这种绘制直方图的方法创建了一个垂直轴,它是在密度刻度上的。条形的高度不是桶中条目的百分比;它是桶中的条目除以桶的宽度。这就是为什么高度衡量拥挤度或密度。
让我们看看为什么这很重要。
### 不等的桶
直方图相比条形图的一个优点是,直方图可以包含不等宽度的桶。 以下将`Millions `中的值分为三个不均匀的类别。
```py
uneven = make_array(300, 400, 600, 1500)
millions.hist('Adjusted Gross', bins=uneven, unit="Million Dollars")
```
这里是三个桶中的数量。
```py
millions.bin('Adjusted Gross', bins=uneven)
```
| bin | Adjusted Gross count |
| --- | --- |
| 300 | 81 |
| 400 | 80 |
| 600 | 37 |
| 1500 | 0 |
虽然范围`[300,400)``[400,600)`具有几乎相同的计数,但前者的高度是后者的两倍,因为它只有一半的宽度。 `[300,400)`中的值的密度是`[400,600)`中的密度的两倍。
直方图帮助我们可视化数轴上数据最集中的地方,特别是当桶不均匀的时候。
### 仅仅绘制数量的问题
可以使用`hist`方法的`normed=False`选项直接在图表中显示数量。 生成的图表与直方图具有相同的形状,但这些桶的宽度均相等,尽管纵轴上的数字不同。
```py
millions.hist('Adjusted Gross', bins=np.arange(300,2001,100), normed=False)
```
虽然数量刻度可能比密度刻度更自然,但当桶宽度不同时,图表高度的有误导性。 下面看起来(由于计数)高收入电影相当普遍,事实上我们已经看到它们相对较少。
```py
millions.hist('Adjusted Gross', bins=uneven, normed=False)
```
即使使用的方法被称为`hist`,上面的图不是一个直方图。 误导性地夸大了至少 6 亿美元的电影比例。 每个桶的高度只是按照桶中的电影数量绘制,而不考虑桶宽度的差异。
如果最后两个桶组合起来,情况就变得更加荒谬了。
```py
very_uneven = make_array(300, 400, 1500)
millions.hist('Adjusted Gross', bins=very_uneven, normed=False)
```
在这个基于数量的图像中,电影分布完全失去了形状。
### 直方图:通用原则和计算
上图显示,眼睛将面积视为“较大”的东西,而不是高度。当桶的宽度不同时,这种观察变得尤为重要。
这就是直方图具有两个定义属性的原因:
+ 桶按比例绘制并且是连续的(尽管有些可能是空的),因为横轴上的值是数值型的。
+ 每个条形的面积与桶中的条目数成比例。
属性(2)是绘制直方图的关键,通常实现如下:
```
条形的面积 = 桶中条目的百分比
```
高度的计算仅仅使用了一个事实,条形是长方形的。
```
条形的面积 = 条形的高度 * 桶的宽度
```
因此,
```
条形的高度 = 条形的面积 / 桶的宽度
= 桶中条目的百分比 / 桶的宽度
```
高度的单位是“百分比每横轴单位”。
当使用这种方法绘制时,直方图被称为在密度刻度上绘制。 在这个刻度上:
+ 每个条形的面积等于相应桶中的数据值的百分比。
+ 直方图中所有条形的总面积为 100%。 从比例的角度来讲,我们说直方图中所有条形的面积“总计为 1”。
### 平顶和细节水平
即使密度刻度使用面积正确表示了百分比,但是通过将值分组到桶中,丢失了一些细节。
再看一下下图中的`[300,400)`的桶。 值为“0.405% 每百万美元”的桶的平顶,隐藏了电影在这个桶分布有些不均匀的事实。
```py
millions.hist('Adjusted Gross', bins=uneven, unit="Million Dollars")
```
为了看到它,让我们将`[300, 400)`划分为更窄的 10 个桶。每个桶的宽度都是一千万美元。
```py
some_tiny_bins = make_array(300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 600, 1500)
millions.hist('Adjusted Gross', bins=some_tiny_bins, unit='Million Dollars')
```
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册