pandas之聚合运算
通过聚合运算可以得到我们比较感兴趣的数据以方便处理
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之聚合运算的更多相关文章
- Python Pandas分组聚合
Pycharm 鼠标移动到函数上,CTRL+Q可以快速查看文档,CTR+P可以看基本的参数. apply(),applymap()和map() apply()和applymap()是DataFrame ...
- Pandas 分组聚合
# 导入相关库 import numpy as np import pandas as pd 创建数据 index = pd.Index(data=["Tom", "Bo ...
- MongoDB聚合运算之group和aggregate聚集框架简单聚合(10)
聚合运算之group 语法: db.collection.group( { key:{key1:1,key2:1}, cond:{}, reduce: function(curr,result) { ...
- Swift - 11 - nil聚合运算
//: Playground - noun: a place where people can play import UIKit var str = "Hello, playground& ...
- Numpy入门 - 数组聚合运算
本节主要讲解numpy的几个常用的聚合运算,包括求和sum.求平均mean和求方差var. 一.求和sum import numpy as np arr = np.array([[1, 2, 3], ...
- Dynamics 365 CE中使用FetchXML进行聚合运算
微软动态CRM专家罗勇 ,回复328或者20190429可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! Dynamics 365 Customer Engagement ...
- 3:django models Making queries 高级进阶--聚合运算
在前一遍文章django models Making queries里面我们提到了django常用的一些检索数据库的内容, 下面我们来看一下更为高级的检索聚合运算 这是我们要用到的模型 class A ...
- C#聚合运算方法
Aggregate 对集合值执行自定义聚合运算 Average 计算集合平均值 Count 对集合的元素惊醒计数,还可以仅对满足某一谓词函数的元素进行计数 LongCount 对大型集合中的元素进行计 ...
- C# 中奇妙的函数–6. 五个序列聚合运算(Sum, Average, Min, Max,Aggregate)
今天,我们将着眼于五个用于序列的聚合运算.很多时候当我们在对序列进行操作时,我们想要做基于这些序列执行某种汇总然后,计算结果. Enumerable 静态类的LINQ扩展方法可以做到这一点 .就像之前 ...
随机推荐
- linux 安装nginx(转)
转自https://www.cnblogs.com/xiaochongc/p/11527492.html 步骤: 1. 安装所需环境 a)安装gcc:安装 nginx 需要先将官网下载的源码进行编译, ...
- Apache Flink - Window
Window: 在Streaming中,数据是无限且连续的,我们不可能等所有数据都到才进行处理,我们可以来一个就处理一下,但是有时我们需要做一些聚合类的处理,例如:在过去的1分钟内有多少用户点击了我们 ...
- Leetcode第三题《Longest Substring Without Repeating Characters》
题目: Given a string, find the length of the longest substring without repeating characters. For examp ...
- OpenJudge计算概论-数组逆序重放
/*=============================================================== 数组逆序重放 总时间限制: 1000ms 内存限制: 65536kB ...
- Flutter中的事件广播event_bus的基本使用
官方包参考地址: https://pub.dev/packages/event_bus https://github.com/marcojakob/dart-event-bus 1.pubspec.y ...
- lombok编译时注解@Slf4j的使用及相关依赖包
slf4j是一个日志门面模式的框架,只对调用者开放少量接口用于记录日志 主要接口方法有 debug warn info error trace 在idea中可以引入lombok框架,使用@Slf4j注 ...
- iOS-宏定义
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAnoAAAPCCAYAAADvRHWgAAAAAXNSR0IArs4c6QAAAZ1pVFh0WE1MOm ...
- iOS-UIToolbar与UISearchBar
组件_ UIToolbar /** 1. 顶部toolbar 2. TextField可以以UIBarButtonItem的自定义视图的方式加入toolbar 3. 三个按钮 4. 将UIBarBu ...
- EasyNetQ使用(九)【非泛型的发布&订阅扩展方法,发生错误的情况 】
自从EasyNetQ第一个版本开始,它就可以发布/订阅特定类型的消息. bus.Subscribe<MyMessage>("subscriptionId", x =&g ...
- 基于OpenCV的同态滤波
在4.0.1节中,我们已经介绍了一个简单的图像形成模型,即照射-反射模型.这个模型可以开发一种频率处理程序,该程序可以同时压缩灰度范围和增强对比度来改善一幅图像的表现.图像形成的照射-反射模型的表达式 ...