阿里移动推荐算法大赛——基于用户-行为记录,即user_id - behaviour_type的数据集处理

 关于题目回顾与数据初探,可参考:天池离线赛 - 移动推荐算法(一):题目与数据解析,本文目的是想找出数据集中用户加购物车的行为behavior_type = 3与最终的购买行为behavior_type = 4是否是强关联的,为了进行分析,我们基于原始数据集构建一个新的数据集:

act_34={<'time', 'user_id', 'item_id', 'behavior_type'>}

代码如下:

# -*- coding: UTF-8 -*-

'''
@author: csw
'''

import os
import sys
import timeit
import pandas as pd

start_time = timeit.default_timer ()

'''
生成新数据集:
df_act_34 = {<time, user_id, item_id, behavior_type = 3 or 4>}
这里我们编写.csv文件多步来处理大规模数据。
'''

batch = 0
dateparse = lambda dates: pd.datetime.strptime (dates, '%Y-%m-%d %H')
#获取指定的时间和日期。datetime(%Y,%m,%d,%H,%M,%S)
for df in pd.read_csv (open ("../fresh_comp_offline/tianchi_fresh_comp_train_user.csv", 'r'),
                       chunksize=100000):
    try:
        df_act_34 = df[df['behavior_type'].isin ([3, 4])]
        df_act_34.to_csv ('../act_34.csv',
                          columns=['time', 'user_id', 'item_id', 'behavior_type'],
                          index=False, header=False,
                          mode='a')
        batch += 1
        print ('chunk %d done.' % batch)

    except StopIteration:
        print ("finish.")
        break
#捕捉异常可以使用try/except语句。try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。

try的工作原理是,当开始一个try语句后,python就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try子句先执行,接下来会发生什么依赖于执行时是否出现异常。

  • 如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。
  • 如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)。
  • 如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值