在机器学习构建特征的过程中经常需要统计不同的数值,并且Merge到一起。通常步骤如下
在pandas中进行统计的步骤如下:
(1) 首先通过 groupby 函数得到 DataFrameGroupBy 对象, 比如data.groupby('race')。
(2) 然后选择需要研究的列,这样我们就得到了一个 SeriesGroupby , 它代表每一个组都有一个 Series 。
(3) 对 SeriesGroupby 进行操作, 比如 .mean(), 相当于对每个组的Series求均值。
(4) 在生成统计特征后,还要使用pandas.merge()函数将统计后的特征整合起来。
从0.20.1开始,pandas引入了agg函数。groupby 函数可以看做是基于行(或者说index)的聚合操作,而 agg 函数提供基于列的聚合操作。从实现上看,groupby 函数返回的是一个 DataFrameGroupBy 结构,这个结构必须调用聚合函数(如sum 函数),才会得到结构为Series的数据。而agg 函数是 DataFrame 的直接方法,返回的也是一个 DataFrame 。当然,很多功能用 sum、mean 等函数也可以实现。但是 agg 函数更加简洁。具体说明如下:
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.agg.html
我们可以进一步的,在AGG函数的基础上,编写统计特征生成函数,就是将以上工作整合到可复用的函数中。这样,不仅增加统计特征,而且使用便捷,直接调用即可,提高了开发效率。具体代码如下所示:
# 统计特征处理函数 # df: 添加特征的dataframe # df_group: 特征生成的数据集 # group_cols: group by 的列 # value_col: 被统计的列 # agg_ops:处理方式 包括:count,mean,sum,std,max,min,nunique # colname: 新特征的名称 def add_agg_feature_names(df, df_group, group_cols, value_col, agg_ops, col_names): df_group[value_col]=df_group[value_col].astype('float') df_agg = pd.DataFrame(df_group.groupby(group_cols)[value_col].agg(agg_ops)).reset_index() df_agg.columns = group_cols + col_names df = df.merge(df_agg, on=group_cols, how="left")
Docker生成新镜像版本的两种方式 There are two ways Docker can generate new m...
从 10.0.0 版开始,异步迭代器就出现在 Node 中了,在本文中,我们将讨论异步迭...
【51CTO.com快译】 数据可视化工具不断发展,提供更强大的功能,同时改善可访问...
2021年3月24日,主题为《数据的世界,世界的数据》的星环科技2021春季新品发布会...
建站 什么 虚拟主机 够用?这要看搭建的是什么类型的网站。比如个人博客类型的网...
在Python语言中有如下3种方法: 成员方法 类方法(classmethod) 静态方法(staticm...
本文整理自直播《Hologres 数据导入/导出实践-王华峰(继儒)》 视频链接: https:/...
摘要 元旦期间 订单业务线 告知 推送系统 无法正常收发消息,作为推送系统维护者...
信息化2.0时代提出开展智慧教育创新发展行动。2019年2月,中共中央、国务院印发...
前提条件 请您在购买前确保已完成注册和充值。详细操作请参见 如何注册公有云管...