机器学习的过程中很多时候需要用到类似透视表的功能。Pandas提供了pivot和pivot_table实现透视表功能。相对比而言,pivot_table更加强大,在实现透视表的时候可以进行聚类等操作。

pivot_table帮助地址:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.pivot_table.html

官方给的几个例子:

>>> df = pd.DataFrame({"A": ["foo", "foo", "foo", "foo", "foo",
...                          "bar", "bar", "bar", "bar"],
...                    "B": ["one", "one", "one", "two", "two",
...                          "one", "one", "two", "two"],
...                    "C": ["small", "large", "large", "small",
...                          "small", "large", "small", "small",
...                          "large"],
...                    "D": [1, 2, 2, 3, 3, 4, 5, 6, 7],
...                    "E": [2, 4, 5, 5, 6, 6, 8, 9, 9]})
>>> dfA    B      C  D  E
0  foo  one  small  1  2
1  foo  one  large  2  4
2  foo  one  large  2  5
3  foo  two  small  3  5
4  foo  two  small  3  6
5  bar  one  large  4  6
6  bar  one  small  5  8
7  bar  two  small  6  9
8  bar  two  large  7  9

This first example aggregates values by taking the sum.

>>> table = pd.pivot_table(df, values='D', index=['A', 'B'],
...                     columns=['C'], aggfunc=np.sum)
>>> table
C        large  small
A   B
bar one    4.0    5.0two    7.0    6.0
foo one    4.0    1.0two    NaN    6.0

We can also fill missing values using the fill_value parameter.

>>> table = pd.pivot_table(df, values='D', index=['A', 'B'],
...                     columns=['C'], aggfunc=np.sum, fill_value=0)
>>> table
C        large  small
A   B
bar one      4      5two      7      6
foo one      4      1two      0      6

The next example aggregates by taking the mean across multiple columns.

>>> table = pd.pivot_table(df, values=['D', 'E'], index=['A', 'C'],
...                     aggfunc={'D': np.mean,
...                              'E': np.mean})
>>> tableD         E
A   C
bar large  5.500000  7.500000small  5.500000  8.500000
foo large  2.000000  4.500000small  2.333333  4.333333

We can also calculate multiple types of aggregations for any given value column.

>>> table = pd.pivot_table(df, values=['D', 'E'], index=['A', 'C'],
...                     aggfunc={'D': np.mean,
...                              'E': [min, max, np.mean]})
>>> tableD    Emean  max      mean  min
A   C
bar large  5.500000  9.0  7.500000  6.0small  5.500000  9.0  8.500000  8.0
foo large  2.000000  5.0  4.500000  4.0small  2.333333  6.0  4.333333  2.0

现在的一个问题是,处理后的dataframe的columns是多层的,例如最后一个例子的columns是这个样子的:

table.columns:

MultiIndex(levels=[['D', 'E'], ['max', 'mean', 'min']],labels=[[0, 1, 1, 1], [1, 0, 1, 2]])

为了后续的运算,我们经常希望它能简化,便于处理。也就是说吧columns拍平。大家可以这么处理:

table.columns =[s1 +'_'+ str(s2) for (s1,s2) in table.columns.tolist()]
table.reset_index(inplace=True)

效果如下:

table.columns

Index(['A', 'C', 'D_mean', 'E_max', 'E_mean', 'E_min'], dtype='object')

整个案例效果:

for oracle中pivot_Python数据处理小技巧:pivot_table后如何拍平columns相关推荐

  1. Oracle 查询的十个小技巧

    Oracle数据库查询十个小技巧 数据查询,是数据库操作中最主要的功能之一:有时候数据库查询性能的好坏,直接关系到数据库的运行效率,关系到数据库的选型.下面笔者不谈大道理,只是对其中对一些平时大家容易 ...

  2. oracle ebs form 计算 汇总公式,Oracle+EBS+Form开发小技巧汇总

    oracle form开发的技巧 content Oracle EBS Form开发小技巧汇总 ..................................... 2 Form中Block的重 ...

  3. php中的eval,php eval函数用法—-PHP中eval()函数小技巧 | 学步园

    eval 将值代入字符串之中. 语法: void eval(string code_str); 传回值: 无 函式种类: 数据处理 内容说明 本函式可将字符串之中的变量值代入,通常用在处理数据库的数据 ...

  4. 查询oracle 表达小,oracle中sql语句小练习(使用连接查询)

    假设A(m,n,p),B(m,n,p) --1.A表中有某一项m而B表中没有 使用左连接查询: select a.* from A a left join B b on a.m=b.m where b ...

  5. 学习中遇到的小技巧(陆续更新……)

    原来只是在网易博客里整理了一些学习中遇到的小技巧,现在开始在这里慢慢积累希望对大家有所帮助. 1.浏览器技巧: 如果浏览器的缓存已满,服务速度可能会减慢,您可能无法下载和查看附件.一下是在Intern ...

  6. 工作中遇到的小技巧 一(暂停更新)

    原来只是在网易博客里整理了一些学习中遇到的小技巧,现在开始在这里慢慢积累希望对大家有所帮助. 1.浏览器技巧: 如果浏览器的缓存已满,服务速度可能会减慢,您可能无法下载和查看附件.一下是在Intern ...

  7. MATLAB中的一些小技巧 - [MATLAB]

    http://liuxqsmile.blogbus.com/logs/17451138.html MATLAB中的一些小技巧 1. Ctrl+C 中断正在执行的操作 如果程序不小心进入死循环,或者计算 ...

  8. 信息收集后的数据处理小技巧

    信息收集后的数据处理小技巧 对于数据的批量处理 http://www.txttool.com/about/?id=125 对主域名进行提取 https://seo.juziseo.com/tools/ ...

  9. Linux使用及管理中的一些小技巧

    Linux使用及管理中的一些小技巧 如何制作应急启动盘 在安装Linux时系统会提示制作一张应急启动盘, 这时一定要选择制作, 以便在今后 系统由于故障不能正常启动时用来恢复系统. 但有时忘了在安装时 ...

最新文章

  1. json解析:[1]gson解析json
  2. R语言条件Logistic回归模型案例:研究饮酒与胃癌的关系
  3. 【BZOJ2117】 [2010国家集训队]Crash的旅游计划
  4. 计算机网络查看路由表命令,如何查看、添加、修改、删除路由器内部的路由表项?...
  5. 名词解释 JDK JRE JVM
  6. 2020年 Google 开发者大会可以预约了
  7. 面试遇Spark,别怂!
  8. Mybatis使用技巧
  9. 迅雷极速版禁止自动升级的方法
  10. ubuntu16.04下运行海康威视网络摄像头sdk(qtdemo)
  11. 博科光纤交换机配置及管理 CLI篇
  12. chrony时间同步配置
  13. 大数据可视化工具-大屏展示
  14. jwplayer 初始化设置项
  15. 《一次与IP MTU、TCP MSS导致SSL协商失败的案例》—那些年踩过的坑(二)
  16. python调研报告总结体会_调查报告的心得体会4篇
  17. 基于微信小程序的个人健康打卡系统设计与实现-计算机毕业设计源码+LW文档
  18. 【第八课】用于三维建模的拍摄技巧(用手机、相机拍摄)
  19. php时间函数不准确,php date函数时间不对如何解决
  20. mysql redo log 数据恢复_MySQL 怎么样恢复丢失的数据?redo log 写磁盘的过程

热门文章

  1. 用单链表实现栈及操作
  2. Oracle安装部署之rhel 5.8下静默安装oracle11gr2
  3. 微信公众平台消息接口开发(29)校验签名与消息响应合并
  4. linux deepin是基于linux mint修改
  5. http://www.fastweb.cc
  6. Delphi 2010 安装及调试
  7. 系统指纹 中间指纹 web指纹 识别简介
  8. centos6 安装 redis
  9. make mrproper 删除编译产生的相关文件
  10. VC6.0生成文件的种类和作用