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实现类似jQuery使用中的链式调用的示例
Jun 16 Python
Python爬虫包BeautifulSoup学习实例(五)
Jun 17 Python
python实现从文件中读取数据并绘制成 x y 轴图形的方法
Oct 14 Python
python 自定义异常和异常捕捉的方法
Oct 18 Python
Python 学习教程之networkx
Apr 15 Python
Python Numpy库datetime类型的处理详解
Jul 13 Python
详解python中自定义超时异常的几种方法
Jul 29 Python
pycharm 2020 1.1的安装流程
Sep 29 Python
Python eval函数介绍及用法
Nov 09 Python
Pycharm配置autopep8实现流程解析
Nov 28 Python
python中count函数知识点浅析
Dec 17 Python
Python开发工具Pycharm的安装以及使用步骤总结
Jun 24 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
在windows平台上构建自己的PHP实现方法(仅适用于php5.2)
2013/07/05 PHP
PHP中的Streams详细介绍
2014/11/12 PHP
使用tp框架和SQL语句查询数据表中的某字段包含某值
2019/10/18 PHP
重写javascript中window.confirm的行为
2012/10/21 Javascript
JS中产生20位随机数以0-9为例也可以是a-z A-Z
2014/08/01 Javascript
JS实现网页背景颜色与select框中颜色同时变化的方法
2015/02/27 Javascript
js+css实现上下翻页相册代码分享
2015/08/18 Javascript
JS实现字符串转日期并比较大小实例分析
2015/12/09 Javascript
js实现鼠标左右移动,图片也跟着移动效果
2017/01/25 Javascript
JS简单判断字符在另一个字符串中出现次数的2种常用方法
2017/04/20 Javascript
学习使用Bootstrap输入框、导航、分页等常用组件
2017/05/11 Javascript
vue+Java后端进行调试时解决跨域问题的方式
2017/10/19 Javascript
Vue.js 2.x之组件的定义和注册图文详解
2018/06/19 Javascript
用Python脚本生成Android SALT扰码的方法
2013/09/18 Python
详解Python发送邮件实例
2016/01/10 Python
Python爬取网易云音乐上评论火爆的歌曲
2017/01/19 Python
Python实现的弹球小游戏示例
2017/08/01 Python
python实战之实现excel读取、统计、写入的示例讲解
2018/05/02 Python
如何在django中添加日志功能
2020/02/06 Python
python列表返回重复数据的下标
2020/02/10 Python
python 实现"神经衰弱"翻牌游戏
2020/11/09 Python
深入研究HTML5实现图片压缩上传功能
2016/03/25 HTML / CSS
白宫黑市官网:White House Black Market
2016/11/17 全球购物
手工制作的音乐盒:Music Box Attic
2019/09/05 全球购物
大学生学年自我鉴定
2014/02/10 职场文书
作文评语集锦大全
2014/04/23 职场文书
工地质量标语
2014/06/12 职场文书
应届生求职信范文
2014/06/30 职场文书
标准单位租车协议书
2014/09/23 职场文书
政风行风整改方案
2014/10/25 职场文书
永远是春天观后感
2015/06/12 职场文书
工作证明书
2015/06/15 职场文书
中小学教师继续教育心得体会
2016/01/19 职场文书
《家》读后感:万惜拯救,冷暖自知
2019/09/25 职场文书
JS如何使用剪贴板操作Clipboard API
2021/05/17 Javascript
处理canvas绘制图片模糊问题
2022/05/11 Javascript