python筛选数据求均值_Python Pandas实现数据分组求平均值并填充nan的示例

Python实现按某一列关键字分组,并计算各列的平均值,并用该值填充该分类该列的nan值。

DataFrame数据格式

fillna方式实现

groupby方式实现

DataFrame数据格式

以下是数据存储形式:

fillna方式实现

1、按照industryName1列,筛选出业绩

2、筛选出相同行业的Series

3、计算平均值mean,采用fillna函数填充

4、append到新DataFrame中

5、循环遍历行业名称,完成2,3,4步骤

factordatafillna = pd.DataFrame()

industrys = newfactordata1.industryName1.unique()

for ind in industrys:

t = newfactordata1.industryName1 == ind

a = newfactordata1[t].fillna(newfactordata1[t].mean())

factordatafillna = factordatafillna.append(a)

groupby方式实现

采用groupby计算,详细见代码注释

df = pd.DataFrame({'code':[1,2,3,4,5,6,7,8],

'value':[np.nan,5,7,8,9,10,11,12],

'value2':[5,np.nan,7,np.nan,9,10,11,12],

'indstry':['农业1','农业1','农业1','农业2','农业2','农业4','农业2','农业3']},

columns=['code','value','value2','indstry'],

index=list('ABCDEFGH'))

# 只留下需要处理的列

cols = [col for col in df.columns if col not in['code','indstry']]

# 分组的列

gp_col = 'indstry'

# 查询nan的列

df_na = df[cols].isna()

# 根据分组计算平均值

df_mean = df.groupby(gp_col)[cols].mean()

print(df)

# 依次处理每一列

for col in cols:

na_series = df_na[col]

names = list(df.loc[na_series,gp_col])

t = df_mean.loc[names,col]

t.index = df.loc[na_series,col].index

# 相同的index进行赋值

df.loc[na_series,col] = t

print(df)

code value value2 indstry

A 1 NaN 5.0 农业1

B 2 5.0 NaN 农业1

C 3 7.0 7.0 农业1

D 4 8.0 NaN 农业2

E 5 9.0 9.0 农业2

F 6 10.0 10.0 农业4

G 7 11.0 11.0 农业2

H 8 12.0 12.0 农业3

code value value2 indstry

A 1 6.0 5.0 农业1

B 2 5.0 6.0 农业1

C 3 7.0 7.0 农业1

D 4 8.0 10.0 农业2

E 5 9.0 9.0 农业2

F 6 10.0 10.0 农业4

G 7 11.0 11.0 农业2

H 8 12.0 12.0 农业3

以上这篇Python Pandas实现数据分组求平均值并填充nan的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

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

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

相关文章

HTMLTestRunner.py内容

HTMLTesstRunner.py 修改后内容如下: """ A TestRunner for use with the Python unit testing framework. It generates a HTML report to show the result at a glance.The simplest way to use this is to invoke its main method. E.g.import u…

卷积神经网络原理_人脸识别背后,卷积神经网络的数学原理原来是这样的

在自动驾驶、医疗以及零售这些领域,计算机视觉让我们完成了一些直到最近都被认为是不可能的事情。卷积神经网络可能是这一巨大成功背后的关键组成模块。这次,我们将要使用卷积神经网络的思想来拓宽我们对神经网络工作原理的理解。简介过去我们接触到了密…

unittest读取ddt之-元组,嵌套元组,字典

注: (1)ddt数据驱动中,测试用例的执行次数是由data()传参的个数决定。传几个参数,就是执行几次测试用例。 (2)如果传的是多个元组(列表),那么可…

负载均衡策略_常见的负载均衡策略

轮询(Round Robin): 这种方法就会将收到的请求循环分配到服务器集群中的每台机器,即有效服务器。如果使用这种方式,所有的标记进入虚拟服务的服务器应该有相近的资源容量以及敷在相同的应用程序。如果所有的服务有相同或者相近的性能那么选择…

unittest-读取yaml文件

注: (1)yaml文件详解 yaml是一种数据格式,类似txt,excel,json 它只有两种数据类型: map对象(键值对,冒号后需要有空格) list列表对象,以-开头 读取之后是一个不定长…

白盒测试-修正条件判定覆盖

当程序中的判定语句包含多个条件时,运用多条件覆盖方法进行测试,其条件取值组合数目是非常大的。 修正条件判定覆盖要求在一个程序中每一种输入输出至少得出现一次,在程序中的每一个条件必须产生所有可能的输出结果至少一次,并且…

springboot整合shiro_Springboot整合Shiro:简洁的身份认证

简单的web应用进行身份认证的流程:1.对未认证的用户请求进行拦截,跳转到认证页面。2.用户通过用户名密码及其他凭证进行身份认证,认证成功跳转成功页面,认证失败提示相关失败信息。根据流程,采用shiro进行快速开发。1.…

python回车键绑定按钮_python tkinter 绑定回车键

# _*_ coding:utf-8_*_from Tkinter import *def submit(ev None):p.set(u.get())root Tk()root.title("测试")frame Frame(root)frame.pack(padx8, pady8, ipadx4)lab1 Label(frame, text"获取:")lab1.grid(row0, column0, padx5, pady5, stickyW)#绑…

2024年【安全生产监管人员】考试及安全生产监管人员模拟考试题库

题库来源:安全生产模拟考试一点通公众号小程序 2024年【安全生产监管人员】考试及安全生产监管人员模拟考试题库,包含安全生产监管人员考试答案和解析及安全生产监管人员模拟考试题库练习。安全生产模拟考试一点通结合国家安全生产监管人员考试最新大纲…

PICT工具安装使用

1、安装PICT 通过下载安装包pict33.msi, 链接:https://pan.baidu.com/s/1YWIA5XLNI0MMFkiQ-EqZ9w 提取码:ho7g 解压安装,安装成功后验证:打开cmd命令终端,输入pict显示如下即证明安装成功。 2、新建Mod…

茜在人名可以读xi吗_甘肃中专学校:初中毕业可以读大专吗?

初中毕业到兰州中专学校可以读大专吗?许多学生因为成绩的关系可能没能上普通高中,但是他们现在还不具备任何的专业知识和能力进入社会。很多孩子都想通过读大专具备进入社会的能力,那么初中毕业的学生是否能够读大专呢?成人高考初中毕业之后是可以读大…

测试用例设计思路

测试用例编写思路: 首先是明确测试范围: 接口测试 功能测试 界面测试(界面友好性、易用性、一致性) 兼容性测试(不同类型、型号手机、系统(手机系统、桌面系统)、分辨率、浏览器及其版本&a…

sql backup database备份d盘_SQL数据库备份概述

数据库备份方式概述为了防止意外删除,自然灾害等造成的损失,数据库备份是必须要的。数据库备份还可以用于mirror,replication等过程。了解数据库备份的原理对于处理数据库备份尤为重要。以下关于备份的概述只是前段时间兴起而写,由…

导入与上传

数据导入(Excel): 1、 下载模板(.xls)文件:将事先准备好的模板导入 2、 用户根据模板填写数据; 3、 用户上传数据->导入。 图片上传:图片(文件)上传:一般不会把图片…

python数字位数重排_Python面试题:给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数...

题目&#xff1a;方法&#xff1a;class Solution:def cmp(self,x,y):return (x > y) - (x < y)def comper(self,x,nums):temp 0for n in nums:n str(n)temp self.cmp(int(xn),int(nx))#print(self.cmp(int(x),n))return tempdef largestNumber(self, nums):"&qu…

选择嵌套_如何优雅地在JavaScript中访问嵌套对象

在JavaScript中访问嵌套对象以超酷的方式安全地访问JavaScript中的嵌套对象JavaScript是惊人的&#xff0c;我们都知道。但是JavaScript中的一些东西真的很奇怪&#xff0c;它们让我们大开眼界。其中一个问题是当您尝试访问嵌套对象时与此错误的对抗&#xff0c;无法读取未定义…

python各进制的表述与转换

目录 进制的表示 进制的转换 bin() 十进制转二进制 oct() 十进制转八进制 hex() 十进制转十六进制 int(a,R) R进制数a(必须为字符串类型)转换成十进制 十进制小数转R进制 R进制小数转十进制 进制的表示 二进制&#xff1a;0b 八进制&#xff1a;0o 十六进制&#x…

迭代器 java_百战程序员:Java设计模式之迭代器模式

迭代器是针对集合对象而生的&#xff0c;对于集合对象而言&#xff0c;必然涉及到集合元素的添加删除操作&#xff0c;同时也肯定支持遍历集合元素的操作&#xff0c;我们此时可以把遍历操作也放在集合对象中&#xff0c;但这样的话&#xff0c;集合对象就承担太多的责任了&…

postman-常见问题解决方案记录

1、 Response body:Containing string为中文 Response body:Containing string:为中文时&#xff0c;转换为unicode编码&#xff0c;并添加转义符。 2、get方式与post请求使用环境变量 post方式请求&#xff0c;请求体中包含有环境变量&#xff0c;引用方法&#xff1a; JSON格…

批发电脑配件_2019年10月电脑配件表

当前电脑主要配件的批发价&#xff0c;不面向零售哦&#xff01;下面给大家介绍一下想获得详细报价&#xff0c;持续为您更新想了解电脑系统重装请回复&#xff1a;重装系统电脑由于windows10更新卡顿请回复&#xff1a;windows 10笔记本电脑购买常识请回复&#xff1a;笔记本电…