提交 553e26c5 编写于 作者: W wizardforcel

ch6

上级 eb759912
...@@ -714,3 +714,113 @@ heights ...@@ -714,3 +714,113 @@ heights
(省略了 169 行) (省略了 169 行)
`scatter`方法使我们能够可视化,儿子的身高如何与父母的身高有关。 在图中,儿子的身高将形成公共的横轴。
```py
heights.scatter('son')
```
注意我们仅仅指定了公共的横轴上的变量(儿子的身高)。 Python 绘制了两个散点图:这个变量和另外两个之间的关系,每个关系一个。
金色和蓝色的散点图向上倾斜,并显示出儿子的高度和父母的高度之间的正相关。 蓝色(父亲)的绘图一般比金色高,因为父亲一般比母亲高。
### 线形图
我们的下一个例子涉及更近的儿童数据。 我们将返回到人口普查数据表`us_pop`,再次在下面创建用于参考。 由此,我们将提取 0 至 18 岁年龄段的所有儿童的数量。
```py
# Read the full Census table
census_url = 'http://www2.census.gov/programs-surveys/popest/datasets/2010-2015/national/asrh/nc-est2015-agesex-res.csv'
full_census_table = Table.read_table(census_url)
# Select columns from the full table and relabel some of them
partial_census_table = full_census_table.select(['SEX', 'AGE', 'POPESTIMATE2010', 'POPESTIMATE2014'])
us_pop = partial_census_table.relabeled('POPESTIMATE2010', '2010').relabeled('POPESTIMATE2014', '2014')
# Access the rows corresponding to all children, ages 0-18
children = us_pop.where('SEX', are.equal_to(0)).where('AGE', are.below(19)).drop('SEX')
children.show()
```
| AGE | 2010 | 2014 |
| --- | --- | --- |
| 0 | 3951330 | 3949775 |
| 1 | 3957888 | 3949776 |
| 2 | 4090862 | 3959664 |
| 3 | 4111920 | 4007079 |
| 4 | 4077551 | 4005716 |
| 5 | 4064653 | 4006900 |
| 6 | 4073013 | 4135930 |
| 7 | 4043046 | 4155326 |
| 8 | 4025604 | 4120903 |
| 9 | 4125415 | 4108349 |
| 10 | 4187062 | 4116942 |
| 11 | 4115511 | 4087402 |
| 12 | 4113279 | 4070682 |
| 13 | 4119666 | 4171030 |
| 14 | 4145614 | 4233839 |
| 15 | 4231002 | 4164796 |
| 16 | 4313252 | 4168559 |
| 17 | 4376367 | 4186513 |
| 18 | 4491005 | 4227920 |
现在我们可以绘制两个叠加的线形图,显示 2010 年和 2014 年的不同年龄的儿童人数。方法调用类似于前面例子中的`scatter`调用。
```py
children.plot('AGE')
```
在这个刻度上,重要的是要记住我们只有`0,1,2`岁等等的数据。 两个图形的点相互“交织”。
这些图表在一些地方相互交叉:例如,2010 年的 4 岁人数比 2014 年多,2014 年的 14 岁人数比 2010 年多。
当然,2014 年的 14 岁儿童大部分都是 2010 年的 10 岁儿童。为了看到这一点,请查看 14 岁的金色图表和 10 岁的蓝色图表。事实上,您会注意到,整个金色图表(2014 年)看起来像蓝色图表(2010 年)向右滑了 4 年。 由于 2010 年至 2014 年间进入该国的儿童的净效应,这个下滑幅度还是有所上升, 幸运的是,在这些年代,没有太多的生命损失。
### 条形图
对于本节的最后一个例子,我们看看加利福尼亚州以及整个美国的成人和儿童的种族分布情况。
凯撒家庭基金会根据人口普查数据,编制了美国人口种族分布情况。基金会的网站提供了 2014 年整个美国人口以及当年 18 岁以下的美国儿童的数据汇总。
这里是一个表格,采用了美国和加利福尼亚州的数据。 这些列代表美国和加利福尼亚州的每个人,美国和加州的儿童。 表格的主体包含不同类别的比例。 每一列显示了,该列对应的人群的种族分布。 所以在每一列中,条目总计为 1。
```py
usa_ca = Table.read_table('usa_ca_2014.csv')
usa_ca
```
| Ethnicity | USA All | CA All | USA Children | CA Children |
| --- | --- | --- | --- | --- |
| Black | 0.12 | 0.05 | 0.14 | 0.05 |
| Hispanic | 0.18 | 0.38 | 0.24 | 0.5 |
| White | 0.62 | 0.39 | 0.52 | 0.29 |
| Other | 0.08 | 0.18 | 0.1 | 0.16 |
我们自然想要比较这些分布。 直接比较列是有意义的,因为所有条目都是比例,因此在相同刻度上。
`barh`方法允许我们通过在相同轴域上绘制多个条形图,将比较可视化。这个调用类似于`scatter``plot`:我们必须指定类别的公共轴。
> 译者注:轴域(Axes)是横轴和纵轴围城的区域。
```py
usa_ca.barh('Ethnicity')
```
虽然绘制叠加的条形图非常简单,但是我们可以在这个图表上找到太多的信息,以便能够理清种群之间的相似性和差异性。 似乎很清楚的是,美国所有人和美国儿童的种族分布比任何其他列都更相似,但是一次比较一对要容易得多。
首先比较美国和加利福尼亚的整个人口。
```py
usa_ca.select('Ethnicity', 'USA All', 'CA All').barh('Ethnicity')
```
这两个分布是完全不同的。 加利福尼亚州的拉美裔和其他类别比例较高,黑人和白人比例相应较低。 这种差异主要是由于,加利福尼亚州的地理位置和移民模式,无论是历史上还是近几十年来。 例如,加利福尼亚的“其他”类别包括相当一部分亚洲人和太平洋岛民。
从图中可以看出,2014 年加州近 40% 的人口是拉美裔。 与该州儿童人口的比较表明,未来几年拉美裔人口的比例可能会更高。 在加州儿童中,50% 属于拉美裔。
```py
usa_ca.select('Ethnicity', 'CA All', 'CA Children').barh('Ethnicity')
```
更复杂的数据集自然会产生各种有趣的可视化效果,包括不同种类的重叠图形。 为了分析这些数据,获得更多的数据操作技能的有帮助的,这样我们就可以将数据转化为一种形式,使我们能够使用本节中的方法。 在下一章中,我们将介绍其中的一些技巧。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册