7分钟
透视表和交叉表2
3. 交叉表cross-tabulation:crosstab是一种用于计算分组频率的特殊透视表。我们可以使用pivot_table()函数实现透视表的功能,但是直接使用更方便:
pandas.crosstab(index, columns, values=None, rownames=None, colnames=None,
aggfunc=None, margins=False, dropna=True, normalize=False) index:一个array-like、Series或者前两种的列表。它给出了行的计算频数的数据。columns:一个array-like、Series或者前两种的列表。它给出了列的计算频数的数据。values:一个array-like,该数据用于聚合。如果出现了values,则必须提供aggfunc。aggfunc:一个函数对象,是聚合函数。如果出现了aggfunc,则必须提供values。rownames:一个序列。如果非空,则必须和结果的row index的level数量相等colnames:一个序列。如果非空,则必须和结果的column index的level数量相等margins:一个布尔值。如果为True,则添加行/列的总计。dropna:一个布尔值。如果为True,则结果不包含这样的列:该列所有元素都是NaNnormalize:一个布尔值、字符串('all'/'index'/'columns')、或者整数0/1。它指定是否进行归一化处理(归一化为频率),否则就是频数。- 如果
'all'/True,则对所有数据进行归一化 - 如果为
'index':则对每一行归一化 - 如果为
'columns':则对每一列归一化 - 如果
margins为True,则对margins也归一化。
- 如果
values的作用是这样的:首先根据index-columns建立坐标。行坐标来自index,列坐标来自columns。在index-columns-values中,同一个坐标下的values组成Series。这个Series被aggfunc进行聚合,aggfunc接受一个Series,返回一个标量。此时就不再是对坐标点进行计数了,而是对values进行聚合。
学员评价