前言

主要想做的事情用大白话来讲就是:一个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基础下载机器学习的数学基础专辑获取一折本站知识星球优惠券,复制链接直接打开:https://t.zsxq.com/662nyZF本站qq群1003271085。加入微信群请扫码进群(如果是博士或者准备读博士请说明):

【Python基础】Pandas三种实现数据透视表的方法相关推荐

  1. 【随笔】Pandas三种实现数据透视表的方法

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

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

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

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

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

  4. Python基础语法-三种函数特殊形参定义以及使用方式

    函数的基础定义和使用 函数使用必须在函数声明之后. 注意形参的作用域只限于函数体内部 每个函数在python中都有返回值,如果不写默认返回None. def func1(str1):print(str ...

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

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

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

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

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

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

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

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

  9. 用python做数据透视表

    在Python中,可以使用pandas库来进行数据透视表的操作.下面是一个简单的示例代码: 假设有一个名为"sales_data.csv"的销售数据表格,其中包含了销售日期.销售员 ...

最新文章

  1. 自由是有代价的:聊聊这几年尝试的道路
  2. Ajax+Node.js前后端交互最佳入门实践(05)
  3. shell -- shift用法
  4. Cpp 对象模型探索 / 类普通成员函数的调用方式
  5. Java黑皮书课后题第5章:*5.42(金融应用:求销售额)如下重写编程练习题5.39:①使用for循环替代do-while循环②允许用户自己输入COMMISSION_SOUGHT而非将它固定为常量
  6. ConcurrentHashMap的源码分析-CounterCells初始化图解
  7. matlab 定义一个有自变量的方程_Eviews、Stata、Python、Matlab、R描述+相关+回归分析教程汇总...
  8. linux应用之--网络编程
  9. Web browser的发展演变
  10. csv导入mysql php实现_PHP实现csv文件导入mysql数据库的方法
  11. Android功耗优化(7)---如何分析wakelock(wakeup source)持锁问题
  12. oracle命令历史记录,oracle命令历史记录工具(rlwrap)
  13. 或许你不知道的10条SQL技巧
  14. Coolite中的ComboBox控件示例
  15. 第四章 选择结构程序设计习题总结
  16. 苹果手机更改照片大小kb_iPhone调整照片大小方法教程 无需第三方软件
  17. Users用户类默认值及各属性可能的值
  18. 存储过程(Stored Procedure)介绍
  19. 摊牌了!我要手写一个“Spring Boot”
  20. 【转载】Android蓝牙自动配对Demo

热门文章

  1. 彻底的卸载SQL Server2005
  2. elk集群配置配置文件中节点数配多少
  3. Spring Boot中使用AOP统一处理Web请求日志
  4. php+nginx上传文件配置
  5. codevs 1004 四子连棋 BFS、hash判重
  6. php html5 css样式,怎么在html页面写css样式表
  7. 实验新手必须知道的细胞计数技巧
  8. 国外在线学习网站+慕课平台
  9. Dreamweaver 2020安装教程
  10. java里调用Python