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常用正则表达式符号浅析
Aug 13 Python
python字典序问题实例
Sep 26 Python
Python自动生产表情包
Mar 17 Python
python引入导入自定义模块和外部文件的实例
Jul 24 Python
python实现文件的备份流程详解
Jun 18 Python
如何使用django的MTV开发模式返回一个网页
Jul 22 Python
Python获取当前脚本文件夹(Script)的绝对路径方法代码
Aug 27 Python
Python字符编码转码之GBK,UTF8互转
Feb 09 Python
Python函数生成器原理及使用详解
Mar 12 Python
Python气泡提示与标签的实现
Apr 01 Python
Python 如何展开嵌套的序列
Aug 01 Python
scrapy在python爬虫中搭建出错的解决方法
Nov 22 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
echo, print, printf 和 sprintf 区别
2006/12/06 PHP
Mac OS下配置PHP+MySql环境
2015/02/25 PHP
Joomla语言翻译类Jtext用法分析
2016/05/05 PHP
php面向对象编程self和static的区别
2016/05/08 PHP
PHP性能测试工具xhprof安装与使用方法详解
2018/04/29 PHP
php数组遍历类与用法示例
2019/05/24 PHP
php引用和拷贝的区别知识点总结
2019/09/23 PHP
firefo xml 读写实现js代码
2009/06/11 Javascript
Jquery刷新页面背景图片随机变换的实现方法
2013/03/15 Javascript
JavaScript中的onerror事件概述及使用
2013/04/01 Javascript
利用浏览器全屏api实现js全屏
2014/01/16 Javascript
JavaScript中Number.NEGATIVE_INFINITY值的使用详解
2015/06/05 Javascript
jquery插件unobtrusive实现片段式加载
2015/06/15 Javascript
解决vue打包之后静态资源图片失效的问题
2018/02/21 Javascript
微信小程序实现图片上传功能
2018/05/28 Javascript
JS函数内部属性之arguments和this实例解析
2018/10/07 Javascript
详解VUE调用本地json的使用方法
2019/05/15 Javascript
Vue过滤器,生命周期函数和vue-resource简单介绍
2021/01/12 Vue.js
[04:26]DOTA2上海特锦赛小组赛第二日 TOP10精彩集锦
2016/02/27 DOTA
[01:20]DOTA2上海特级锦标赛现场采访:谁的ID最受青睐
2016/03/25 DOTA
Python multiprocessing.Manager介绍和实例(进程间共享数据)
2014/11/21 Python
Python实现钉钉发送报警消息的方法
2019/02/20 Python
详解Python3 基本数据类型
2019/04/19 Python
python shell命令行中import多层目录下的模块操作
2020/03/09 Python
django 模型字段设置默认值代码
2020/07/15 Python
python -v 报错问题的解决方法
2020/09/15 Python
爱奇艺VIP会员:大剧抢先看
2018/07/11 全球购物
澳大利亚家用电器在线商店:Billy Guyatts
2020/05/05 全球购物
向全球直邮输送天然健康产品:iHerb.com
2020/05/03 全球购物
Java中实现多态的机制
2015/08/09 面试题
能源工程专业应届生求职信
2014/03/01 职场文书
活动宣传策划方案
2014/05/23 职场文书
小学运动会口号
2014/06/07 职场文书
邀请函模板
2015/02/02 职场文书
Python基础之赋值,浅拷贝,深拷贝的区别
2021/04/30 Python
vue实现锚点定位功能
2021/06/29 Vue.js