Python中的pandas.crosstab()函数
该方法用于计算两个(或多个)因子的简单交叉表。默认情况下,计算一个因子的频率表,除非传递一个值数组和一个聚合函数。
语法:
pandas.crosstab(index, columns, values=None, rownames=None, colnames=None, aggfunc=None, margins=False, margins_name=’All’, dropna=True, normalize=False)
参数:
- index : 数组状,系列,或数组/系列的列表,在行中要分组的值。
- columns : 数组状,系列,或数组/系列的列表,在列中要分组的值。
- values : 类似于数组,可有可无,根据因素进行聚合的值数组。需要指定`aggfunc’。
- rownames : 序列,默认无,如果通过,必须与通过的行数组数量相匹配。
- colnames : 序列,默认为无,如果通过,必须与通过的列数组的数量相匹配。
- aggfunc : 函数,可选,如果指定,需要同时指定
values。 - margins : bool, default False, 增加行/列的边距(小计)。
- margins_name : str, default ‘All’, margins为True时包含总数的行/列的名称。
- dropna : bool,默认为True,不包括那些条目全部为NaN的列。
下面是上述方法的实现和一些例子。
例子1 :
# importing packages
import pandas
import numpy
# creating some data
a = numpy.array(["foo", "foo", "foo", "foo",
"bar", "bar", "bar", "bar",
"foo", "foo", "foo"],
dtype=object)
b = numpy.array(["one", "one", "one", "two",
"one", "one", "one", "two",
"two", "two", "one"],
dtype=object)
c = numpy.array(["dull", "dull", "shiny",
"dull", "dull", "shiny",
"shiny", "dull", "shiny",
"shiny", "shiny"],
dtype=object)
# form the cross tab
pandas.crosstab(a, [b, c], rownames=['a'], colnames=['b', 'c'])
输出 :

例子2 :
# importing package
import pandas
# create some data
foo = pandas.Categorical(['a', 'b'],
categories=['a', 'b', 'c'])
bar = pandas.Categorical(['d', 'e'],
categories=['d', 'e', 'f'])
# form crosstab with dropna=True (default)
pandas.crosstab(foo, bar)
# form crosstab with dropna=False
pandas.crosstab(foo, bar, dropna=False)
输出 :

极客教程