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中 Lambda表达式全面解析
Nov 28 Python
利用 Monkey 命令操作屏幕快速滑动
Dec 07 Python
python去除字符串中的换行符
Oct 11 Python
Python数据持久化shelve模块用法分析
Jun 29 Python
浅谈tensorflow中几个随机函数的用法
Jul 27 Python
django页面跳转问题及注意事项
Jul 18 Python
python元组的概念知识点
Nov 19 Python
Opencv常见图像格式Data Type及代码实例
Nov 02 Python
python 动态渲染 mysql 配置文件的示例
Nov 20 Python
anaconda安装pytorch1.7.1和torchvision0.8.2的方法(亲测可用)
Feb 01 Python
matplotlib之属性组合包(cycler)的使用
Feb 24 Python
Python OpenCV实现传统图片格式与base64转换
Jun 13 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使用mysql_query查询超大结果集超内存问题
2016/03/14 PHP
ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法
2016/11/12 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
PHP实现求两个字符串最长公共子串的方法示例
2017/11/17 PHP
PHP7 新增功能
2021/03/09 PHP
javascript中简单的进制转换代码实例
2013/10/26 Javascript
键盘KeyCode值列表汇总
2013/11/26 Javascript
jQuery实现鼠标悬停显示提示信息窗口的方法
2015/04/30 Javascript
Bootstrap每天必学之工具提示(Tooltip)插件
2016/04/26 Javascript
JavaScript:Date类型全面解析
2016/05/19 Javascript
JS+HTML5手机开发之滚动和惯性缓动实现方法分析
2016/06/12 Javascript
轻松掌握JavaScript中介者模式
2016/08/26 Javascript
Angular.js自定义指令学习笔记实例
2017/02/24 Javascript
JavaScript数组迭代方法
2017/03/03 Javascript
搭建element-ui的Vue前端工程操作实例
2018/02/23 Javascript
详解如何webpack使用DllPlugin
2018/09/30 Javascript
nest.js 使用express需要提供多个静态目录的操作方法
2019/10/24 Javascript
js实现表格单列按字母排序
2020/08/12 Javascript
[02:01]BBC DOTA2国际邀请赛每日综述:八强胜者组鏖战,中国队喜忧参半
2014/07/19 DOTA
[02:57]2014DOTA2国际邀请赛-观众采访
2014/07/19 DOTA
[16:01]夜魇凡尔赛茶话会 第二期01:你比划我猜
2021/03/11 DOTA
Python Mysql自动备份脚本
2008/07/14 Python
python使用str & repr转换字符串
2016/10/13 Python
Python求平面内点到直线距离的实现
2020/01/19 Python
python实现批处理文件
2020/07/28 Python
python爬虫中url管理器去重操作实例
2020/11/30 Python
CSS3 实现飘动的云朵动画
2020/12/01 HTML / CSS
Notino法国:购买香水和化妆品
2019/04/15 全球购物
越南综合购物网站:Lazada越南
2019/06/10 全球购物
某个公司的Java笔面试题
2016/03/11 面试题
旅游管理专业生自荐信范文
2014/01/02 职场文书
秋季红领巾广播稿
2014/01/27 职场文书
大学生求职信例文
2014/06/29 职场文书
幼儿园中班教师个人工作总结
2015/02/06 职场文书
房地产财务经理岗位职责
2015/04/08 职场文书
「女孩的钓鱼慢活」全新版权绘公布
2022/03/21 日漫