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】如何对某一列自动分组,统计求和相关推荐

  1. python分组求和_如何对某一列自动分组,统计求和

    对 v2 列分组,映射成分组 ID 列,然后做平均值统计便可. 请参考以下代码 ''' 按区间对某列做分组,然后统计各组的另一列的平均值. author: 李毅 ''' import numpy as ...

  2. python对excel某一列求和-如何对某一列自动分组,统计求和

    对 v2 列分组,映射成分组 ID 列,然后做平均值统计便可. 请参考以下代码 ''' 按区间对某列做分组,然后统计各组的另一列的平均值. author: 李毅 ''' import numpy as ...

  3. python年龄阶段划分_在Python Pandas中对年龄列进行分组/分类

    我有一个数据框说df. df有一列'Ages' >>> df['Age'] 我想分组这个年龄并创建一个类似这样的新列 If age >= 0 & age < 2 ...

  4. pandas分组计算平均值_python – 如何计算在Pandas中另一列上分组的平均值

    对于以下数据帧: StationID HoursAhead BiasTemp SS0279 0 10 SS0279 1 20 KEOPS 0 0 KEOPS 1 5 BB 0 5 BB 1 5 我想得 ...

  5. python对excel表统计视频教程_Python实现对excel文件列表值进行统计的方法

    本文实例讲述了Python实现对excel文件列表值进行统计的方法.分享给大家供大家参考.具体如下: #!/usr/bin/env python #coding=gbk #此PY用来统计一个execl ...

  6. 用python编excel统计表_Python实现对excel文件列表值进行统计的方法

    本文实例讲述了Python实现对excel文件列表值进行统计的方法.分享给大家供大家参考.具体如下: #!/usr/bin/env python #coding=gbk #此PY用来统计一个execl ...

  7. java steam 排序_java8 stream自定义分组求和并排序的实现

    本文主要介绍了java8 stream自定义分组求和并排序的实现,分享给大家,具体如下: public static void main(String[] args) { List list = ne ...

  8. sql按客户号累计求和并且排序

    你可以使用以下 SQL 语句来实现按客户号累计求和并排序: SELECT customer_id, SUM(amount) as total_amount FROM table_name GROUP ...

  9. python使用pandas计算dataframe中每个分组的分位数极差、分组数据的分位数极差(range)、使用groupby函数和agg函数计算分组的两个分位数

    python使用pandas计算dataframe中每个分组的分位数极差.分组数据的分位数极差(range).使用groupby函数和agg函数计算分组的两个分位数 目录

最新文章

  1. 范数介绍及C++/OpenCV/Eigen的三种实现
  2. (三十一)java多线程二
  3. STL之list学习(2)(list代码实现)(只剩最后一步,迭代器升级!!)
  4. php 判断接受邮件地址,PHP:电子邮件验证并接受来自特定域的电子邮件地址
  5. (线性基) bzoj 2460
  6. c++ array学习
  7. 生信宝典周报 | 我们有可能会被44种动物传染上新冠?
  8. (133)FPGA面试题-Xilinx FPGA Block RAM的三种写模式是什么?
  9. jQuery学习(十一)— 常用的删除方法
  10. 如何用绩效考核搞垮一个团队?
  11. 关闭tensorflow运行时的警告信息1
  12. 【渝粤教育】广东开放大学 hadoop数据管理 形成性考核
  13. ubuntu自带截图工具
  14. 源代码安装mysql配置步骤
  15. 【新东方的全套价值上亿英语资料】好不容易搞到的~
  16. 六轴机器人matlab工作空间分析
  17. CS224d-Day 2:TensorFlow 入门
  18. 七天学习Go语言-从0-0.05
  19. 【ESP 保姆级教程】疯狂传感器篇 —— 案例:Mega + ESP8266 + MQ2烟雾传感器 + MQ3酒精传感器 + MQ7一氧化碳传感器 + OLED +巴法云平台
  20. Android 九宫格物理键盘数字英文切换

热门文章

  1. android 仿微信聊天界面 以及语音录制功能,Android仿微信录制语音功能
  2. 引用防删——JAVA设计模式总结之六大设计原则
  3. Java双列集合之Map以及斗地主案列
  4. 数据变现四大模式释放电信大数据价值
  5. Excel图表—超级好用的Bullet图(KPI考核图)
  6. AD(九)原理图Value值核对、网路编号核对、元件名称核对
  7. IDEA 解决插件页面转圈问题
  8. 28岁的他如何从运营转岗产品经理
  9. guzzlehttp resulted in a `409 Conflict` response 访问网址 laravel thinkphp
  10. 2019年java程序员推荐笔记本_2020程序员笔记本推荐?