前言

主要想做的事情用大白话来讲就是:一个dataframe里面对于两个列做分组,最后算一个value对应于这两个列的分组来算值的矩阵,这个矩阵的行为其中一个列,列也为其中一个列。

新建一个df

import pandas as pd
import numpy as np
v = [1, 2, 3, 3, 3]
a = pd.DataFrame({'v': v})
d = [2 , 4, 4, 5, 4]
a['d'] = d
c = ['c' , 'h', 'd', 'e',  'c']
a['c'] = c

df用两列进行分组grouby

a.groupby(['v', 'd'])['c'].count()

我的要干的事情 就是把这个v当作列index,d当作行columns,之后把对应的分组的’c‘.count()放到对应的索引loc处,不存在的值用0填补。

最后得到一个以v为index, d为column的df,也可以搞成对应的矩阵matrix

第一种方法:pd.crosstab

cpd = pd.crosstab(a['v'], a['d'], a['c'], aggfunc='count')
cpd

查看index和columns

我们再来一步就可以得到我们想要的了,把nan填充一下。

cpd = cpd.fillna(0)
cpd

转换为array和list的方法

cpd_arr1 = np.array(cpd)
cpd_arr2 = np.array(cpd.values.tolist())
cpd_arr3 = cpd.as_matrix()
cpd_list = cpd.values.tolist()

整体流程

cpd = pd.crosstab(a['v'], a['d'], a['c'], aggfunc='count')
cpd = cpd.fillna(0)
cpd_arr = np.array(cpd)
cpd_arr

总结一句话

np.array(pd.crosstab(a['v'], a['d'], a['c'], aggfunc='count').fillna(0))

第二种方法:pivot()

groupby的as_index=False

a.groupby(['v', 'd'], as_index=False)['c'].count()

把操作的三列的值恢复到df上,每一个列还是对应的列。

pivot

a.groupby(['v', 'd'], as_index=False)['c'].count().pivot('v', 'd', 'c')

对应关系如下:

整体流程

ppd = a.groupby(['v', 'd'], as_index=False)['c'].count().pivot('v', 'd', 'c')
ppd = ppd.fillna(0)
ppd_arr = np.array(ppd)
ppd_arr

总结一句话

np.array(a.groupby(['v', 'd'], as_index=False)['c'].count().pivot('v', 'd', 'c').fillna(0))

第三种方法:pivot_table

pivoted_df=pd.pivot_table(a[['v','d','c']], values='c', index=['v'],columns=['d'], aggfunc='count')
pivoted_df

更多精彩内容(请点击图片进行阅读)

公众号:AI蜗牛车

保持谦逊、保持自律、保持进步

个人微信

备注:昵称+学校/公司+方向

如果没有备注不拉群!

拉你进AI蜗牛车交流群

【随笔】Pandas三种实现数据透视表的方法相关推荐

  1. 【Python基础】Pandas三种实现数据透视表的方法

    前言 主要想做的事情用大白话来讲就是:一个dataframe里面对于两个列做分组,最后算一个value对应于这两个列的分组来算值的矩阵,这个矩阵的行为其中一个列,列也为其中一个列. 新建一个df im ...

  2. 如何创建数据透视表的方法

    内容提要:本文介绍excel中如何创建数据透视表的方法,并分为数据区域和列表区域来分别介绍,并给出数据透视表教程链接.对Excel感兴趣的朋友可加Excel学习交流群:284029260(www.it ...

  3. 用python做透视表_python制作数据透视表pivot_table方法详解

    数据透视表(Pivot Table)是一种交互式的表,可以进行某些计算,如求和与计数等.所进行的计算与数据跟数据透视表中的排列有关. 之所以称为数据透视表,是因为可以动态地改变它们的版面布置,以便按照 ...

  4. vmware服务器文件备份,三种VMware数据备份和恢复方法

    方法2:ESX Service Console中安装备份程序 工作原理:这种方法是在ESX Service Console在安装备份程序,按下图备份VM中潜在的VMDK文件组.Service Cons ...

  5. Excel中数据汇总常用的几种方法,sumif、合并计算、数据透视表

    Excel中数据汇总常用的几种方法: 如图,我们想要求出每个人的数量是多少,可以用3种方法. 第一种: 函数sumif(),首先把名字列出来,可以用删除重复项,其次在名字的后面用=sumif()来实现 ...

  6. 【转载】使用Pandas创建数据透视表

    使用Pandas创建数据透视表 本文转载自:蓝鲸的网站分析笔记 原文链接:使用Pandas创建数据透视表 目录 pandas.pivot_table() 创建简单的数据透视表 增加一个行维度(inde ...

  7. 对比Excel,学习pandas数据透视表

    Excel中做数据透视表 ① 选中整个数据源: ② 依次点击"插入"-"数据透视表" ③ 选择在Excel中的哪个位置,插入数据透视表 ④ 然后根据实际需求,从 ...

  8. 刷新table数据_经典 - 一文轻松看懂数据透视表

    [导语]也许大多数人都知道 Excel 中的数据透视表,也体会到了它的强大功能,那么 Pandas 也提供了一个类似的功能,也就是pivot_table.因为考虑到直接学 pivot_table 会有 ...

  9. SQL Server中数据透视表的Python脚本

    This article talks about Python scripts for creating pivot tables in multiple ways. 本文讨论了以多种方式创建数据透视 ...

最新文章

  1. UI培训分享:UI设计师要掌握哪些知识点
  2. java命令执行类,这里设置了classpath,系统变量里的classpath将失效
  3. 看看android基础知识,谁帮我作答
  4. 面试Android实习生
  5. [HTML/CSS]盒子模型,块级元素和行内元素
  6. C语言数组元素总和最大的连续子序列的算法(附完整源码)
  7. android webview 重定向 goback,Android WebView 网址重定向影响 goBack
  8. 【算法分析与设计】找出缺失的一个整数问题
  9. 计算机学业水平测试题及答案初中,初中信息技术学业水平测试——选择题
  10. 【maven】Mac的仓库拷贝到Windows的离线环境下无法引入问题
  11. java实现rabbitmq路由模型(routing/topic queues), 生产者 消费者 交换机 消息队列
  12. ES6中的React生命周期详解
  13. Java基础资料整理
  14. C#实现人民币阿拉伯数字转换成大写金额的代码
  15. CreateThread函数,无法将参数 3 从“DWORD (__cdecl *)(LPVOID)”转换为“LPTHREAD_START_ROUTINE” PVZCheater
  16. 【人话版】分布式数字身份:通往WEB3世界的桥头堡
  17. PyCharm的Requirement already satisfied 解决方法
  18. DL4J中文文档/开始/从源码构建
  19. HashMap扩容机制源码分析
  20. 什么是懦弱型人格?懦弱的原因和改变方法

热门文章

  1. jquery如何为td赋值
  2. Java SSM项目运用策略模式思想
  3. JAVA毕设项目五金机电市场批发零售管理信息系统(java+VUE+Mybatis+Maven+Mysql)
  4. jdbc:oracle:thin:@192.168.3.98:1521:orcl(简单介绍)
  5. vb.net excel操作:填充人事档案表并打印 中打印补充
  6. 给初学者看的,笔记本术语解释
  7. IC卡读写器技术及应用
  8. html网页调用后端python代码方法
  9. Ribbon的介绍和使用(一)
  10. 安装sql2000提示html,SQL Server2000安装时不出现安装界面,进程中存在解决