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扩展方法可以做到这一点 .就像之前 ...
随机推荐
- Hbase 错误记录分析(1) region超时问题
错误现象: 默认等待时间是60秒,超过这个时间就报超时问题了.因此需调整超时时间,默认为60秒,在配置文件 hbase-site.xml中: 调整成10分钟 <property> & ...
- object_id()函数
SQLServer数据库中,如果查询数据库中是否存在指定名称的索引或者外键约束等,经常会用到object_id('name','type')方法,做笔记如下: ? 语法:object_id('obje ...
- Flutter移动电商实战 --(43)详细页_补充首页跳转到详细页
首页轮播点击到详细页 修改我们轮播这里的代码:SwiperDiy这个类这里的代码 return InkWell( onTap: (){ Application.router.navigateTo(co ...
- Hive中导入Oracle数据错误:Listener refused the connection with the following error: ORA-12505
问题: 今天往Hive中导入Oracle数据的时候碰到了如下错误:Listener refused the connection with the following error: ORA-12505 ...
- 问题:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.5.1:compile (default-compile)
一:问题 今天编译maven 项目构建失败,提示内容如下: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler ...
- JDK目录详解
bin目录: 该目录用于存放一些可执行程序. 如javac.exe(java编译器).java.exe(java运行工具),jar.exe(打包工具)和* javadoc.exe(文档生成工具)等. ...
- ios排序NSArray(数字.字符串)
NSArray *originalArray = @[@"1",@"21",@"12",@"11",@"0&q ...
- 123456---com.twoapp.xiaoxiaofeixingyuan---小小飞行员
com.twoapp.xiaoxiaofeixingyuan---小小飞行员
- 关于Selenium remote模式分布式执行UI自动化测试必定面临的性能问题
1.大部分自动化测试人员都是在本地执行UI自动化测试,也就是代码和浏览器必须在同一台机器上,这样的的缺陷很多,无法多任务并发执行UI自动化测试用例,效率极低 2.正是如此,Selenium 的remo ...
- LeetCode_191. Number of 1 Bits
191. Number of 1 Bits Easy Write a function that takes an unsigned integer and return the number of ...