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
,则结果不包含这样的列:该列所有元素都是NaN
normalize
:一个布尔值、字符串('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
进行聚合。
学员评价