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 字符串格式化代码
Mar 17 Python
Python中asyncore的用法实例
Sep 29 Python
Python获取单个程序CPU使用情况趋势图
Mar 10 Python
浅谈Python实现2种文件复制的方法
Jan 19 Python
Python 循环语句之 while,for语句详解
Apr 23 Python
Django rest framework工具包简单用法示例
Jul 20 Python
python3调用百度翻译API实现实时翻译
Aug 16 Python
Python设计模式之适配器模式原理与用法详解
Jan 15 Python
Python datetime和unix时间戳之间相互转换的讲解
Apr 01 Python
pyqt5 实现多窗口跳转的方法
Jun 19 Python
Python 实现一个简单的web服务器
Jan 03 Python
Python 数据科学 Matplotlib图库详解
Jul 07 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
利用js调用后台php进行数据处理原码
2006/10/09 PHP
从MySQL数据库表中取出随机数据的代码
2007/09/05 PHP
解析PHP处理换行符的问题 \r\n
2013/06/13 PHP
解析PHP汉字转换拼音的类
2013/06/18 PHP
PHP mail()函数使用及配置方法
2014/01/14 PHP
浅析php原型模式
2014/11/25 PHP
PHP框架自动加载类文件原理详解
2017/06/06 PHP
docker-compose部署php项目实例详解
2019/07/30 PHP
PHP goto语句用法实例
2019/08/06 PHP
详解Laravel服务容器的绑定与解析
2019/11/05 PHP
JavaScript中使用arguments获得函数传参个数实例
2014/08/27 Javascript
JS实现的用来对比两个用指定分隔符分割的字符串是否相同
2014/09/19 Javascript
NodeJS学习笔记之Connect中间件模块(二)
2015/01/27 NodeJs
JavaScript数组常用方法
2015/03/02 Javascript
js实现input框文字动态变换显示效果
2015/08/19 Javascript
jQuery实现的分页功能示例
2017/01/22 Javascript
详解10分钟学会vue滚动行为
2017/09/21 Javascript
webpack4 + react 搭建多页面应用示例
2018/08/03 Javascript
vuex提交state&&实时监听state数据的改变方法
2018/09/16 Javascript
VUE使用axios调用后台API接口的方法
2020/08/03 Javascript
[01:12]DOTA2次级职业联赛 - Newbee.Y 战队宣传片
2014/12/01 DOTA
Python简单删除目录下文件以及文件夹的方法
2015/05/27 Python
Python的Django框架中settings文件的部署建议
2015/05/30 Python
Python实现插入排序和选择排序的方法
2019/05/12 Python
python Shapely使用指南详解
2020/02/18 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
2020/09/01 Python
移动端HTML5 input常见问题(小结)
2020/09/28 HTML / CSS
香港唯港荟酒店预订:Hotel ICON
2018/03/27 全球购物
Stokke美国官方网店:高级儿童家具、推车、汽车座椅和配件
2020/06/06 全球购物
python+selenium小米商城红米K40手机自动抢购的示例代码
2021/03/24 Python
总经理岗位职责
2013/11/09 职场文书
平面设计师工作职责范文
2013/12/03 职场文书
个人授权委托书样本
2014/09/13 职场文书
2015大学自主招生自荐信范文
2015/03/04 职场文书
2019个人年度目标制定攻略!
2019/07/12 职场文书
css3属性选择器 “~”(波浪号) “,”(逗号) “+”(加号)和 “>”(大于号)
2022/04/19 HTML / CSS