通过聚合运算可以得到我们比较感兴趣的数据以方便处理

 import pandas as pd
import numpy as np # 先创建一组数据表DataFrame
df = pd.DataFrame({'key1':['a','a','b','b','a'],
'key2':['one','two','one','two','one'],
'data1':np.random.randint(1,10,5),
'data2':np.random.randint(1,10,5)})
# 这组数据的key1列与key2列有相同的有各自相同的索引行 df.groupby('key1').describe()
# 通过这一行我们可以看到关于key1列分组后的一些计算结果,
# count mean std min 25% 50% 75% max grouped = df.groupby('key1')
# 它返回的是DataFrom对象 def peak_range(s):
print(type(s))
return s.max() - s.min() # 接下来就是看看聚合的应用了
grouped.agg(['std','mean','sum',('range',peak_range)])
# 这个函数聚合了df.groupby('key1').describe()所展现的一些计算结果
# ('range',peak_range)中的range是peak_range函数计算结果的列名 # 通过创建字典进行聚合自己想要的部分数据
d = {'data1':'mean',
'data2':'sum'}
grouped.agg(d) d = {'data1':['mean',('range',peak_range)],
'data2':'sum'}
grouped.agg(d)
grouped.agg(d).reset_index() # 不把key1作为索引来处理
df.groupby('key1',as_index=False).agg(d) # 与上一行效果一样
 import pandas as pd
import numpy as np # 先创建一个DataFrame
df = pd.DataFrame({'key1':['a','a','b','b','a'],
'key2':['one','two','one','two','one'],
'data1':np.random.randint(1,10,5),
'data2':np.random.randint(1,10,5)})
# 合并方式一
k1_mean = df.groupby('key1').mean().add_prefix('mean_')
# 将key1分组取均值,并将data1与data2之前加上mean_
pd.merge(df, k1_mean, left_on='key1',right_index=True) # 通过merge合并 k1_mean = df.groupby('key1').transform(np.mean).add_prefix('mean_')
# 它通过分组求平均,保持原来的索引位置与行数
# 这样可以通过下面的代码实现合并
df[k1_mean.columns] = k1_mean
 import pandas as pd
import numpy as np df = pd.DataFrame(np.random.randint(1,10,(5,5)),
columns=['a','b','c','d','e'],
index=['Alice','Bob','Candy','Dark','Emily']) def demean(s):
return s - s.mean() key = ['one','one','two','one','two']
demeaned = df.groupby(key).transform(demean) demeaned.groupby(key).mean() # 输出的值都是0或者接近0
 import pandas as pd
import numpy as np df = pd.DataFrame({'key1':['a','a','b','b','a','a','a','b','b','a'],
'key2':['one','two','one','two','one','one','two','one','two','one'],
'data1':np.random.randint(1,10,10),
'data2':np.random.randint(1,10,10)}) def top(g, n=2, column='data1'):
return g.sort_values(by=column,ascending=False)[:n] df.groupby('key1').apply(top, n=3, column='data2')
# 分组后只对data2列的值排序取出前三行
 import pandas as pd
import numpy as np # 下面的例子是填充NaN值的方法 states = ['Ohio','New York','Vermont','Florida',
'Oregon','Nevada','California','Idaho']
group_key = ['East'] * 4 + ['West'] * 4
data = pd.Series(np.random.randn(8), index=states)
data[['Vermont','Nevada','Idaho']] = np.nan
# 输出
Ohio 0.133410
New York 2.147483
Vermont NaN
Florida -0.608754
Oregon 0.978375
Nevada NaN
California -1.297183
Idaho NaN
dtype: float64 data.groupby(group_key).mean()
# 输出
East 0.557380
West -0.159404
dtype: float64 data.groupby(group_key).apply(lambda g: g.fillna(g.mean()))
# 输出
Ohio 0.133410
New York 2.147483
Vermont 0.557380
Florida -0.608754
Oregon 0.978375
Nevada -0.159404
California -1.297183
Idaho -0.159404
dtype: float64

pandas之聚合运算的更多相关文章

  1. Python Pandas分组聚合

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

  2. Pandas 分组聚合

    # 导入相关库 import numpy as np import pandas as pd 创建数据 index = pd.Index(data=["Tom", "Bo ...

  3. MongoDB聚合运算之group和aggregate聚集框架简单聚合(10)

    聚合运算之group 语法: db.collection.group( { key:{key1:1,key2:1}, cond:{}, reduce: function(curr,result) { ...

  4. Swift - 11 - nil聚合运算

    //: Playground - noun: a place where people can play import UIKit var str = "Hello, playground& ...

  5. Numpy入门 - 数组聚合运算

    本节主要讲解numpy的几个常用的聚合运算,包括求和sum.求平均mean和求方差var. 一.求和sum import numpy as np arr = np.array([[1, 2, 3], ...

  6. Dynamics 365 CE中使用FetchXML进行聚合运算

    微软动态CRM专家罗勇 ,回复328或者20190429可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! Dynamics 365 Customer Engagement ...

  7. 3:django models Making queries 高级进阶--聚合运算

    在前一遍文章django models Making queries里面我们提到了django常用的一些检索数据库的内容, 下面我们来看一下更为高级的检索聚合运算 这是我们要用到的模型 class A ...

  8. C#聚合运算方法

    Aggregate 对集合值执行自定义聚合运算 Average 计算集合平均值 Count 对集合的元素惊醒计数,还可以仅对满足某一谓词函数的元素进行计数 LongCount 对大型集合中的元素进行计 ...

  9. C# 中奇妙的函数–6. 五个序列聚合运算(Sum, Average, Min, Max,Aggregate)

    今天,我们将着眼于五个用于序列的聚合运算.很多时候当我们在对序列进行操作时,我们想要做基于这些序列执行某种汇总然后,计算结果. Enumerable 静态类的LINQ扩展方法可以做到这一点 .就像之前 ...

随机推荐

  1. AHOI2012树屋阶梯

    这玩意不是卡特兰的经典模型吗…… 我们设方案数为f(i),则f(0)=1,f(1)=1,f(2)=2,f(3)=5,(其实到这里你再手模一个就出来了)我们把左上角的矩形删掉,则会变成下方和右方两个更小 ...

  2. 记一次ArrayList产生的线上OOM问题

    前言:本以为(OutOfMemoryError)OOM问题会离我们很远,但在一次生产上线灰度的过程中就出现了Java.Lang.OutOfMemoryError:Java heap space异常,通 ...

  3. 标准6轴机器人正反解(1)-坐标系和MDH参数表

    刚来新公司不久,部门给安排了新人作业,我被分到的任务是求标准6轴机器人的正反解,以及利用就近原则选择最优解.从今天开始,逐步将这部分内容总结出来: 本文以及后续文章均使用改进DH法: 连杆坐标系: 坐 ...

  4. Cesium入门-1-展示一个地球

    Cesium 官网教程地址 https://cesium.com/docs/tutorials/getting-started//tutorials/getting-started/ 第一个程序代码: ...

  5. bagging,random forest,boosting(adaboost、GBDT),XGBoost小结

    Bagging 从原始样本集中抽取训练集.每轮从原始样本集中使用Bootstraping(有放回)的方法抽取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中).共进行 ...

  6. 利用pathMeasure实现路径动画

    package com.loaderman.customviewdemo; import android.animation.ValueAnimator; import android.content ...

  7. 迷你版AOP框架

    http://www.cnblogs.com/artech/archive/2008/11/27/1342309.html

  8. 123457123456#0#-----com.twoapp.YiZhiFanPai08--前拼后广--儿童益智记忆翻牌jiemei

    com.twoapp.YiZhiFanPai08--前拼后广--儿童益智记忆翻牌jiemei

  9. MySQL数据库表的设计和优化(上)

    一.单表设计与优化: (1)设计规范化表,消除数据冗余(以使用正确字段类型最明显):数据库范式是确保数据库结构合理,满足各种查询需要.避免数据库操作异常的数据库设计方式.满足范式要求的表,称为规范化表 ...

  10. rdd的元素打印

    在集群上运行spark程序时,rdd的操作都在worker机上,因此输出rdd的元素将在worker机的标准输出上进行,驱动节点上不会运行,故直接才程序中写如下代码 rdd.foreach(print ...