我的编程空间,编程开发者的网络收藏夹
学习永远不晚

数据分析基础 | Python数据交叉表,你学会了吗?

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

数据分析基础 | Python数据交叉表,你学会了吗?

数据交叉表(也称为列联表或交叉表)是一种统计方法,用于分析和展示两个或多个分类变量之间的关系。在 Python 中,我们可以使用 Pandas 库中的crosstab函数来创建两个或多个因子的交叉表,相比Excel,Python可以更多更快的处理数据,首先,引入几个重要的包:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = [u'SimHei']
plt.rcParams['axes.unicode_minus'] = False

2.数据

使用武汉市某超市过去一个月的销售数据(如有需要可联系作者获取),创建一个DataFrame对象,作为数据源,并通过可视化各商品的销售情况,找出最热卖的十样商品,代码如下:

data = pd.read_excel('3.1-3.31商品销售流水.xls')
# 计算每个商品的出现次数
product_counts = data['品名'].value_counts()
# 转换成DataFrame形式
product_counts = pd.DataFrame({'商品名称': product_counts.index, '出现次数': product_counts.values})
# 去掉袋子
product_counts = product_counts.drop([0, 3])
# 可视化销售情况
top_10 = product_counts.head(10)
ax = top_10.plot(kind='bar', x='商品名称', y='出现次数', figsize=(10, 6), color='skyblue')
plt.title('Top 10 Most Frequent Products in March')
plt.xlabel('Product')
plt.ylabel('Frequency')
plt.xticks(rotation=45, ha='right')
plt.tight_layout()
# 在柱子上方显示数值
for p in ax.patches:
    ax.annotate(str(p.get_height()), (p.get_x() + p.get_width() / 2., p.get_height()), ha='center', va='center', xytext=(0, 5), textcoords='offset points')
plt.show()

结果如下:

图片

3.crosstab 函数

首先,介绍一下crosstab 函数:

函数:
pandas.crosstab(index, columns, values=None, rownames=None, colnames=None, aggfunc='default', margins=False, margins_name='All', dropna=True)

看一下参数主要的作用:

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)的数据集,我们想要创建一个交叉表来分析不同性别和就业状态的分布情况,并计算每个组合的人数。代码如下:

import pandas as pd
# 示例数据
data2 = pd.DataFrame({
    'Gender': ['Male', 'Female', 'Female', 'Male', 'Female', 'Male'],
    'Employment Status': ['Employed', 'Unemployed', 'Employed', 'Employed', 'Unemployed', 'Employed'],
    'Age Group': ['20-30', '20-30', '30-40', '30-40', '20-30', '40-50']
})
# 创建交叉表
cross_table = pd.crosstab(
    index=data2['Gender'], 
    columns=data2['Employment Status'],
    margins=True, 
    margins_name='Total'
)
print(cross_table)

结果如下:

图片

4.热力图可视化交叉表

 根据前文crosstab 函数用法介绍,对本文使用的销售数据创建交叉表,使用热力图可视化交叉表,对“让利类型”和“top_10”创建数据交叉,代码如下:

# 使用 crosstab 创建交叉表
cross_tab = pd.crosstab(data['让利类型'],['top_10'] )
cross_tab
# 使用热力图可视化交叉表
sns.heatmap(cross_tab, annot=True, fmt="d")
plt.show()

结果如下:

图片

同理,对“原价”和“top_10”创建数据交叉,代码如下:

# 使用 crosstab 创建交叉表
cross_tab = pd.crosstab(data['原价'],['top_10'] )
cross_tab
# 使用热力图可视化交叉表
sns.heatmap(cross_tab, annot=True, fmt="d")
plt.show()

结果如下:

图片

同理,对“类别名称”和“top_10”创建数据交叉,代码如下:

# 使用 crosstab 创建交叉表
cross_tab = pd.crosstab(data['类别名称'], ['top_10'])
cross_tab
# 使用热力图可视化交叉表
sns.heatmap(cross_tab, annot=True, fmt="d")
plt.show()

结果如下:

图片

同理,对“品名”和“top_10”创建数据交叉,代码如下:

# 使用 crosstab 创建交叉表
cross_tab = pd.crosstab(data['品名'],['top_10'] )
cross_tab
# 使用热力图可视化交叉表
sns.heatmap(cross_tab, annot=True, fmt="d")
plt.show()

结果如下:

图片

以上就是用Python构造数据交叉表的内容介绍。数据交叉表是数据分析中非常重要的工具,掌握它可以让你更加高效地进行数据处理和可视化呈现。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

数据分析基础 | Python数据交叉表,你学会了吗?

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

数据分析基础 | Python数据交叉表,你学会了吗?

数据交叉表是数据分析中非常重要的工具,掌握它可以让你更加高效地进行数据处理和可视化呈现。

数据分析落地全流程,你学会了吗?

面对细节数据缺失,可以用管理手段配合数据建设。比如要求客服在首次接单且售后无异常的情况下,接单30分钟内完成分配,有异常就人工反馈标注。

GPT推出高级数据分析功能,你学会了吗?

AI工具是无法替代人类的,但是你别忘记会使用AI工具的人肯定会干掉你!这是趋势所在!俺建了一个圈子,专门带大家做案例,玩GPT,游玩各种有趣的工具。
AI工具游玩2024-11-30

一行代码制作数据分析交叉表,太便捷了

今天小编来介绍一下Pandas模块中的另外一个函数corsstab(),我们可以通过调用该函数来制作交叉表,下面就来看看其中的主要流程和步骤吧。
代码交叉表2024-12-01

一篇数据分析报告写作指南,你学会了吗?

其实做报告的过程,就是把陈老师大量的分析方法总结归纳的过程。没错!因为本身,报告是数据分析的最后一步。只有做好了各种具体的分析,才能写出优质的报告。因此,优质的报告绝不是按模板抄出来的。

学数据分析的八大误区,你中招了吗?

在设定学习目标的时候,到底是想提升目前岗位/行业的适应能力,还是提高自己在人才市场的竞争能力,是两个根本方向性问题。

Python学习教程:Python数据分析实战基础 | 初识Pandas

这段时间和一些做数据分析的同学闲聊,我发现数据分析技能入门阶段存在一个普遍性的问题,很多凭着兴趣入坑的同学,都能够很快熟悉Python基础语法,好像自己什么都会了一点,然而实际操作起来既不知从何操起,又漏洞百出。至于原因嘛,理解不够,实践不
2023-06-02

一次SQL请求,返回分页数据和总条数,你学会了吗?

本文通过我们最初开始数据库编程时的一个实践, 提出在【一次sql请求中执行多次sql查询】的猜想;了解到client_multi_statements= false 确实能避免一部分sql注入风险;之后落地到sql注入的原理, 给出了参数化

大厂都要求的“数据分析闭环”,该如何实现?你学会了吗?

当然,现实工作中,总会遇到公司领导不重视,业务不积极,数据太少等等问题。该怎么补救呢?你不能太指望遇到100%完美型的公司才干活,因此建议大家抱着:行有不得,反求诸己的精神,先把我们自己能干的工作干好。

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录