提交 6ab863ff 编写于 作者: W wizardforcel

ch6.

上级 d6663c18
......@@ -256,3 +256,95 @@ icecream.sort('Number of Cartons', descending=True).barh('Flavor')
## 组合分类数据
为了构造`icecream`表,有人不得不查看 30 个冰淇淋盒子,并计算每种口味的数量。 但是,如果我们的数据还没有包含频率,我们必须在绘制条形图之前计算频率。 这是一个例子,其中它是必要的。
`top`表由美国历史上最畅销的电影组成。 第一列包含电影的标题;《星球大战:原力觉醒》(Star Wars: The Force Awakens)排名第一,美国票房总额超过 9 亿美元。 第二列包含制作电影的工作室的名称。 第三列包含国内票房收入(美元),第四列包含按 2016 年价格计算的,票面总收入。 第五列包含电影的发行年份。
列表中有 200 部电影。 根据未调整的总收入,这是前十名。
```py
top = Table.read_table('top_movies.csv')
top
```
| Title | Studio | Gross | Gross (Adjusted) | Year |
| --- | --- | --- | --- | --- |
| Star Wars: The Force Awakens | Buena Vista (Disney) | 906723418 | 906723400 | 2015 |
| Avatar | Fox | 760507625 | 846120800 | 2009 |
| Titanic | Paramount | 658672302 | 1178627900 | 1997 |
| Jurassic World | Universal | 652270625 | 687728000 | 2015 |
| Marvel's The Avengers | Buena Vista (Disney) | 623357910 | 668866600 | 2012 |
| The Dark Knight | Warner Bros. | 534858444 | 647761600 | 2008 |
| Star Wars: Episode I - The Phantom Menace | Fox | 474544677 | 785715000 | 1999 |
| Star Wars | Fox | 460998007 | 1549640500 | 1977 |
| Avengers: Age of Ultron | Buena Vista (Disney) | 459005868 | 465684200 | 2015 |
| The Dark Knight Rises | Warner Bros. | 448139099 | 500961700 | 2012 |
(省略了 190 行)
迪斯尼的子公司布埃纳维斯塔(Buena Vista)就像福克斯(Fox)和华纳兄弟(Warner Brothers)一样,经常出现在前十名中 如果我们从 200 行中看,哪个工作室最常出现?
为了解决这个问题,首先要注意的是,我们需要的只是一个拥有电影和工作室的表格;其他信息是不必要的。
```py
movies_and_studios = top.select('Title', 'Studio')
```
`Table``group`方法组允许我们,通过将每个工作室当做一个类别,并将每一行分配给一个类别,来计算每个工作室出现在表中的频率。 `group`方法将包含类别的列标签作为其参数,并返回每个类别中行数量的表格。 数量列始终称为`count`,但如果您希望的话,则可以使用`relabeled`更改该列。
```py
movies_and_studios.group('Studio')
```
| Studio | count |
| --- | --- |
| AVCO | 1 |
| Buena Vista (Disney) | 29 |
| Columbia | 10 |
| Disney | 11 |
| Dreamworks | 3 |
| Fox | 26 |
| IFC | 1 |
| Lionsgate | 3 |
| MGM | 7 |
| MPC | 1 |
(省略了 14 行)
因此,`group`创建一个分布表,显示电影在类别(工作室)之间如何分布。
现在我们可以使用这个表格,以及我们上面获得的图形技能来绘制条形图,显示前 200 个最高收入的电影中,哪个工作室是最常见的。
```py
studio_distribution = movies_and_studios.group('Studio')
studio_distribution.sort('count', descending=True).barh('Studio')
```
华纳兄弟(Warner Brothers)和布埃纳维斯塔(Buena Vista)是前 200 电影中最常见的工作室。 华纳兄弟制作了哈利波特电影,布埃纳维斯塔制作了星球大战。
由于总收入以未经调整的美元来衡量,所以最近几年的顶级电影比过去几十年更频繁,这并不令人惊讶。 以绝对数量来看,现在的电影票价比以前更高,因此总收入也更高。 这是通过条形图证明的,这些条形图显示了 200 部电影的发行年份。
```py
movies_and_years = top.select('Title', 'Year')
movies_and_years.group('Year').sort('count', descending=True).barh('Year')
```
所有最长的条形都对应 2000 年以后的年份。这与我们的观察一致,即最近几年应该是最频繁的。
### 面向数值变量
这张图有一些未解决的地方。 虽然它确实回答了这个问题,200 部最受欢迎的电影中,最常见的发行年份,但并没有按时间顺序列出所有年份。 它将年作为一个分类变量。
但是,年份是固定的时序单位,确实拥有顺序。 他们也有相对于彼此的固定的数值距离。 让我们看看当我们试图考虑它的时候会发生什么。
默认情况下,`barh`将类别(年)从最低到最高排序。 所以我们将运行这个代码,但不按`count`进行排序。
```py
movies_and_years.group('Year').barh('Year')
```
现在年份是升序了。 但是这个条形图还是有点问题。 1921 年和 1937 年的条形与 1937 年和 1939 年的条形相距甚远。条形图并没有显示出,200 部电影中没有一部是在 1922 年到 1936 年间发布的。基于这种可视化,这种不一致和遗漏,使早期年份的分布难以理解。
条形图用做类别变量的可视化。 当变量是数值,并且我们创建可视化时,必须考虑其值之间的数值关系。 这是下一节的主题。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册