我的编程空间,编程开发者的网络收藏夹
学习永远不晚

dataframe两列相乘构造新特征的示例分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

dataframe两列相乘构造新特征的示例分析

这篇文章主要介绍了dataframe两列相乘构造新特征的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

假如我们要构建新特征b

目的是从a中筛选出数值在4~6之间的数据,如果符合就是True,否则就是False。

那么代码如下

import pandas as pdlists=pd.DataFrame({'a':[1,2,3,4,5,6,7,8,9]})lists['b']=(lists['a']<6).mul(lists['a']>4)

补充:dataframe求两列的相乘,再将输出为新的一列

看代码吧~

df["new"]=df3["rate"]*df3["duration"]

new为新的一列的列名

rate和duration为需要相乘的列

加,减,乘,除都适用!

补充:DataFrame衍生新特征操作

1.DataFrame中某一列的值衍生为新的特征

#将LBL1特征的值衍生为one-hot形式的新特征piao=df_train_log.LBL1.value_counts().index#先构造一个临时的dfdf_tmp=pd.DataFrame({'USRID':df_train_log.drop_duplicates('USRID').USRID.values})#将所有的新特征列都置为0for i in piao:    df_tmp['PIAO_'+i]=0#进行分组便利,有这个特征就置为1,原数据每个USRID有多条记录,所以分组统计group=df_train_log.groupby(['USRID'])for k in group.groups.keys():    t = group.get_group(k)    id=t.USRID.value_counts().index[0]    tmp_list=t.LBL1.value_counts().index    for j in tmp_list:        df_tmp['PIAO_'+j].loc[df_tmp.USRID==id]=1

2.分组统计,选出同一USRID下该变量中出现次数最多的值项

group=df_train_log.groupby(['USRID'])lt=[]list_max_lbl1=[]list_max_lbl2=[]list_max_lbl3=[]for k in group.groups.keys():    t = group.get_group(k)    #通过value_counts找出出现次数最多的项    argmx = np.argmax(t['EVT_LBL'].value_counts())    lbl1_max=np.argmax(t['LBL1'].value_counts())    lbl2_max=np.argmax(t['LBL2'].value_counts())    lbl3_max=np.argmax(t['LBL3'].value_counts())    list_max_lbl1.append(lbl1_max)    list_max_lbl2.append(lbl2_max)    list_max_lbl3.append(lbl3_max)    #只留下出现次数最多的项    c = t[t['EVT_LBL']==argmx].drop_duplicates('EVT_LBL')    #放入list中    lt.append(c)#构造一个新的dfdf_train_log_new = pd.concat(lt)#另外又构造了三个特征,LBL1-LBL3分别出现次数最多的项df_train_log_new['LBL1_MAX']=list_max_lbl1df_train_log_new['LBL2_MAX']=list_max_lbl2df_train_log_new['LBL3_MAX']=list_max_lbl3

3.衍生出某天是否发生的ont-hot新特征

#创造临时df,星期三,星期六,星期七,都默认置为0df_day=pd.DataFrame({'USRID':df_train_log.drop_duplicates('USRID').USRID.values})df_day['weekday_3']=0df_day['weekday_6']=0df_day['weekday_7']=0#分组统计,有就置为1,没有置为0group=df_train_log.groupby(['USRID'])for k in group.groups.keys():    t = group.get_group(k)    id=t.USRID.value_counts().index[0]    tmp_list=t.occ_dayofweek.value_counts().index    for j in tmp_list:        if j==3:            df_day['weekday_3'].loc[df_tmp.USRID==id]=1        elif j==6:            df_day['weekday_6'].loc[df_tmp.USRID==id]=1        elif j==7:            df_day['weekday_7'].loc[df_tmp.USRID==id]=1

4.查看用户一共停留在APP上多少秒,共有几天看了APP

dataframe两列相乘构造新特征的示例分析

#首先将日期转化为时间戳,并赋予一个新特征tmp_list=[]for i in df_train_log.OCC_TIM:    d=datetime.datetime.strptime(str(i),"%Y-%m-%d %H:%M:%S")    evt_time = time.mktime(d.timetuple())    tmp_list.append(evt_time)df_train_log['time']=tmp_list#每下一行减去上一行,得到app停留时间df_train_log['diff_time']=df_train_log.time-df_train_log.time.shift(1)#构造一个新的dataFrame,分组得到查看app的天数df_time=pd.DataFrame({'USRID':df_train_log.drop_duplicates('USRID').USRID.values})#有几天查看df_time['days']=0group=df_train_log.groupby(['USRID'])for k in group.groups.keys():    t = group.get_group(k)    id=set(t.USRID).pop()    df_time['days'].loc[df_time.USRID==id]= len(t.occ_day.value_counts().index)#去掉一些异常时间戳,比如间隔两天的相减,肯定不合适,na的也去掉了df_train_log=df_train_log[(df_train_log.diff_time>0)&(df_train_log.diff_time<8000)]#累计停留时间group_stayTime=df_train_log['diff_time'].groupby(df_train_log['USRID']).sum()#创造新的dfdf_tmp=pd.DataFrame({'USRID':list(group_stayTime.index.values),'stay_time':list(group_stayTime.values)})#合并成一个新的dfdf=pd.merge(df_time,df_tmp,on=['USRID'],how='left')#合并后,缺失的停留时间,置为0df.fillna(0,axis=1,inplace=True)

dataframe两列相乘构造新特征的示例分析

感谢你能够认真阅读完这篇文章,希望小编分享的“dataframe两列相乘构造新特征的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网行业资讯频道,更多相关知识等着你来学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

dataframe两列相乘构造新特征的示例分析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

dataframe两列相乘构造新特征的示例分析

这篇文章主要介绍了dataframe两列相乘构造新特征的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。假如我们要构建新特征b目的是从a中筛选出数值在4~6之间的数据,
2023-06-15

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录