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 相关文章推荐
win7安装python生成随机数代码分享
Dec 27 Python
Python的IDEL增加清屏功能实例
Jun 19 Python
浅谈python jieba分词模块的基本用法
Nov 09 Python
Python自定义线程池实现方法分析
Feb 07 Python
Python+selenium 获取浏览器窗口坐标、句柄的方法
Oct 14 Python
python计算两个矩形框重合百分比的实例
Nov 07 Python
python 用下标截取字符串的实例
Dec 25 Python
Python面向对象之继承和多态用法分析
Jun 08 Python
Django RBAC权限管理设计过程详解
Aug 06 Python
TensorBoard 计算图的查看方式
Feb 15 Python
python输入中文的实例方法
Sep 14 Python
Python使用Turtle模块绘制国旗的方法示例
Feb 28 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中查询SQL Server或Sybase时TEXT字段被截断的解决方法
2009/03/10 PHP
Fine Uploader文件上传组件应用介绍
2013/01/06 PHP
探讨如何在PHP开启gzip页面压缩实例
2013/06/09 PHP
解析在PHP中使用全局变量的几种方法
2013/06/24 PHP
php计算程序运行时间的简单例子分享
2014/05/10 PHP
thinkphp使用literal防止模板标签被解析的方法
2014/11/22 PHP
制作安全性高的PHP网站的几个实用要点
2014/12/30 PHP
JQuery里选择超链接的实现代码
2011/05/22 Javascript
父节点获取子节点的字符串示例代码
2014/02/26 Javascript
Javascript学习笔记之 对象篇(四) : for in 循环
2014/06/24 Javascript
js仿小米官网图片轮播特效
2016/09/29 Javascript
input框中的name和id的区别
2016/11/16 Javascript
前端图片懒加载(lazyload)的实现方法(提高用户体验)
2017/08/21 Javascript
jQuery代码优化方法总结
2018/01/29 jQuery
nodejs读取并去重excel文件
2018/04/22 NodeJs
JavaScript常用数学函数用法示例
2018/05/14 Javascript
详解Webpack-dev-server的proxy用法
2018/09/08 Javascript
vue-cli+webpack项目打包到服务器后,ttf字体找不到的解决操作
2020/08/28 Javascript
python中zip()方法应用实例分析
2016/04/16 Python
Python3 实现随机生成一组不重复数并按行写入文件
2018/04/09 Python
python对视频画框标记后保存的方法
2018/12/07 Python
pycharm的python_stubs问题
2020/04/08 Python
Python字典fromkeys()方法使用代码实例
2020/07/20 Python
python 装饰器的使用示例
2020/10/10 Python
python爬取代理ip的示例
2020/12/18 Python
HTML5 Canvas绘制圆点虚线实例
2015/01/01 HTML / CSS
加拿大购物频道:The Shopping Channel
2016/07/21 全球购物
市场营销求职信范文
2014/02/21 职场文书
构建高效课堂实施方案
2014/03/13 职场文书
经费申请报告范文
2015/05/18 职场文书
优秀范文:读《红岩》有感3篇
2019/10/14 职场文书
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
2021/06/23 Python
Python中文纠错的简单实现
2021/07/07 Python
nodejs利用readline提示输入内容实例代码
2021/07/15 NodeJs
Nebula Graph解决风控业务实践
2022/03/31 MySQL
python 实现图片特效处理
2022/04/03 Python