前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >一行代码制作数据分析交叉表,太便捷了

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

作者头像
用户6888863
发布于 2023-03-01 11:22:30
发布于 2023-03-01 11:22:30
71000
代码可运行
举报
文章被收录于专栏:AI篮球与生活AI篮球与生活
运行总次数:0
代码可运行

在上一篇文章中我们了解到Pandas模块中的pivot_table()函数可以用来制作数据透视表,今天小编来介绍一下Pandas模块中的另外一个函数corsstab(),我们可以通过调用该函数来制作交叉表,下面就来看看其中的主要流程和步骤吧。

模块导入和数据读取

那我们按照惯例,首先导入模块并且来读取所要使用到的数据集,引用的依然是之前制作数据透视表的数据集

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pandas as pd

def load_data():
    return pd.read_csv('coffee_sales.csv', parse_dates=['order_date'])

那这里小编是通过自定义一个函数,然后通过调用该函数来读取数据,在实际工作当中每个人都可以根据自己的喜好来操作

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df = load_data()
df.head()

output

牛刀小试

交叉表是用于统计分组频率的特殊透视表。简单来说,就是将两个或者多个列中不重复的元素组成一个新的DataFrame,新数据的行和列交叉的部分值为其组合在原数据中的数量,我们先来看一个简单的例子,代码如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pd.crosstab(index = df['region'], columns = df['product_category'])

output

在行方向上代表的是不同的地区,而在列方向上代表的则是不同的咖啡种类,出来的结果表示的是不同地区不同咖啡种类的汇总数据,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df[(df["region"] == "Central")&(df["product_category"] == "Tea")].shape[0]

output

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
336

例如我们筛选出地区是中部地区并且品种是茶饮的数据,出来的结果总共有336条数据,和交叉表中的结果一致,

我们可以对列名以及行索引更换名字,通过调用rownames参数以及colnames参数,代码如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pd.crosstab(
    index = df['region'], 
    columns = df['product_category'], 
    rownames=['US Region'], 
    colnames=['Product Category']
)

output

除了咖啡的品类之外,我们还想要知道到底不同品种的咖啡在批发和零售之间销量的数据,就可以这么来操作

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pd.crosstab(
    index = df['region'], 
    columns = [df['product_category'], df['market']]
)

output

或者是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pd.crosstab(
    index = df['region'], 
    columns = [df['product_category'], df['market']],
    rownames=['US Region'], 
    colnames=['Product Category', 'Market']
)

output

输出的DataFrame数据集当中的列有两层,最上面的是咖啡的种类,然后紧接着第二层的便是不同的市场,当然我们也可以在行方向上添加多个层次的索引,代码如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pd.crosstab(
    index = [df['region'], df['market']], 
    columns = df['product_category']
)

output

进阶的操作

pd.pivot_table()函数一样,我们也可以通过调用当中的margin参数来给整合出来的数据做一个加总,代码如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pd.crosstab(index = df['region'],
            columns = df['product_category'],
            margins = True)

output

我们还能指定该列的列名,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pd.crosstab(
    index = df['region'],
    columns = df['product_category'], 
    margins = True, 
    margins_name = 'Subtotals'
)

output

另外还有参数normalize用来将所有值除以值的总和进行归一化

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pd.crosstab(index = df['region'], 
            columns = df['product_category'],
            normalize = True)

output

我们从美观的角度出发,想要保留两位小数,代码如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pd.crosstab(
    index = df['region'], 
    columns = df['product_category'], 
    normalize = True
).style.format('{:.2%}')

output

要是和之间的margin参数相结合来使用的话,将所有的结果汇总到一起等于100%,代码如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pd.crosstab(
    index = df['region'], 
    columns = df['product_category'], 
    margins = True, 
    normalize = True
).style.format('{:.2%}')

output

进一步衍生

最后还有values以及aggfunc两参数,其中aggfunc参数具体指的是指定聚合函数,例如平均数、求和以及中位数等统计方法,对value参数指定的连续性变量的列进行计算,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.info()

output

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4248 entries, 0 to 4247
Data columns (total 9 columns):
 #   Column            Non-Null Count  Dtype         
---  ------            --------------  -----         
 0   order_date        4248 non-null   datetime64[ns]
 1   market            4248 non-null   object        
 2   region            4248 non-null   object        
 3   product_category  4248 non-null   object        
 4   product           4248 non-null   object        
 5   cost              4248 non-null   int64         
 6   inventory         4248 non-null   int64         
 7   net_profit        4248 non-null   int64         
 8   sales             4248 non-null   int64         
dtypes: datetime64[ns](1), int64(4), object(4)
memory usage: 298.8+ KB

当前数据集中“market”、“region”、“product_category”、“product”四列是离散型变量,而有“cost”、“inventory”、“net_profit”、“sales”四列是连续性变量,分别代表的是成本、库存、净利润以及销量,其中我们想针对不同地区、不同咖啡种类的成本做一个平均值,那么代码如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pd.crosstab(
    index = df['region'], 
    columns = df['product_category'], 
    values = df['cost'],
    aggfunc = 'mean'
)

output

要是我们想要对计算出来的结果保留两位小数,代码如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pd.crosstab(
    index = df['region'], 
    columns = df['product_category'], 
    values = df['cost'],
    aggfunc = 'mean'
).round(2)

output

当然要是针对存在缺失值的情况,我们也可以替换成其他值来处理,代码如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pd.crosstab(
    index = df['region'], 
    columns = df['product_category'], 
    values = df['cost'],
    aggfunc = 'mean',
).fillna(0)

output

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 关于数据分析与可视化 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
一行Pandas代码制作数据分析透视表,太牛了
相信大家都用在Excel当中使用过数据透视表(一种可以对数据动态排布并且分类汇总的表格格式),也体验过它的强大功能,在Pandas模块当中被称作是pivot_table,今天小编就和大家来详细聊聊该函数的主要用途。
用户6888863
2022/06/08
9690
一行Pandas代码制作数据分析透视表,太牛了
【原创干货】6000字、22个案例详解Pandas数据分析/预处理时的实用技巧,超简单
上两篇原创的文章,小编主要是讲了数据可视化方面的内容,但是好像看得人不是很多的样子(搞得小编心里拔凉拔凉的....)
用户6888863
2022/04/13
1.6K0
【原创干货】6000字、22个案例详解Pandas数据分析/预处理时的实用技巧,超简单
数据清洗之 透视图与交叉表
透视图与交叉表 在数据分析中,数据透视表是常见的工具之一,需要根据行或列对数据进行各个维度数据的汇总,在pandas中,提供了相关函数解决此类问题 交叉表更多用于频数的分析 pivot_table(data, index, columns, values, aggfunc, fill_value, margins, margins_name=) data:数据 index: 行分组键 columns:列分组键 values:分组的字段,只能为数值型变量 aggfunc:聚合函数 fill_value: 缺失
ruochen
2021/05/14
1.6K0
数据清洗之 透视图与交叉表
开启机器学习的第一课:用Pandas进行数据分析
翻译 | AI科技大本营 参与 | 林椿眄 本课程的目的并不是要开发一门全新的机器学习或数据分析的综合入门课程,也不是想借此来取代基础教育、在线/离线课程或一些专业和书籍。我们推出本系列文章是为了让初学者快速地回顾一些基础知识,并帮助你找到进一步学习的方向。 首先用简短通俗的语言回顾数学和机器学习的基础知识,并引用了一些其他资源,这种教学的方法与一些深度学习书籍类似。 此外,课程不单单注重理论的讲解,更强调完美地平衡理论与实践。因此,每个理论主题讲解后都有一个对应的练习专题,方便初学者通过自己动手来巩
AI科技大本营
2018/04/26
1.6K0
开启机器学习的第一课:用Pandas进行数据分析
数据分析之Pandas变形操作总结
pandas 是一个强大的分析结构化数据的工具集;它的使用基础是Numpy(提供高性能的矩阵运算);用于数据挖掘和数据分析,同时也提供数据清洗功能。
Datawhale
2020/07/02
4.1K0
数据分析之Pandas变形操作总结
盘一盘 Python 特别篇 16 - Cross Table
交叉表 (cross table) 是透视表的特例,其默认的整合函数是计算个数或频率。
用户5753894
2020/06/24
1.2K0
【数据处理包Pandas】数据透视表
使用stack方法把列索引变成行索引(默认是把最低级列索引变成最低级行索引),此时行索引有3级。
Francek Chen
2025/01/22
3740
【数据处理包Pandas】数据透视表
Pandas 2.2 中文官方教程和指南(十四)
pandas 提供了用于操作Series和DataFrame的方法,以改变数据的表示形式,以便进行进一步的数据处理或数据汇总。
ApacheCN_飞龙
2024/04/25
5340
基于Titanic数据集的完整数据分析
本文是一个极度适合入门数据分析的案例,采用的是经典数据集:泰坦尼克数据集(train部分),主要内容包含:
皮大大
2023/05/05
1.4K0
【干货原创】厉害了,在Pandas中用SQL来查询数据,效率超高
今天我们继续来讲一下Pandas和SQL之间的联用,我们其实也可以在Pandas当中使用SQL语句来筛选数据,通过Pandasql模块来实现该想法,首先我们来安装一下该模块
用户6888863
2022/04/13
5570
【干货原创】厉害了,在Pandas中用SQL来查询数据,效率超高
数据透视之交叉表 crosstab()
不要被名字所迷惑,其实它也是二维的表结构,与pivot_table很相似,且是一个特殊的数据透视函数,它默认统计分组项的频次。
double
2019/05/28
2.8K0
《Pandas 1.x Cookbook · 第二版》第05章 探索性数据分析
概括性统计包括平均值、分位值、标准差。.describe方法能计算DataFrame中数值列的统计信息:
SeanCheney
2021/03/02
7120
《Pandas 1.x Cookbook · 第二版》第05章 探索性数据分析
左手用R右手Python系列10——统计描述与列联分析
数据统计描述与列联表分析是数据分析人员需要掌握的基础核心技能,R语言与Python作为优秀的数据分析工具,在数值型数据的描述,类别型变量的交叉分析方面,提供了诸多备选方法。 这里根据我们平时对于数据结构的分类习惯,按照数值型和类别型变量分别给大家盘点一下R与Python中那些简单使用的分析函数。 R语言: 描述性统计:(针对数值型) library("ggplot2") myvars<-names(diamonds)[c(5,6,7)];myvars [1] "depth" "table" "price"
数据小磨坊
2018/04/11
3.7K0
左手用R右手Python系列10——统计描述与列联分析
Pandas高级教程之:Dataframe的重排和旋转
使用Pandas的pivot方法可以将DF进行旋转变换,本文将会详细讲解pivot的秘密。
程序那些事
2021/06/15
1.5K0
Pandas进阶|数据透视表与逆透视
数据透视表将每一列数据作为输入,输出将数据不断细分成多个维度累计信息的二维数据表。在实际数据处理过程中,数据透视表使用频率相对较高,今天云朵君就和大家一起学习pandas数据透视表与逆透视的使用方法。
数据STUDIO
2021/09/26
4.7K0
Pandas进阶|数据透视表与逆透视
python数据分析——数据分类汇总与统计
数据分类汇总与统计是指将大量的数据按照不同的分类方式进行整理和归纳,然后对这些数据进行统计分析,以便于更好地了解数据的特点和规律。
鲜于言悠
2024/03/20
1.8K0
python数据分析——数据分类汇总与统计
python数据分析——数据分类汇总与统计
推荐一个网站给想要了解或者学习人工智能知识的读者,这个网站里内容讲解通俗易懂且风趣幽默,对我帮助很大。我想与大家分享这个宝藏网站,请点击下方链接查看。 https://www.captainbed.cn/f1
鲜于言悠
2025/03/08
1.2K1
python数据分析——数据分类汇总与统计
pandas系列7-透视表和交叉表
透视表pivot_table是各种电子表格和其他数据分析软件中一种常见的数据分析汇总工具。 根据一个或者多个键对数据进行聚合 根据行和列上的分组键将数据分配到各个矩形区域中 一文看懂pandas的透视表 Pivot_table 特点 灵活性高,可以随意定制你的分析计算要求 脉络清晰易于理解数据 操作性强,报表神器 参数 data: a DataFrame object,要应用透视表的数据框 values: a column or a list of columns to aggregate,要聚合的列
皮大大
2021/03/02
1.4K0
《利用Python进行数据分析·第2版》第10章 数据聚合与分组运算10.1 GroupBy机制10.2 数据聚合10.3 apply:一般性的“拆分-应用-合并”10.4 透视表和交叉表10.5 总
对数据集进行分组并对各组应用一个函数(无论是聚合还是转换),通常是数据分析工作中的重要环节。在将数据集加载、融合、准备好之后,通常就是计算分组统计或生成透视表。pandas提供了一个灵活高效的gruopby功能,它使你能以一种自然的方式对数据集进行切片、切块、摘要等操作。 关系型数据库和SQL(Structured Query Language,结构化查询语言)能够如此流行的原因之一就是其能够方便地对数据进行连接、过滤、转换和聚合。但是,像SQL这样的查询语言所能执行的分组运算的种类很有限。在本章中你将会看
SeanCheney
2018/04/24
5.1K0
《利用Python进行数据分析·第2版》第10章 数据聚合与分组运算10.1 GroupBy机制10.2 数据聚合10.3 apply:一般性的“拆分-应用-合并”10.4 透视表和交叉表10.5 总
pandas透视表分析
数据透视表是一个用来总结和展示数据的强大工具。pandas提供了pivot_table()函数以快捷地把DataFrame转换为透视表。
陆勤_数据人网
2019/05/28
2.3K0
推荐阅读
相关推荐
一行Pandas代码制作数据分析透视表,太牛了
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验