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 相关文章推荐
win7安装python生成随机数代码分享
Dec 27 Python
Python文件夹与文件的相关操作(推荐)
Jul 25 Python
python之从文件读取数据到list的实例讲解
Apr 19 Python
Python实现的当前时间多加一天、一小时、一分钟操作示例
May 21 Python
在dataframe两列日期相减并且得到具体的月数实例
Jul 03 Python
Python+OpenCV采集本地摄像头的视频
Apr 25 Python
python urllib爬虫模块使用解析
Sep 05 Python
如何基于python生成list的所有的子集
Nov 11 Python
浅谈matplotlib.pyplot与axes的关系
Mar 06 Python
python zip,lambda,map函数代码实例
Apr 04 Python
Python基于pip实现离线打包过程详解
May 15 Python
Ubuntu20下的Django安装的方法步骤
Jan 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
超神学院:鹤熙已踏入神圣领域,实力不比凯莎弱
2020/03/02 国漫
如何让thinkphp在模型中自动完成session赋值小教程
2014/09/05 PHP
PHP实现文件上传与下载实例与总结
2016/03/13 PHP
浅谈mysql_query()函数的返回值问题
2016/09/05 PHP
中高级PHP程序员应该掌握哪些技术?
2016/09/23 PHP
Yii2框架实现注册和登录教程
2016/09/30 PHP
PHP简单实现合并2个数字键数组值的方法
2017/05/30 PHP
PHP-FPM 的管理和配置详解
2019/02/17 PHP
laravel实现上传图片的两种方式小结
2019/10/12 PHP
兼容Mozilla必须知道的知识。
2007/01/09 Javascript
javascript帧动画(实例讲解)
2017/09/02 Javascript
angular2 ng2 @input和@output理解及示例
2017/10/10 Javascript
JavaScript实现二叉树定义、遍历及查找的方法详解
2017/12/20 Javascript
Node.js实现注册邮箱激活功能的方法示例
2018/03/23 Javascript
vue实现条件判断动态绑定样式的方法
2018/09/29 Javascript
JS前端知识点总结之页面加载事件,数组操作,DOM节点操作,循环和分支
2019/07/04 Javascript
Python简单进程锁代码实例
2015/04/27 Python
pandas数据处理基础之筛选指定行或者指定列的数据
2018/05/03 Python
python 字典中文key处理,读取,比较方法
2018/07/06 Python
python实现简单的文字识别
2018/11/27 Python
Python基础之函数的定义与使用示例
2019/03/23 Python
Python Selenium 设置元素等待的三种方式
2020/03/18 Python
Pytorch使用PIL和Numpy将单张图片转为Pytorch张量方式
2020/05/25 Python
详解pycharm的python包opencv(cv2)无代码提示问题的解决
2021/01/29 Python
手把手教你用Django执行原生SQL的方法
2021/02/18 Python
Python  Asyncio模块实现的生产消费者模型的方法
2021/03/01 Python
英国家庭珠宝商:T. H. Baker
2018/02/08 全球购物
优秀生推荐信范文
2013/11/28 职场文书
七年级地理教学反思
2014/01/26 职场文书
电子信息工程专业推荐信
2014/02/14 职场文书
环境整治工作方案
2014/05/18 职场文书
初中中等生评语
2014/12/29 职场文书
SQL IDENTITY_INSERT作用案例详解
2021/08/23 MySQL
maven依赖的version声明控制方式
2022/01/18 Java/Android
日本动漫十大公认神作:第五现已全网禁播,《死亡笔记》在榜
2022/03/18 日漫
python index() 与 rindex() 方法的使用示例详解
2022/12/24 Python