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代码调试的几种方法总结
Apr 15 Python
Python基础语法(Python基础知识点)
Feb 28 Python
Python的爬虫程序编写框架Scrapy入门学习教程
Jul 02 Python
Fabric 应用案例
Aug 28 Python
python生成词云的实现方法(推荐)
Jun 13 Python
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
Jun 21 Python
Python DataFrame.groupby()聚合函数,分组级运算
Sep 18 Python
python求numpy中array按列非零元素的平均值案例
Jun 08 Python
Django如何批量创建Model
Sep 01 Python
OpenCV灰度化之后图片为绿色的解决
Dec 01 Python
如何用python写个模板引擎
Jan 14 Python
Python破解极验滑动验证码详细步骤
May 21 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
上海永华YH-R296(华普R-96)12波段立体声收音机的分析和打理
2021/03/02 无线电
PHP3 safe_mode 失效漏洞
2006/10/09 PHP
web server使用php生成web页面的三种方法总结
2013/10/28 PHP
PHP抓取、分析国内视频网站的视频信息工具类
2014/04/02 PHP
PHP终止脚本运行三种实现方法详解
2020/09/01 PHP
让textarea控件的滚动条怎是位与最下方
2007/04/20 Javascript
javascript 设置文本框中焦点的位置
2009/11/20 Javascript
js调用css属性写法
2013/09/21 Javascript
JavaScript获取数组最小值和最大值的方法
2015/06/09 Javascript
jQuery实现图像旋转动画效果
2016/05/29 Javascript
基于JQuery的购物车添加删除以及结算功能示例
2017/03/08 Javascript
jQuery常见面试题之DOM操作详析
2017/07/05 jQuery
用JavaScript做简易的购物车的代码示例
2017/10/20 Javascript
微信小程序按钮去除边框线分享页面功能
2018/08/27 Javascript
详解使用React.memo()来优化函数组件的性能
2019/03/19 Javascript
详解element-ui动态限定的日期范围选择器代码片段
2020/07/03 Javascript
vue+iview使用树形控件的具体使用
2020/11/02 Javascript
Python中字典(dict)和列表(list)的排序方法实例
2014/06/16 Python
总结用Pdb库调试Python的方式及常用的命令
2016/08/18 Python
Python使用当前时间、随机数产生一个唯一数字的方法
2017/09/18 Python
python反编译学习之字节码详解
2019/05/19 Python
Python基本语法之运算符功能与用法详解
2019/10/22 Python
python sorted函数原理解析及练习
2020/02/10 Python
真正了解CSS3背景下的@font face规则
2017/05/04 HTML / CSS
俄罗斯品牌服装和鞋子在线商店:BRIONITY
2020/03/26 全球购物
日本AOKI官方商城:AOKI西装
2020/06/11 全球购物
员工拾金不昧表扬信
2014/01/09 职场文书
个人简历中的自我评价怎么写
2014/01/26 职场文书
2014大学生党员评议个人总结
2014/09/22 职场文书
12.4全国法制宣传日活动总结
2014/11/01 职场文书
预备党员介绍人意见
2015/06/01 职场文书
行政复议答复书
2015/07/01 职场文书
导游词之晋城蟒河
2019/12/12 职场文书
分析mysql中一条SQL查询语句是如何执行的
2021/06/21 MySQL
Elasticsearch 配置详解
2022/04/19 Java/Android
Python 统计序列中元素的出现频度
2022/04/26 Python