python分组求和法_python – 如何将groupby值的总和除以另一个值的count

我想通过’label’和’month’分组来计算每个月和每个标签的销售数量.

我正在尝试’groupby和apply’方法来实现这一目标,但不确定如何计算每个标签的月份.比方说,对于标签值AFFLELOU(DOS),我有7个月的两个值.所以,我应该将销售数量相加并除以2.

在第9个月和第10个月,我只有一个值,所以计数为1,它将除去销售数量.

我编写了下面的代码,但它不会将count作为函数并且返回计数未定义错误.

t1.groupby(['label', 'month']).apply(lambda x: x['Quantity sold']

.sum()/count('month'))

有人能告诉我如何获得每个标签每月的计数值吗?

提前致谢.

解决方法:

你可以使用agg(‘mean’)代替求和,计数和除法:

t1.groupby(['label', 'month'])['Quantity sold'].agg('mean')

或者,如果您确实希望保留金额和计数,请使用:

t1.groupby(['label', 'month'])['Quantity sold'].agg(['sum', 'count', 'mean'])

例如,

import numpy as np

import pandas as pd

t1 = pd.DataFrame(np.random.randint(4, size=(20,3)), columns=['label', 'Quantity sold', 'month'])

t1.groupby(['label', 'month'])['Quantity sold'].agg(['sum', 'count', 'mean'])

产生一个像DataFrame的数据框架

sum count mean

label month

0 1 2 1 2.00

2 0 1 0.00

3 2 2 1.00

1 1 1 2 0.50

2 3 1 3.00

3 1 1 1.00

2 0 0 1 0.00

1 0 3 0.00

3 5 4 1.25

3 0 1 1 1.00

1 0 1 0.00

2 0 1 0.00

3 3 1 3.00

使用groupby / agg及其内置聚合器sum,count和mean在这里显然更方便,但是如果你确实需要使用groupby / apply和自定义函数,你可以使用:

t1.groupby(['label', 'month']).apply(lambda x: x['Quantity sold'].sum()/len(x))

请注意,虽然使用groupby / apply调用自定义函数可以提供更大的灵活性,但这是有代价的,因为为每个组调用一次自定义Python函数通常比调用groupby / agg中可用的内置Cythonized聚合器要慢.

如果您销售的数量中缺少(NaN)值,则可能有助于知道group / agg同时具有’count’和’size’聚合器:

>’count’返回非NaN值的数量

>’size’返回组的长度(包括NaN值)

计数总是小于或等于大小.平均值是(非NaN值的)之和除以计数.要查看计数和大小之间的差异,您可以尝试使用以下代码:

np.random.seed(2018)

t1 = pd.DataFrame(np.random.randint(4, size=(50,3)), columns=['label', 'Quantity sold', 'month'])

t1.loc[np.random.choice([True, False], len(t1)), 'Quantity sold'] = np.nan

t1.groupby(['label', 'month'])['Quantity sold'].agg(['sum', 'count', 'size', 'mean'])

产量

sum count size mean

label month

0 1 0.0 0 3 NaN

2 6.0 2 2 3.000000

3 0.0 0 1 NaN

1 0 3.0 2 5 1.500000

1 0.0 0 1 NaN

2 5.0 3 5 1.666667

3 0.0 2 3 0.000000

2 0 7.0 3 5 2.333333

1 4.0 4 8 1.000000

2 5.0 2 3 2.500000

3 5.0 2 3 2.500000

3 0 1.0 2 5 0.500000

1 3.0 1 1 3.000000

2 2.0 1 2 2.000000

3 2.0 1 3 2.000000

标签:python,count,pandas,pandas-groupby

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/433376.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Microsoft Visual Studio 打开代码出现乱码解决方案

在用VS编写代码时,文本的字符集可能和编译器的字符集不同,在这种情况下代码会显示出乱码。 解决办法: 在VS的工具->选项里面找到"文本编辑器",勾选“自动检测不带签名的UTF-8编码(D)”选项。 重新打开VS编译器&#…

java正则表达式及api_Java API 之 正则表达式

一、基本概念在项目中我们经常性做的一件事是“匹配”字符串比如:1、我们要验证用户输入的手机号是否合法?2、验证设置的密码是否符合规则?3、或者替换指定字符串中的一些内容。这么一看,似乎正则表达式就是在查找、处理字符串。二…

PB错误处理

//itemerror事件里出错处理 string ls_colname,ls_datatype Boolean ab_msg true ls_colname dwo.name ls_datatype dwo.coltype if trim(data) "" or isnull(data) then ab_msg false //之前这里使用return 3,所以出现这个问题 end if string d…

idea 创建java文件_idea创建java文件 格式不对

import java.io.File;import java.io.FileWriter;import java.io.IOException;public class Test {public static void main(String[] args) {//文件路径File filenew File("d:\\alphabet.txt");//如果文件存在就进行下面的操作,否则打印“找不到文件&…

待办事项桌面插件_让浏览器重获整洁——标签页管理插件:OneTabOneTab PlusToby...

1 什么是标签页管理插件chrome浏览器虽然为用户提供了一个非常方便的打开新标签页的方法,但是随着用户浏览网页的时间增长,用户在一个chrome窗口中打开的标签页会越来越多,当这些标签页过多的时候,用户在标签页之间进行切换就会变…

ext2 源代码解析之 “从路径名到目标结点” (一)

两个主要函数,path_init和path_walk,他们结合在一起根据给定的文件路径名称在内存中找到或者建立代表着目标文件或目录的dentry和inode结构。注意,最终是信息是读取到内存中的。其中有个函数__user_walk()将path_init(…

为什么要自学python_为什么那么多自学Python的后来都放弃了,总结起来就这些原因...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼目前信息化产业发展势头很好,互联网就成为了很多普通人想要涉及的行业,因为相比于传统行业,互联网行业涨薪幅度大,机会也多,所以就会大批的人想要转行来学习Python开发。目…

java内部类外部类_Java内部类:如何在内部类中返回外部类对象

Nasted Class 的介绍,请详见参考今天讨论的不是不是内部类的概念,而是具体使用的一个场景-如何在内部类中返回外部对象(孤猪:我在程序里也碰到过一次这样的状况,非静态内部类可以直接调用外部类实例的成员变量,但如何引…

linux 中 timeval结构体

网上很多人写到,timeval结构解释错误 ******************************************************************* 问题如下: 在debian linux的man页中对gettimeofday函数的说明中,有这样一个说明: DESCRIPTION The functions get…

[置顶] C语言中各种数据类型的长度 sizeof char, short, int, long, long long

这些数据类型的sizeof具体长度依赖于编译器和操作系统(32-bit or 64-bit) 1: 首先,参见c99标准 标准中没有定义这些数据类型的长度,而是定义了这些数据类型能表达的大小范围的最小极限。 C99链接: http://www.open-std…

关机时无人照管更新正在运行_了解iOS13.1后,在决定更新

苹果提前发布了首个重要更新的iOS 13.1,补充了多个 iOS 13 首发时缺失的重要新功能,可以说 iOS 13.1 才是【真正】的 iOS 13 系统。苹果发布iOS13.1,都更新了哪些内容?iOS13.1修复问题和改进问题:?信息中拟我表情可能无法正确跟踪…

java enum in class_Java 8需要一个转换,而Java 7没有 – enum.getClass/getDeclaringClass

我意识到Java 8仍然在测试版,但是这一点让我很奇怪:public class Fields> {public Fields(Set columns) {// A sample column used to find the universe of the enum of Columns.C sampleCol columns.iterator().next();// Java 8 needs a cast her…

linux C 中的volatile使用

一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volati…

山西计算机网络技术专升本分数线_2020山西成考专升本招生补录第一批公告!附补录院校专业缺额表!...

☞回复【成绩】查询2020年成人高考成绩☞回复【录取】查询20成考录取结果☞回复【补录】查询最新院校缺额信息☞加入学历备考交流群 550985358 专升本第一阶段补录通知与院校缺额信息 达线未被录取?还有机会2020山西成考专升本招生征集志愿第一阶段公告发布12月9日1…

yii mysql 主从_mysql主从同步实践YII

1、两台服务器互联master、slave 2、master配置: server-id 1 master端ID号 log-bin/data/logbin/mysql-bin 日志路径及文件名 #binlog-do-db cacti 同步cacti,此处关闭的话,就是除不允许的,其它的库均同步。 binlog-ignore-db …

网页编码就是那点事

编码一直是让新手头疼的问题,特别是 GBK、GB2312、UTF-8 这三个比较常见的网页编码的区别,更是让许多新手晕头转向,怎么解释也解释不清楚。但是编码又是那么重要,特别在网页这一块。如果你打出来的不是乱码,而网页中出…

python最大正方形的面积_LeetCode 221. 最大正方形 | Python

221. 最大正方形题目在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入:1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4解题思路思路:动态规划本篇幅使用动态规划的原理来解决该问题。我们用 dp(i, j) 表示…

查询学生选修课程管理系统java_JAVA数据库课程设计学生选课管理系统的

《JAVA数据库课程设计学生选课管理系统的》由会员分享,可在线阅读,更多相关《JAVA数据库课程设计学生选课管理系统的(59页珍藏版)》请在人人文库网上搜索。1、一、课程设计目的通过这次的设计,主要是做出一个小型的管理系统,来加强…

Linux C 中字符串化操作符#

1 #include <stdio.h>2 3 #define dprint( expr ) printf( "%s %d \n", #expr , expr)4 5 int main(void)6 {7 int x 100;8 int y 2;9 10 dprint(x/y); 11 dprint( xy ); 12 dprint( xy2 ); 13 return 0; 14 } 打印信息&…

Poj1207 The 3n + 1 problem(水题(数据)+陷阱)

一、Description Problems in Computer Science are often classified as belonging to a certain class of problems (e.g., NP, Unsolvable, Recursive). In this problem you will be analyzing a property of an algorithm whose classification is not known for all poss…