《Python数据分析与挖掘实战》第12章(中)——协同推荐2 数据变换

本文为《Python数据分析与挖掘实战》第12章的中篇,聚焦数据预处理。内容包括数据清洗,如查看删除规则信息,使用Python进行数据库操作,删除特定规则的网址等,旨在为电子商务网站用户行为分析及服务推荐做准备。
摘要由CSDN通过智能技术生成

本文是基于《Python数据分析与挖掘实战》的实战部分的第12章的数据——《电子商务网站用户行为分析及服务推荐》做的分析。

由于此章内容很多,因此,分为三个部分进行分享——数据探索(上)、数据预处理(中)、模型构建(下)

_ 本文是继前一篇文章,进行的工作。 本文是“ 数据预处理(中) ” 部分 _

1 数据清洗

1.1 查看各个需要删除的规则包含的信息

    **# 删除规则1:** 统计中间类型网页(带midques_关键字)
[/code]

```code
    # 读取数据库数据
    engine = create_engine('mysql+pymysql://root:@127.0.0.1:3306/jing?charset=utf8')
    sql = pd.read_sql('all_gzdata', engine, chunksize = 10000)
    
    def countmidques(i): 
        j = i[['fullURL','fullURLId','realIP']].copy()
        j['type'] = u'非中间类型网页'
        j['type'][j['fullURL'].str.contains('midques_')]= u'中间类型网页'
        return j['type'].value_counts()
    counts1 = [countmidques(i) for i in sql]
    counts1 = pd.concat(counts1).groupby(level=0).sum()
    counts1
[/code]

![](https://img-
blog.csdn.net/2018021408162470?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjA2Mzc3Mw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

```code
    **# 删除规则2** :主网址去掉无.html点击行为的用户记录
[/code]

```code
    # 读取数据库数据
    engine = create_engine('mysql+pymysql://root:@127.0.0.1:3306/jing?charset=utf8')
    sql = pd.read_sql('all_gzdata', engine, chunksize = 10000)
    
    def countnohtml(i):
        j = i[['fullURL','pageTitle','fullURLId']].copy()
        j['type'] = u'有html页面'
        j['type'][j['fullURL'].str.contains('\.html')==False] = u'无.html点击行为的用户记录'
        
        return j['type'].value_counts()
    counts2 = [countnohtml(i) for i in sql]
    counts2 = pd.concat(counts2).groupby(level=0).sum()
    counts2
[/code]

![](https://img-
blog.csdn.net/20180214081904173?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjA2Mzc3Mw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)  

[/code]

```code
    **# 删除规则3:** 主网址是律师的浏览信息网页(快车-律师助手)、咨询发布成功、快搜免费发布法律
[/code]

```code
    # *备注:此规则中要删除的记录的网址均不含有.html,所以,规则三需要过滤的信息包含了规则2中需要过滤的
    engine = create_engine('mysql+pymysql://root:@127.0.0.1:3306/jing?charset=utf8')
    sql = pd.read_sql('all_gzdata', engine, chunksize = 10000)
    
    def countothers(i): 
        j = i[['fullURL','pageTitle','fullURLId']].copy()
        j['type'] = u'其他'   
        j['pageTitle'].fillna(u'空',inplace=True)
        j['type'][j['pageTitle'].str.contains(u'快车-律师助手')]= u'快车-律师助手'
        j['type'][j['pageTitle'].str.contains(u'咨询发布成功')]= u'咨询发布成功'
        j['type'][(j['pageTitle'].str.contains(u'免费发布法律咨询')) | (j['pageTitle'].str.contains(u'法律快搜'))] = u'快搜免费发布法律咨询'
        
        return j['type'].value_counts()
    counts3 = [countothers(i) for i in sql]
    counts3 = pd.concat(counts3).groupby(level=0).sum()
    counts3

_ ![](https://img-
blog.csdn.net/20180214082043376?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjA2Mzc3Mw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
_

    **# 删除规则4:** 去掉网址中问号后面的部分,截取问号前面的部分;去掉主网址不包含关键字
[/code]

```code
    engine = create_engine('mysql+pymysql://root:@127.0.0.1:3306/jing?charset=utf8')
    sql = pd.read_sql('all_gzdata', engine, chunksize = 10000)
    
    def deletquesafter(i):
        j = i[['fullURL']].copy()
        j['fullURL'] = j['fullURL'].str.replace('\?.*','')
        j['type'] = u'主网址不包含关键字'
        j['type'][j['fullURL'].str.contains('lawtime')] = u'主网址包含关键字'
        return j
    
    counts4 = [deletquesafter(i) for i i
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值