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系列之教你如何根据图片生成字符画
May 23 Python
Python函数参数类型*、**的区别
Apr 11 Python
python3.5 + PyQt5 +Eric6 实现的一个计算器代码
Mar 11 Python
python django 实现验证码的功能实例代码
May 18 Python
django文档学习之applications使用详解
Jan 29 Python
Python callable()函数用法实例分析
Mar 17 Python
python opencv3实现人脸识别(windows)
May 25 Python
Sanic框架路由用法实例分析
Jul 16 Python
利用anaconda保证64位和32位的python共存
Mar 09 Python
Python接口测试get请求过程详解
Feb 28 Python
python安装第三方库如xlrd的方法
Oct 31 Python
Python tensorflow卷积神经Inception V3网络结构
May 06 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代码
2006/12/06 PHP
某大型网络公司应聘时的笔试题目附答案
2008/03/27 PHP
mysql,mysqli,PDO的各自不同介绍
2012/09/19 PHP
实测在class的function中include的文件中非php的global全局环境
2013/07/15 PHP
PHP设计模式之工厂模式详解
2017/10/24 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
Mootools 1.2教程 函数
2009/09/15 Javascript
不一样的文字闪烁 轮番闪烁
2009/11/11 Javascript
jquery中动态效果小结
2010/12/16 Javascript
jQuery 名称冲突的解决方法
2011/04/08 Javascript
jQuery UI Autocomplete 体验分享
2012/02/14 Javascript
js输出阴历、阳历、年份、月份、周示例代码
2014/01/29 Javascript
JS网页在线获取鼠标坐标值的方法
2015/02/28 Javascript
javascript中闭包概念与用法深入理解
2016/12/15 Javascript
一篇看懂vuejs的状态管理神器 vuex状态管理模式
2017/04/20 Javascript
JavaScript通过改变文字透明度实现的文字闪烁效果实例
2017/04/27 Javascript
vue.js国际化 vue-i18n插件的使用详解
2017/07/07 Javascript
理解 JavaScript EventEmitter
2018/03/29 Javascript
JS实现获取毫秒值及转换成年月日时分秒的方法
2018/08/15 Javascript
vuejs中监听窗口关闭和窗口刷新事件的方法
2018/09/21 Javascript
vue+Element-ui实现分页效果
2020/11/15 Javascript
在Python中处理字符串之isdigit()方法的使用
2015/05/18 Python
Python简单实现enum功能的方法
2016/04/25 Python
Django实现分页功能
2018/07/02 Python
Python对数据进行插值和下采样的方法
2018/07/03 Python
Python使用matplotlib绘制随机漫步图
2018/08/27 Python
ansible动态Inventory主机清单配置遇到的坑
2020/01/19 Python
利用4行Python代码监测每一行程序的运行时间和空间消耗
2020/04/22 Python
keras实现多种分类网络的方式
2020/06/11 Python
浅谈python 类方法/静态方法
2020/09/18 Python
人事主管的岗位职责
2013/11/16 职场文书
骨干教师培训制度
2014/01/13 职场文书
五年级英语教学反思
2014/01/31 职场文书
校长新学期寄语2016
2015/12/04 职场文书
学习党史心得体会2016
2016/01/23 职场文书
pytorch训练神经网络爆内存的解决方案
2021/05/22 Python