共1866字,阅读时间4分钟  点击上方蓝色字体关注公众号

1 回顾

昨天总结了Python的69个内置函数,回看:

 Python 69个内置函数分类总结  这些内置函数无论何时,我们都可以任意调用,熟知它们是必要的。

在这之前介绍过Python数据透视功能的实现函数:pivot_table,它能实现数据分组聚合统计,这是pivot函数做不到的,它只能完成分组。今天,总结一个特殊的数据透视函数:crosstab,交叉表。

2 交叉表

不要被名字所迷惑,其实它也是二维的表结构,与pivot_table很相似,且是一个特殊的数据透视函数,它默认统计分组项的频次。

看一个例子

import numpy as npimport pandas as pdfrom pandas import crosstaba = np.array(['apple','apple', 'orange', 'banana', 'orange'],dtype=object)b = np.array(['china','china', 'ameri', 'ameri', 'korea'],dtype=object)c = np.array([ 'good','good','good','good','better'],dtype=object)pd.crosstab(a,[b,c])

结果为:

col_0 ameri china koreacol_1 good good betterrow_0apple 0 2 0banana 1 0 0orange 1 0 1

这个怎么理解? 其实就是轴0和轴1的组合后,每项出现的频次。实质等价于:

for it in zip(a,b,c):print(it)

结果,大家可以看到apple,china,good这项出现的频次为2,其他频次都是1.

('apple', 'china', 'good')('apple', 'china', 'good')('orange', 'ameri', 'good')('banana', 'ameri', 'good')('orange', 'korea', 'better')

同理,

pd.crosstab([a,b],[c])

结果为:

col_0 better goodrow_0 row_1apple china 0 2banana ameri 0 1orange ameri 0 1orange korea 1 0

还是只有一项(apple, china, good)频次为2,和上面的原理一样。

3 原型和参数

crosstab函数也是Pandas中的顶层函数,函数参数包括:

其中 index, columns是必选参数,分别是行索引、列索引。

其他参数可以理解为与pivot_table一致,所以说它是一种特殊的透视表。

4 实际应用

df = DataFrame({'类别':['水果','水果','水果','蔬菜','蔬菜','肉类','肉类'],'产地':['美国','中国','中国','中国','新西兰','新西兰','美国'],'水果':['苹果','梨','草莓','番茄','黄瓜','羊肉','牛肉'],'数量':[5,5,9,3,2,10,8],'价格':[5,5,10,3,3,13,20]})df #显示df

产地 价格 数量 水果 类别0 美国 5 5 苹果 水果1 中国 5 5 梨 水果2 中国 10 9 草莓 水果3 中国 3 3 番茄 蔬菜4 新西兰 3 2 黄瓜 蔬菜5 新西兰 13 10 羊肉 肉类6 美国 20 8 牛肉 肉类

按照类别为index, 产地为columns,统计词条出现频次:

pd.crosstab(df['类别'],df['产地'],margins=True)

比如类别为水果,产地在中国的出现频次为2,结果如下:

产地 中国 新西兰 美国 All类别水果 2 0 1 3肉类 0 1 1 2蔬菜 1 1 0 2All 3 2 2 7

如果想使用聚合函数,即aggfun参数,同时必须指明values列,如下:

pd.crosstab(df['类别'],df['产地'],values=df['价格'],aggfunc=np.max, margins=True)

结果如下,看到实现效果与pivot_table是相似的。

产地 中国 新西兰 美国 All类别水果 10.0 NaN 5.0 10.0肉类 NaN 13.0 20.0 20.0蔬菜 3.0 3.0 NaN 3.0All 10.0 13.0 20.0 20.0

5 总结

crosstab本质:按照指定的index和columns统计数据帧中出现(index, columns)的频次。也可以理解为分组。

pivot_table, crosstab,聚合功能前面提到过是建立在groupby基础上的,所以最本质的还是一个分组统计功能。

总第251篇原创,数据分析系列第5篇原创。如果觉得有帮助,再点好看。

原创,坚持

crosstab交叉表_数据透视之交叉表 crosstab()相关推荐

  1. 数据透视表和数据交叉表_数据透视表的数据提取

    数据透视表和数据交叉表 Consider the data of healthcare drugs as provided in the excel sheet. The concept of piv ...

  2. mariadb 没有mysql表_数据未插入mySQL表(MariaDB)

    我目前正在尝试实现一个python脚本,它将在我的SQL数据库(MariaDB)的表中插入两个虚拟值.我在我的覆盆子皮上使用拉伸操作系统.在 我首先在MariaDB的现有数据库中成功地创建了一个表.在 ...

  3. wps透视表列总计移到顶部_数据透视表总计中的错误

    wps透视表列总计移到顶部 Pivot tables are a quick and easy way to summarize a table full of data, without fancy ...

  4. excel数据透视表_来自多个工作表的Excel数据透视表更新

    excel数据透视表 If you have similar data on two or more worksheets, you might want to combine that data i ...

  5. 数据透视表里填充重复项_数据透视表填充颜色消失

    数据透视表里填充重复项 Microsoft just announced the winner of their Excel World Champ data visualization contes ...

  6. SpreadJS集算表联动数据透视表,高效实现前端数据多维分析

    在做一些财务.供应链.资产管理等系统时,由于业务人员线下都是采用Excel来完成的,因此就需要将Excel中业务人员使用的功能都能在Web端系统实现,整体上的实现方案有三种: 完全自研一套具备Exce ...

  7. html行标签并列显示,excel数据透视表_excel数据透视表怎样不显示汇总

    EXCEL中的数据透视表有什么作用,用在哪些方面? excel2010数据透视表怎么做 excel2010数据透视表做法,需要用户打开需要编辑的文件,进入后点击数据透视表,选中我们需要统计的数据,默认 ...

  8. B表中的pid对应A表中id,查询A表中数据,根据b表中对应a表中该id的数据数目排序...

    B表中的pid对应A表中id,查询A表中数据,根据b表中对应a表中该id的数据数目排序 select a.*,count(*) as c from a left join b on a.id=b.ai ...

  9. 数据结构中La表的数据合并到Lb表中

    实验描述:La表中的数据为(3,5,8,11)  Lb 表中的数据为(2,6,8,9,11,15,20) 将La表中的数据而不存在Lb表的数据插入到Lb表中,从而实现并集操作. 出现的问题:最后实现的 ...

最新文章

  1. 闪念-许久未来一切没变
  2. vue2.x 综合教程 一
  3. 【题解】p1064 金明的预算方案
  4. chmod、chown函数的使用
  5. 动态规划 NOIP经典问题 开心的金明(洛谷P1060题题解,Java语言描述)
  6. 图解Kafka中的基本概念
  7. Top命令找出CPU占用较高的Java线程信息
  8. Kafka 分布式消息队列介绍
  9. linux vim打开乱码,linux下解决vim打开文件乱码现象
  10. 中国首个芯片大学最快于本月底在南京挂牌;​华为方舟编译器正式支持 C 语言;Ora2Pg v21.0 发布|极客头条
  11. 吴恩达创建deeplearning.ai讲授AI课程 ,向全世界普及深度学习知识
  12. 一次vue-cli 2.x项目打包优化经历(优化xlsx插件)
  13. day12(html、css)
  14. CIH病毒的分析与清除
  15. 艾宾浩斯遗忘曲线复习计划表Excel下载
  16. 基于PS2手柄的Arduino遥控小车
  17. 计算机找不到海信电视,海信电视到底怎么投屏,看这一篇就够了!
  18. layui 确认,取消弹窗
  19. Qt/Windows 获取 MITSUBISHI P95DW 打印机状态信息
  20. 在x86和arm混合部署架构下排查TiKV节点内存占用极高的问题

热门文章

  1. echarts中y轴设置刻度_xAxis 配置
  2. 解决win10设备管理器及操作找不到蓝牙
  3. [Day.js] 工具类Day.js 的基本使用
  4. 【Web】Excle题库抽题组卷在jsp显示
  5. v3.exo是什么文件_exo文件是什么东西 exo体又是什么东西
  6. 51单片机:共阴数码管动态显示(定时器+中断)
  7. 数字信号处理学习笔记[1] 离散信号 奇异信号 抽样定理
  8. 酷客多小程序百城宣讲会-郑州站圆满成功
  9. 史上最简单的openshift免费空间上传代码教程!没有之一!
  10. 重装也无法修复此计算机,win10系统重装|Win10“重置此电脑”时出现问题解决教程...