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扩展方法可以做到这一点 .就像之前 ...
随机推荐
- 使用 Nexus3 Repository Manager 搭建 npm 私服
公司里一般都有自己的私服,用于管理封装的工具插件等,Nexus2主要是用于maven/gralde仓库的统一管理,Nexus3则添加了npm插件,可以对npm提供支持,其实用于npm仓库管理的还有一个 ...
- ICEM-三棱锥的一种画法(2D转3D)
原视频下载地址:https://yunpan.cn/cqwC3eZHn5AvJ 访问密码 9456
- ICEM-轴(周期复制网格)
原视频下载地址:https://yunpan.cn/cqMnfpqQQdZZI 访问密码 802b
- bash常用的快捷键
bash常用快捷键 快捷键 作用 CTRL+A 把光标移动到命令行开头.如果我们输入的命令过长,则在想要把光标移动到命令行开头时使用 CTRL+E 光标移动到命令行行尾 CTRL+C 强制中止当前命令 ...
- PyTorch Tutorials 4 训练一个分类器
%matplotlib inline 训练一个分类器 上一讲中已经看到如何去定义一个神经网络,计算损失值和更新网络的权重. 你现在可能在想下一步. 关于数据? 一般情况下处理图像.文本.音频和视频数据 ...
- web框架性能点
awesome-go-web-frameworks/README.md at master · speedwheel/awesome-go-web-frameworkshttps://github.c ...
- 在主机上如何构建openwrt的编译环境?
答: 请参考官方文档
- lua 求table长度和判断空
local table_a = {} 判断一:(错误方法) if table_a == {} then --你会发现你怎么也进不来 条件判断始终返回false,为什么会这样呢? ...
- 怎样加入社区项目Karbor的Review?
Review是社区衡量一个贡献者的重要标准. Review步骤: 1.登录Karbor Review地址: https://review.openstack.org/#/q/Karbor 这里可以看到 ...
- PAT 甲级 1038 Recover the Smallest Number (30 分)(思维题,贪心)
1038 Recover the Smallest Number (30 分) Given a collection of number segments, you are supposed to ...