分组求和并排序python_【Python】如何对某一列自动分组,统计求和
V1 V2
0.5 2
0.8 13
0.7 5
0.9 25
1.2 4
…
请问如何按照区间对V2分组(统计最大值到最小值,分成n个区间),统计每个区间中所有V1值的平均数
回答
binning的部分可以用 case_when
library(tidyverse)
data %>%
mutate(V2 = case_when(V2 %>% between(0,1) ~ "0-1",
V2 %>% between(1,2) ~ "0-2",
TRUE ~ ">=3") %>%
group_by(V2) %>%
summarize(mean_value = mean(V1))
是不是 R 的代码比上面的 更用户友好点。
对 v2 列分组,映射成分组 ID 列,然后做平均值统计便可。
请参考以下代码
'''
按区间对某列做分组,然后统计各组的另一列的平均值。
author: 李毅
'''
import numpy as np
import pandas as pd
df = pd.DataFrame([
[0.1, 1],
[0.2, 2],
[0.3, 3],
[0.4, 4],
[0.5, 5],
[0.6, 6],
], columns=['v1', 'v2'])
# 对列 v2 分组。
# 除了 np.histogram ,还可以用等距法等分区间,这取决于你的业务需求。
ranges = np.histogram(df.v2.values, 3)[1]
def tag_v2(value, ranges):
''' 用分组 ID 对 v2 值做标签。 '''
for i in range(len(ranges) - 1):
if value >= ranges[i] and value <= ranges[i+1]:
return i
return -1
# 添加 v2 标签列。
df['v2_tag'] = df.v2.apply(lambda i: tag_v2(i, ranges))
print df
输出结果
v1 v2 v2_tag
0 0.1 1 0
1 0.2 2 0
2 0.3 3 1
3 0.4 4 1
4 0.5 5 2
5 0.6 6 2
统计平均值
print df.groupby('v2_tag')['v1'].mean()
输出结果
v2_tag
0 0.15
1 0.35
2 0.55
Name: v1, dtype: float64
使用pandas.cut和groupby
import pandas as pd
from io import StringIO
s = """
V1,V2
0.5,2
0.8,13
0.7,5
0.9,25
1.2,4"""
df = pd.read_csv(StringIO(s))
# 假设分成10组
step = (df.V2.max - df.V2.min)/10
bins = [df.V2.min() + i * step for i in range(11)]
result = df.groupby(pd.cut(df.V2, bins)).V1.mean()
输出:
V2
(2.0, 4.3] 1.2
(4.3, 6.6] 0.7
(6.6, 8.9] NaN
(8.9, 11.2] NaN
(11.2, 13.5] 0.8
(13.5, 15.8] NaN
(15.8, 18.1] NaN
(18.1, 20.4] NaN
(20.4, 22.7] NaN
(22.7, 25.0] 0.9
Name: V1, dtype: float64
分组求和并排序python_【Python】如何对某一列自动分组,统计求和相关推荐
- python分组求和_如何对某一列自动分组,统计求和
对 v2 列分组,映射成分组 ID 列,然后做平均值统计便可. 请参考以下代码 ''' 按区间对某列做分组,然后统计各组的另一列的平均值. author: 李毅 ''' import numpy as ...
- python对excel某一列求和-如何对某一列自动分组,统计求和
对 v2 列分组,映射成分组 ID 列,然后做平均值统计便可. 请参考以下代码 ''' 按区间对某列做分组,然后统计各组的另一列的平均值. author: 李毅 ''' import numpy as ...
- python年龄阶段划分_在Python Pandas中对年龄列进行分组/分类
我有一个数据框说df. df有一列'Ages' >>> df['Age'] 我想分组这个年龄并创建一个类似这样的新列 If age >= 0 & age < 2 ...
- pandas分组计算平均值_python – 如何计算在Pandas中另一列上分组的平均值
对于以下数据帧: StationID HoursAhead BiasTemp SS0279 0 10 SS0279 1 20 KEOPS 0 0 KEOPS 1 5 BB 0 5 BB 1 5 我想得 ...
- python对excel表统计视频教程_Python实现对excel文件列表值进行统计的方法
本文实例讲述了Python实现对excel文件列表值进行统计的方法.分享给大家供大家参考.具体如下: #!/usr/bin/env python #coding=gbk #此PY用来统计一个execl ...
- 用python编excel统计表_Python实现对excel文件列表值进行统计的方法
本文实例讲述了Python实现对excel文件列表值进行统计的方法.分享给大家供大家参考.具体如下: #!/usr/bin/env python #coding=gbk #此PY用来统计一个execl ...
- java steam 排序_java8 stream自定义分组求和并排序的实现
本文主要介绍了java8 stream自定义分组求和并排序的实现,分享给大家,具体如下: public static void main(String[] args) { List list = ne ...
- sql按客户号累计求和并且排序
你可以使用以下 SQL 语句来实现按客户号累计求和并排序: SELECT customer_id, SUM(amount) as total_amount FROM table_name GROUP ...
- python使用pandas计算dataframe中每个分组的分位数极差、分组数据的分位数极差(range)、使用groupby函数和agg函数计算分组的两个分位数
python使用pandas计算dataframe中每个分组的分位数极差.分组数据的分位数极差(range).使用groupby函数和agg函数计算分组的两个分位数 目录
最新文章
- 范数介绍及C++/OpenCV/Eigen的三种实现
- (三十一)java多线程二
- STL之list学习(2)(list代码实现)(只剩最后一步,迭代器升级!!)
- php 判断接受邮件地址,PHP:电子邮件验证并接受来自特定域的电子邮件地址
- (线性基) bzoj 2460
- c++ array学习
- 生信宝典周报 | 我们有可能会被44种动物传染上新冠?
- (133)FPGA面试题-Xilinx FPGA Block RAM的三种写模式是什么?
- jQuery学习(十一)— 常用的删除方法
- 如何用绩效考核搞垮一个团队?
- 关闭tensorflow运行时的警告信息1
- 【渝粤教育】广东开放大学 hadoop数据管理 形成性考核
- ubuntu自带截图工具
- 源代码安装mysql配置步骤
- 【新东方的全套价值上亿英语资料】好不容易搞到的~
- 六轴机器人matlab工作空间分析
- CS224d-Day 2:TensorFlow 入门
- 七天学习Go语言-从0-0.05
- 【ESP 保姆级教程】疯狂传感器篇 —— 案例:Mega + ESP8266 + MQ2烟雾传感器 + MQ3酒精传感器 + MQ7一氧化碳传感器 + OLED +巴法云平台
- Android 九宫格物理键盘数字英文切换
热门文章
- android 仿微信聊天界面 以及语音录制功能,Android仿微信录制语音功能
- 引用防删——JAVA设计模式总结之六大设计原则
- Java双列集合之Map以及斗地主案列
- 数据变现四大模式释放电信大数据价值
- Excel图表—超级好用的Bullet图(KPI考核图)
- AD(九)原理图Value值核对、网路编号核对、元件名称核对
- IDEA 解决插件页面转圈问题
- 28岁的他如何从运营转岗产品经理
- guzzlehttp resulted in a `409 Conflict` response 访问网址 laravel thinkphp
- 2019年java程序员推荐笔记本_2020程序员笔记本推荐?