Python Pandas实现数据分组求平均值并填充nan的示例

 更新时间:2019年07月04日 10:18:48   作者:好男孩朋友99  
今天小编就为大家分享一篇Python Pandas实现数据分组求平均值并填充nan的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

Python实现按某一列关键字分组,并计算各列的平均值,并用该值填充该分类该列的nan值。

DataFrame数据格式

fillna方式实现

groupby方式实现

DataFrame数据格式

以下是数据存储形式:

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中正则匹配TAB及空格的小技巧

    详解Python中正则匹配TAB及空格的小技巧

    这篇文章主要介绍了详解Python中正则匹配TAB及空格的小技巧,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Win10 安装PyCharm2019.1.1(图文教程)

    Win10 安装PyCharm2019.1.1(图文教程)

    这篇文章主要介绍了Win10 安装PyCharm2019.1.1(图文教程),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Pandas 稀疏数据结构的实现

    Pandas 稀疏数据结构的实现

    如果数据中有很多NaN的值,存储起来就会浪费空间。为了解决这个问题,Pandas引入了一种叫做Sparse data的结构,来有效的存储这些NaN的值,本文就来详细的介绍了一下,感兴趣的可以了解一下
    2021-07-07
  • 解决Python运算符重载的问题

    解决Python运算符重载的问题

    这篇文章主要介绍了解决Python运算符重载的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • Python扫描端口的实现

    Python扫描端口的实现

    这篇文章主要介绍了Python扫描端口的实现,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • python markdown转html自定义实现工具解析

    python markdown转html自定义实现工具解析

    Python-Markdown2 是一个 Python 库,用于将 Markdown 文本转换为 HTML,它是对标准 Markdown 语法的扩展,提供了一些额外的功能和选项,同时还兼容标准 Markdown,用它可以方便地生成漂亮的文档、博客文章、项目文档等
    2024-01-01
  • Python selenium把歌词评论做成词云图

    Python selenium把歌词评论做成词云图

    大家好,本篇文章主要讲的是Python selenium把歌词评论做成词云图,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • 微信跳一跳python辅助脚本(总结)

    微信跳一跳python辅助脚本(总结)

    本篇文章为大家整理了关于微信跳一跳的辅助脚本内容,这次我们给大家整理的是关于python的脚本内容,一起来学习下。
    2018-01-01
  • Python中利用算法优化性能的技巧分享

    Python中利用算法优化性能的技巧分享

    这篇文章主要为大家详细介绍了Python中12个可以利用算法优化性能的技巧,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下
    2025-04-04
  • Python Melt函数将宽格式的数据表转换为长格式

    Python Melt函数将宽格式的数据表转换为长格式

    在数据处理和清洗中,melt函数是Pandas库中一个强大而灵活的工具,它的主要功能是将宽格式的数据表转换为长格式,从而更方便进行分析和可视化,本文将深入探讨melt函数的用法、参数解析以及实际应用场景
    2023-12-12

最新评论