1.引言
数据交叉表(也称为列联表或交叉表)是一种统计方法,用于分析和展示两个或多个分类变量之间的关系。在 Python 中,我们可以使用 Pandas 库中的crosstab函数来创建两个或多个因子的交叉表,相比Excel,Python可以更多更快的处理数据,首先,引入几个重要的包:
2.数据
使用武汉市某超市过去一个月的销售数据(如有需要可联系作者获取),创建一个DataFrame对象,作为数据源,并通过可视化各商品的销售情况,找出最热卖的十样商品,代码如下:
结果如下:
图片
3.crosstab 函数
首先,介绍一下crosstab 函数:
看一下参数主要的作用:
index:必选参数,行索引,这是创建交叉表时必须指定的参数,用于定义交叉表的行索引。可以设置为DataFrame中的一个或多个列,以创建多层索引。
columns:必选参数,列索引,这是创建交叉表时必须指定的参数,用于定义交叉表的列索引。通常用于展示分类数据。
values:非必选参数,被计算的数据项,这是一个可选参数,指定需要在交叉表中进行聚合操作的列。如果没有提供,交叉表将只计算行和列的组合数量。
rownames:非必选参数,行索引的名称,这是一个可选参数,用于指定行索引的名称。如果未指定,将使用 index参数中的名称。
colnames:非必选参数,列索引的名称,这是一个可选参数,用于指定列索引的名称。如果未指定,将使用 columns参数中的名称。
aggfunc:非必选参数,聚合函数,这是用于对交叉表中的数据进行聚合计算的函数,默认为 'default',表示使用 numpy 的 sum函数。可以根据需要选择其他聚合函数。
fill_values:非必选参数,填充NA值,这是一个可选参数,用于指定在交叉表中缺失值的填充值。如果未指定,缺失值将保留为 NaN。
margins:非必选参数,添加行列的总计,这是一个布尔值参数,默认为 False,表示不显示行列的总计。如果设置为 True,则会在交叉表的行和列末尾添加总计。
margins_name:非必选参数,边缘名称,当 margins=True时,此参数用于设置边缘行或列的名称,默认值为 'All'。
dropna:非必选参数,是否丢弃NA值,这是一个布尔值参数,默认为 True,表示如果整行或整列都是NA值,则这些行或列将被丢弃。如果设置为 False,则这些行或列将被保留。
根据上述函数参数介绍,通过下面一个例子进行示例,假设我们有一个包含性别(Gender)、就业状态(Employment Status)和年龄组(Age Group)的数据集,我们想要创建一个交叉表来分析不同性别和就业状态的分布情况,并计算每个组合的人数。代码如下:
结果如下:
图片
4.热力图可视化交叉表
根据前文crosstab 函数用法介绍,对本文使用的销售数据创建交叉表,使用热力图可视化交叉表,对“让利类型”和“top_10”创建数据交叉,代码如下:
结果如下:
图片
同理,对“原价”和“top_10”创建数据交叉,代码如下:
结果如下:
图片
同理,对“类别名称”和“top_10”创建数据交叉,代码如下:
结果如下:
图片
同理,对“品名”和“top_10”创建数据交叉,代码如下:
结果如下:
图片
以上就是用Python构造数据交叉表的内容介绍。数据交叉表是数据分析中非常重要的工具,掌握它可以让你更加高效地进行数据处理和可视化呈现。