groupby: 分组

melt: 宽表转长表

pivot_table: 长表转宽表,数据透视表

crosstab: 交叉表 / 列联表,主要用于分组频数统计

  1. import numpy as np
  2. import pandas as pd
  3.  
  4. df = pd.DataFrame({'key1':['a','a','b','b','a'],
  5. 'key2':['one','two','one','two','one'],
  6. 'data1':np.random.randn(5),
  7. 'data2':np.random.randn(5)
  8. })
  9. # key1 key2 data1 data2
  10. #0 a one 0.498857 0.074495
  11. #1 a two 2.872086 -1.303973
  12. #2 b one -0.721171 -1.315390
  13. #3 b two 0.985844 0.419780
  14. #4 a one -0.134534 -0.732861
  15.  
  16. # ####################
  17. '''groupby 用法'''
  18. group1 = df.groupby('key1')
  19. group2 = df.groupby(['key1','key2'])
  20. [x for x in group1]
  21. group1.size()
  22. group1.sum()
  23. group2.count()
  24. group1['data1','data2'].agg(['mean','sum']) #作用于所有列
  25. group2(['key1','key2']).apply(lambda x: pd.Series([x.shape[0], x['key1'].mean(), x['key2'].sum()],
  26. index=['counts', 'key1_mean', 'key2_sum'])) #作用于指定列
  27.  
  28. # ####################
  29. ''' melt 用法 -- 宽表转长表 '''
  30. pd.melt(df, id_vars=['key1', 'key2'], value_vars=['data1', 'data2'], var_name='var', value_name='value') #col_level
  31. # key1 key2 var value
  32. #0 a one data1 0.498857
  33. #1 a two data1 2.872086
  34. #2 b one data1 -0.721171
  35. #3 b two data1 0.985844
  36. #4 a one data1 -0.134534
  37. #5 a one data2 0.074495
  38. #6 a two data2 -1.303973
  39. #7 b one data2 -1.315390
  40. #8 b two data2 0.419780
  41. #9 a one data2 -0.732861
  42.  
  43. # ####################
  44. ''' crosstab 用法 -- 列联表(count) '''
  45. pd.crosstab(df.key1, df.key2, margins=True)
  46. #key2 one two All
  47. #key1
  48. #a 2 1 3
  49. #b 1 1 2
  50. #All 3 2 5
  51.  
  52. # ####################
  53. ''' pivot_table 用法 -- 长表转宽表 '''
  54. # pd.pivot_table(data, values=None, index=None, columns=None, aggfunc='mean', fill_value=None,
  55. #         dropna=True, margins=False, margins_name='ALL') #aggfunc={'d':np.sum, 'e':np.max}
  56. pd.pivot_table(df, index='key1', columns='key2')
  57. # data1 data2
  58. #key2 one two one two
  59. #key1
  60. #a 0.182162 2.872086 -0.329183 -1.303973
  61. #b -0.721171 0.985844 -1.315390 0.419780
  62.  
  63. df.pivot_table(['data1'], index='key1', columns='key2', fill_value=0) #['data1']
  64. # data1
  65. #key2 one two
  66. #key1
  67. #a 0.182162 2.872086
  68. #b -0.721171 0.985844

参考链接:

Pandas:透视表(pivotTab)和交叉表(crossTab)

pandas模块,Melt函数

Pandas分组统计函数:groupby、pivot_table及crosstab

pandas分组统计:groupby,melt,pivot_table,crosstab的用法的更多相关文章

  1. Pandas分组(GroupBy)

    任何分组(groupby)操作都涉及原始对象的以下操作之一.它们是 - 分割对象 应用一个函数 结合的结果 在许多情况下,我们将数据分成多个集合,并在每个子集上应用一些函数.在应用函数中,可以执行以下 ...

  2. pandas 分组统计

    # coding:utf-8 import pandas as pd import numpy as np # path = r'C:\Users\wuzaipei\Desktop\桂林三金项目签到情 ...

  3. Pandas分组统计函数:groupby、pivot_table及crosstab

    利用python的pandas库进行数据分组分析十分便捷,其中应用最多的方法包括:groupby.pivot_table及crosstab,以下分别进行介绍. 0.样例数据 df = DataFram ...

  4. Pandas分组运算(groupby)修炼

    Pandas分组运算(groupby)修炼 Pandas的groupby()功能很强大,用好了可以方便的解决很多问题,在数据处理以及日常工作中经常能施展拳脚. 今天,我们一起来领略下groupby() ...

  5. pandas聚合和分组运算——GroupBy技术(1)

    数据聚合与分组运算——GroupBy技术(1),有需要的朋友可以参考下. pandas提供了一个灵活高效的groupby功能,它使你能以一种自然的方式对数据集进行切片.切块.摘要等操作.根据一个或多个 ...

  6. pandas处理csv,分组统计

    需求: /tmp/demo/data下有10个csv文件,按col0和col1分组分别统计col2和col3总和并计算col2和col3的商 # encoding:utf-8 import panda ...

  7. DataTable、List使用groupby进行分组和分组统计;List、DataTable查询筛选方法

    DataTable分组统计: .用两层循环计算,前提条件是数据已经按分组的列排好序的. DataTable dt = new DataTable(); dt.Columns.AddRange(new ...

  8. C# Linq及Lamda表达式实战应用之 GroupBy 分组统计

    在项目中做统计图表的时候,需要对查询出来的列表数据进行分组统计,首先想到的是避免频繁去操作数据库可以使用 Linq eg: //例如对列表中的Cu元素进行按年GroupBy分组统计 //包含年份,平均 ...

  9. Python Pandas分组聚合

    Pycharm 鼠标移动到函数上,CTRL+Q可以快速查看文档,CTR+P可以看基本的参数. apply(),applymap()和map() apply()和applymap()是DataFrame ...

随机推荐

  1. AcWing 800. 数组元素的目标和

    网址 https://www.acwing.com/solution/AcWing/content/2064/ 题目描述给定两个升序排序的有序数组A和B,以及一个目标值x,请你求出满足A[i] + B ...

  2. acwing 25. 剪绳子

    习题地址 https://www.acwing.com/problem/content/description/24/ 题目描述 给你一根长度为 nn 绳子,请把绳子剪成 mm 段(mm.nn 都是整 ...

  3. 16-DRF工程搭建与序列化器

    1.DRF工程搭建 环境安装与配置 DRF是以Django扩展应用的方式提供的,所以我们可以直接利用Django环境,而无需创建(先创建Django环境). 1.安装DRF pip3 install ...

  4. ASP.NET中WebService的创建和部署以及通过反射动态调用WebService

    一.在ASP.NET中创建WebService 首先我们先创建一个ASP.NET Web 应用程序,此处我们以VS2017为例 点击新创建的项目,右键添加新建项,选择Web服务,输入名称后点击添加 这 ...

  5. SQLPrompt8.2 安装之后找不到激活入口

    如果你发现是这样的,找不到像其他人说的serial number这个选项,不要惊慌.. 首先你得先断网,然后再打开sql客户端,点击Manage License ,然后你会看到 activate 这个 ...

  6. Javase之多线程(1)

    多线程(1) 多线程的概述 了解多线程之前需要先了解线程,而线程依赖于进程而存在,所以先了解进程. 什么是进程 进程就是正在运行的程序.是系统进行资源分配和调用的独立单位.每一个进程都有它自己的内存空 ...

  7. 高强度学习训练第九天总结:5道剑指offer的题目

    实在不想看JVM了.刷几道剑指Offer的题,今天就水一水吧,脑子迷糊. 1.二维数组中的查找 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增 ...

  8. HTML5新标签与特性---新表单+新属性----综合案例1

    HTML5新标签与特性 兼容性问题 (ie9 以上的版本) 文档类型设定 document HTML: sublime 输入 html:4s XHTML: sublime 输入 html:xt HTM ...

  9. Tasteless challenges medium WP

    http://chall.tasteless.eu/ 国外的一个靶场,都是单点知识,medium大部分还是比较简单 medium Level 1- Infiltration http://chall. ...

  10. 为Dynamics CRM注释的图片附件做个预览功能

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复163或者20151017可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! Dynamics CRM中注释可 ...