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计算圆周率pi的方法
Jul 11 Python
基于循环神经网络(RNN)的古诗生成器
Mar 26 Python
Python实现多态、协议和鸭子类型的代码详解
May 05 Python
python调用动态链接库的基本过程详解
Jun 19 Python
python如何实现代码检查
Jun 28 Python
PyQt5实现暗黑风格的计时器
Jul 29 Python
Python列表(list)所有元素的同一操作解析
Aug 01 Python
基于python3监控服务器状态进行邮件报警
Oct 19 Python
关于ResNeXt网络的pytorch实现
Jan 14 Python
python源码剖析之PyObject详解
May 18 Python
用Python进行栅格数据的分区统计和批量提取
May 27 Python
python plt.plot bar 如何设置绘图尺寸大小
Jun 01 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操作MongoDB时的整数问题及对策说明
2011/05/02 PHP
Uncaught exception com_exception with message Failed to create COM object
2012/01/11 PHP
PHP读取文件并可支持远程文件的代码分享
2012/10/03 PHP
PHP聊天室简单实现方法详解
2018/12/08 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
jQuery解决iframe高度自适应代码
2009/12/20 Javascript
Extjs学习笔记之九 数据模型(上)
2010/01/11 Javascript
JS小功能(onmouseover实现选择月份)实例代码
2013/11/28 Javascript
javascript中直接引用Microsoft的COM生成Word
2014/01/20 Javascript
Jquery节点遍历next与nextAll方法使用示例
2014/07/22 Javascript
分享两个手机访问pc网站自动跳转手机端网站代码
2020/12/24 Javascript
Knockout结合Bootstrap创建动态UI实现产品列表管理
2016/09/14 Javascript
用JS编写一个函数,返回数组中重复出现过的元素(实例)
2017/09/14 Javascript
在Swiper内如何制作CSS3动画效果示例代码
2017/12/07 Javascript
nodejs 生成和导出 word的实例代码
2018/07/31 NodeJs
JavaScript使用canvas绘制随机验证码
2020/02/17 Javascript
vue相同路由跳转强制刷新该路由组件操作
2020/08/05 Javascript
[01:23]一分钟告诉你 DOTA2为什么叫信仰2
2014/06/20 DOTA
简单介绍Python中的JSON使用
2015/04/28 Python
在Python的web框架中编写创建日志的程序的教程
2015/04/30 Python
使用Python多线程爬虫爬取电影天堂资源
2016/09/23 Python
使用TensorFlow实现SVM
2018/09/06 Python
对python判断ip是否可达的实例详解
2019/01/31 Python
python 实现简单的FTP程序
2019/12/27 Python
Flask模板引擎Jinja2使用实例
2020/04/23 Python
python进行OpenCV实战之画图(直线、矩形、圆形)
2020/08/27 Python
英国领先的野生鸟类食品供应商:GardenBird
2018/08/09 全球购物
西安夏日科技有限公司Java笔试题
2013/01/11 面试题
应届大学生简历中的自我评价
2014/01/15 职场文书
师德师风建设方案
2014/05/08 职场文书
志愿者爱心公益活动策划方案
2014/09/15 职场文书
承诺书模板大全
2015/05/04 职场文书
2016年寒假生活小结
2015/10/10 职场文书
民警忠诚教育心得体会
2016/01/23 职场文书
Spring mvc是如何实现与数据库的前后端的连接操作的?
2021/06/30 Java/Android
Redis中有序集合的内部实现方式的详细介绍
2022/03/16 Redis