Python Pandas实现数据分组求平均值并填充nan的示例


Posted in Python onJuly 04, 2019

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

DataFrame数据格式

fillna方式实现

groupby方式实现

DataFrame数据格式

以下是数据存储形式:

Python Pandas实现数据分组求平均值并填充nan的示例

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的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python用10行代码实现对黄色图片的检测功能
Aug 10 Python
Python文件处理
Feb 29 Python
python输入错误密码用户锁定实现方法
Nov 27 Python
通过pycharm使用git的步骤(图文详解)
Jun 13 Python
django框架自定义模板标签(template tag)操作示例
Jun 24 Python
python中类的输出或类的实例输出为这种形式的原因
Aug 12 Python
python 内置函数汇总详解
Sep 16 Python
Python 脚本的三种执行方式小结
Dec 21 Python
Python使用循环神经网络解决文本分类问题的方法详解
Jan 16 Python
Django 用户登陆访问限制实例 @login_required
May 13 Python
python中常见错误及解决方法
Jun 21 Python
Django开发RESTful API实现增删改查(入门级)
May 10 Python
pybind11在Windows下的使用教程
Jul 04 #Python
Pandas_cum累积计算和rolling滚动计算的用法详解
Jul 04 #Python
Pycharm简单使用教程(入门小结)
Jul 04 #Python
pandas基于时间序列的固定时间间隔求均值的方法
Jul 04 #Python
Python读取xlsx文件的实现方法
Jul 04 #Python
使用python进行广告点击率的预测的实现
Jul 04 #Python
python命令行工具Click快速掌握
Jul 04 #Python
You might like
用PHP实现维护文件代码
2007/06/14 PHP
php中{}大括号是什么意思
2013/12/01 PHP
php中session过期时间设置及session回收机制介绍
2014/05/05 PHP
PHP错误处理函数
2016/04/03 PHP
小试JQuery的AutoComplete插件
2011/05/04 Javascript
AngularJS使用angular-formly进行表单验证
2015/12/27 Javascript
Asp.Net之JS生成分页条的方法
2016/11/23 Javascript
bootstrap下拉菜单使用方法解析
2017/01/13 Javascript
Angularjs处理页面闪烁的解决方法
2017/03/09 Javascript
vue.js项目打包上线的图文教程
2017/11/16 Javascript
JS基于对象的特性实现去除数组中重复项功能详解
2017/11/17 Javascript
Angular5中调用第三方js插件的方法
2018/02/26 Javascript
JavaScript 隐性类型转换步骤浅析
2018/03/15 Javascript
让你5分钟掌握9个JavaScript小技巧
2018/06/09 Javascript
用Node提供静态文件服务的方法
2018/07/06 Javascript
vue工程全局设置ajax的等待动效的方法
2019/02/22 Javascript
浅析 Vue 3.0 的组装式 API(一)
2020/08/31 Javascript
python 将字符串转换成字典dict
2013/03/24 Python
python检测远程端口是否打开的方法
2015/03/14 Python
Python读写配置文件的方法
2015/06/03 Python
Python中__slots__属性介绍与基本使用方法
2018/09/05 Python
Django REST框架创建一个简单的Api实例讲解
2019/11/05 Python
关于numpy中eye和identity的区别详解
2019/11/29 Python
Python使用Tkinter实现滚动抽奖器效果
2020/01/06 Python
python如何代码集体右移
2020/07/20 Python
如何通过python检查文件是否被占用
2020/12/18 Python
CSS3实现的文本3D效果附图
2014/09/03 HTML / CSS
土耳其家居建材网站:Koçtaş
2016/11/22 全球购物
婴儿鞋,独特的婴儿服装和配件:Zutano
2018/11/03 全球购物
写一个方法1000的阶乘
2012/11/21 面试题
软件生产职位结构化面试主要考察要素及面试题库
2015/06/12 面试题
应聘文员自荐信范文
2014/03/11 职场文书
植树节标语
2014/06/27 职场文书
物业保安辞职信
2015/05/12 职场文书
基于Python实现流星雨效果的绘制
2022/03/18 Python
使用Redis实现点赞取消点赞的详细代码
2022/03/20 Redis