dateframe取某列数据_Pandas数据处理与特征处理

0585f7a428b52c039c6f650b438572ed.png

1. 目的

了解使用pandas数据处理
下面操作相对复杂些, 写的比较粗糙
如果那些看不明白, 可以留言, 我会花些时间整理

1.1 数据样例

数据来源:天池新人实战赛o2o优惠券使用预测

User_id,Merchant_id,Action,Coupon_id,Discount_rate,Date_received,Date
13740231,18907,2,100017492,500:50,20160513,null
13740231,34805,1,null,null,null,20160321
14336199,18907,0,null,null,null,20160618
15137031,25104,2,100120354,150:50,20160613,null
15137031,44706,2,100071973,50:5,20160317,null

1.2 字段说明

  • Coupon_id: 优惠券ID:null表示无优惠券消费,此时Discount_rate和Date_received字段无意义
  • Discount_rate: 优惠率:x in [0,1]代表折扣率;x:y表示满x减y。单位是元
  • Distance: user经常活动的地点离该merchant的最近门店距离是x*500米(如果是连锁店,则取最近的一家门店),xin[0,10];null表示无此信息,0表示低于500米,10表示大于5公里;
  • Date_received: 领取优惠券日期
  • 消费日期:如果Date=null & Coupon_id != null,该记录表示领取优惠券但没有使用,即负样本;如果Date!=null & Coupon_id = null,则表示普通消费日期;如果Date!=null & Coupon_id != null,则表示用优惠券消费日期,即正样本;

1.3 环境准备

import pandas as pd
df = pd.read_csv("example.csv")

2. 数据处理

2.1 列变换

2.1.1 单列变换

  • 针对单列进行null 替换, 生成新列
df['newDate'] = df.Date.replace("null", 0)

# Date列, 分段映射
def mapDate(x):
    if(x=="null"):
        return 0
    elif(x<=20160501):
        return 1
    else:
        return 2
df.Date.apply(lambda x: mapDate(x))
df['Action'].apply(lambda x: 1 if (x>=0 and x<=15) else 0)
  • 计算折扣率
In [28]: def discountFuc(x):
   ....:         list_discount = x.split(":")
   ....:         if(x=="null"):
   ....:                 return 0.1
   ....:         elif(len(list_discount)==2):
   ....:                 return round(float(list_discount[1]) / float(list_discount[0]), 3)
   ....:         else: 
   ....:                 return list_discount[0]
   ....:
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值