在数据分析中有时候需要自己定义分组规则 这里简单介绍一下用一个字典实现分组

  1. people=DataFrame(
    np.random.randn(5,5),
    columns=['a','b','c','d','e'],
    index=['Joe','Steve','Wes','Jim','Travis']
    )
  1. mapping={'a':'red','b':'red','c':'blue','d':'blue','e':'red','f':'orange'}
  1. by_column=people.groupby(mapping,axis=1)#列方向上进行分组
    这里不知道python底层是怎么运行的,最好把运行的结果打印出来看一下
    for i in by_column:
    print (i)
  2.  
  3. 遍历的结果:
    ('blue',   c         d
    Joe     0.218189 -0.228336
    Steve   1.677264  0.630303
    Wes     0.315320 -0.250787
    Jim     3.343462  0.483021
    Travis  0.854553 -0.760884)
    ('red',     a         b         e
    Joe     0.218164  0.823654 -1.425720
    Steve   1.191175 -0.327735  1.926470
    Wes    -1.418855  0.497466  0.110105
    Jim    -1.157157  0.817122  0.749023
    Travis -0.440583 -0.907922  1.374294)
  4.  
  5. 从结果可以看到,把a b e分给了red, c d分给了blue
  1.  a   b   e--->red
  2.  
  3. c  d --->blue
  1. 接下来再来执行 people.groupby(mapping,axis=1).mean()
                blue       red
    Joe     0.241336 -0.182099
    Steve   0.459773 -0.448336
    Wes     0.205278  0.605721
    Jim    -0.094838  1.254174
    Travis  0.354140  0.142075
    从结果看到在列方向group分组 执行聚合函数mean()后列索引就只有 bluered了。
    整个过程可以这么理解 在列方向上进行分组 a b e为一组为redc d 为一组为blue。最后以red blue作为新DataFraem的列索引
  2.  
  3. 同样Series也有同样的功能,它可以被看作一个固定大小的映射。对于上面的那个例子,如果用series作为分组键,则pandas会检查Series以确保其索引分组轴是对齐的:
    ser=Series(mapping)
    a       red
    b       red
    c      blue
    d      blue
    e       red
    f    orange
  1. by_ser_group=people.groupby(ser,axis=1).mean()
                blue       red
    Joe     0.241336 -0.182099
    Steve   0.459773 -0.448336
    Wes     0.205278  0.605721
    Jim    -0.094838  1.254174
    Travis  0.354140  0.142075
    从结果可以看到,通过字典进行分组和通过Series进行分组结果是相同的。也就是说他们执行的原理是相同的,都是把索引(对series来说)或字典的keyDataframe的索引进行匹配,
    字典中valueseriesvalues值相同的会被分到一个组中,最后根据每组进行在聚合。
    groupby的用法很多,之后有时间我会慢慢更新博客。如果有那些地方有错欢迎大家指出,一块学习,共同进步。

Python数据分析中Groupby用法之通过字典或Series进行分组的更多相关文章

  1. Python 数据分析中常用的可视化工具

    Python 数据分析中常用的可视化工具 1 Matplotlib 用于创建出版质量图表的绘图工具库,目的是为 Python 构建一个 Matlab 式的绘图接口. 1.1 安装 Anaconada ...

  2. python数据分析中常用的库

    Python是数据处理常用工具,可以处理数量级从几K至几T不等的数据,具有较高的开发效率和可维护性,还具有较强的通用性和跨平台性,这里就为大家分享几个不错的数据分析工具,需要的朋友可以参考下 Pyth ...

  3. Python面向对象中super用法与MRO机制

    1. 引言 最近在研究django rest_framework的源码,老是遇到super,搞得一团蒙,多番查看各路大神博客,总算明白了一点,今天做一点总结. 2. 为什么要用super 1)让代码维 ...

  4. 小白学 Python 数据分析(11):Pandas (十)数据分组

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

  5. Python数据分析中 DataFrame axis=0(0轴)与axis=1(1轴)的理解

    python中的axis究竟是如何定义的呢?他们究竟代表是DataFrame的行还是列? 直接上代码people=DataFrame(np.random.randn(5,5), columns=['a ...

  6. Python数据分析中 DataFrame axis=0与axis=1的理解

    python中的axis究竟是如何定义的呢?他们究竟代表是DataFrame的行还是列? 直接上代码people=DataFrame(np.random.randn(5,5), columns=['a ...

  7. Python 数据分析中金融数据的来源库和简单操作

    目录 金融数据 pandas-datareader TuShare 金融学图表 案例 金融数据 数据分析离不开数据的获取,这里介绍几种常用的获取金融方面数据的方法. pandas-datareader ...

  8. Python数据分析中对重复值、缺失值、空格的处理

    对重复值的处理 把数据结构中,行相同的数据只保留一行 函数语法: drop_duplicates() from pandas import read_csv df = read_csv(文件位置) n ...

  9. python class 中__next__用法

    class A(): def __init__(self,b): self.b=b # def __iter__(self): # 这个函数可以用,表示迭代标志,但也可以省略 # return sel ...

随机推荐

  1. 第二篇.1、python基础之数据类型与变量

    一.变量 1 什么是变量之声明变量 #变量名=变量值 age=18 gender1='male' gender2='female' 2 为什么要有变量 变量作用:“变”=>变化,“量”=> ...

  2. 一,Devops核心要点及kubernetes的架构概述

    目录 1,devops的简述及要点 2,kubernetes的简单介绍与组成 特性 集群构成 pod的基本概念 kubernetes网络 1,devops的简述及要点 DevOps,分层架构 ---& ...

  3. Hive 函数(六)

    Hive函数 ​ Hive中提供了非常丰富的运算符和内置函数支撑,具体操作如下: 1.内置运算符 1.1关系运算符 运算符 类型 说明 A = B 所有原始类型 如果A与B相等,返回TRUE,否则返回 ...

  4. A RECURRENT NEURAL NETWORK WITHOUT CHAOS

    本篇文章的介绍了一个非常简单的门限RNN(gated recurrent neural network), 这里有两扇门horizontal/forget gate和vertical/input ga ...

  5. HihoCoder1087Hamiltonian Cycle(DP状态压缩)

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Given a directed graph containing n vertice (numbered from 1 ...

  6. qt5--对话框

    颜色对话框——QColorDialog: 需要   #include <QColorDialog> QColor color=QColorDialog::getColor(QColor(, ...

  7. 微信小程序没找到构建npm或者没找到node_modules目录以及如何在小程序中引入vant weapp组件

    微信小程序没找到构建npm或者没找到node_modules目录解决方法如下: 按照微信小程序提供的文档npm install是不行的,直接提示没找到可构建的npm包. 1.直接安装:npm init ...

  8. 接口headers

    接口headers from-data header: { 'Content-Type':'application/json'},     header: { 'Content-Type':'appl ...

  9. Java基础-自增自减运算符练习题

    我们用一个简单的例子分析下边的运行结果: package demo; public class ZiZeng { int i = 0; test(i); // i = i++; i = ++i; Sy ...

  10. 【转】HDU-6035-Colorful Tree

    转自http://blog.csdn.net/Bahuia/article/details/76141574 题意: 题目链接:http://acm.hdu.edu.cn/showproblem.ph ...