diff --git a/6.md b/6.md index 275b77e88ecae1042eab47f35cca43edeeb3edf7..d051de9f23357a88abff20f79fd6462338ac02a0 100644 --- a/6.md +++ b/6.md @@ -192,3 +192,67 @@ century_21.where('Year', are.equal_to(2009)) | --- | --- | --- | --- | | 2009 | 10595.5 | 521 | Avatar | +## 类别分许 + +### 可视化类别分布 + +许多数据不以数字的形式出现。 数据可以是音乐片段,或地图上的地方。 他们也可以是类别,你可以在里面放置个体。 以下是一些类别变量的例子。 + ++ 个体是冰淇淋纸盒,变量就是纸盒里的味道。 ++ 个体是职业篮球运动员,变量是球员的队伍。 ++ 个体是年,而变量是今年最高票房电影的流派。 ++ 个体是调查对象,变量是他们从“完全不满意”,“有点满意”和“非常满意”中选择的回答。 + +`icecream `表包含 30 盒冰激凌的数据。 + +```py +icecream = Table().with_columns( + 'Flavor', make_array('Chocolate', 'Strawberry', 'Vanilla'), + 'Number of Cartons', make_array(16, 5, 9) +) +icecream +``` + + +| Flavor | Number of Cartons | +| --- | --- | +| Chocolate | 16 | +| Strawberry | 5 | +| Vanilla | 9 | + +分类变量“口味”的值是巧克力,草莓和香草。 表格显示了每种口味的纸盒数量。 我们称之为分布表。 分布显示了所有变量的值,以及每个变量的频率。 + +### 条形图 + +条形图是可视化类别分布的熟悉方式。 它为每个类别显示一个条形。 条形的间隔相等,宽度相同。 每个条形的长度与相应类别的频率成正比。 + +我们使用横条绘制条形图,因为这样更容易标注条形图。 所以`Table`的方法称为`barh`。 它有两个参数:第一个是类别的列标签,第二个是频率的列标签。 + +```py +icecream.barh('Flavor', 'Number of Cartons') +``` + +如果表格只包含一列类别和一列频率(如冰淇淋),则方法调用甚至更简单。 您可以指定包含类别的列,`barh`将使用另一列中的值作为频率。 + +```py +icecream.barh('Flavor') +``` + +### 类别分布的特征 + +除了纯粹的视觉差异之外,条形图和我们在前面章节中看到的两个图表之间还有一个重要的区别。 它们是散点图和线图,两者都显示两个数值变量 - 两个轴上的变量都是数值型的。 相比之下,条形图的一个轴上是类别,在另一个轴上具有数值型频率。 + +这对图表有影响。首先,每个条形的宽度和相邻条形之间的间隔完全取决于生成图的人,或者用于生成该图的程序。 Python 为我们做了这些选择。 如果您要手动绘制条形图,则可以做出完全不同的选择,并且仍然会是完全正确的条形图,前提是您使用相同宽度绘制了所有条形,并使所有间隔保持相同。 + +最重要的是,条形可以以任何顺序绘制。 “巧克力”,“香草”和“草莓”这些类别没有普遍的等级顺序,不像数字`5, 7`和`10`。 + +这意味着我们可以绘制一个易于解释的条形图,方法是按降序重新排列条形图。 为了实现它,我们首先按照`Number of Cartons`的降序,重新排列`icecream `的行,然后绘制条形图。 + +```py +icecream.sort('Number of Cartons', descending=True).barh('Flavor') +``` + +这个条形图包含的信息和以前的完全一样,但是它更容易阅读。 虽然在只读三个条形的情况下,这并不是一个巨大的收益,但是当分类数量很大时,这可能是相当重要的。 + +## 组合分类数据 +