使用 Python+PySpark 做用户画像

640?wx_fmt=jpeg


作者:KingShine,现居北京,程序猿一枚。主要方向为数据分析、自然语言处理,大数据。希望结交到志同道合的朋友,共同进步。

一、数据准备
本文主要是作为一个PySpark的入手实例来做,数据来源网络。主要用到两个数据文件: action.txtdocument.txt。下表为 action.txt,数据格式: userid~docid~behaivor~time~ip,即:用户编码~文档编码~行为~日期~IP地址

640?wx_fmt=png

下表为 document.txt,数据格式: docid~channelname~source~keyword:score,即:文档编码~类别(大类)~主题(细类)~关键词:权重

640?wx_fmt=png

二、用户点击率
用户点击率即为 action.txt文件中每个用户behaivor列中1的数量除以0的数量。
1、创建 SparkSession对象

640?wx_fmt=png

2、读取数据,将数据根据‘~’拆分,获取 useridbehavior两列

640?wx_fmt=png

click_rate1数据如下:

640?wx_fmt=png

3、统计用户的各类行为数

640?wx_fmt=png

click_rate2数据如下:

640?wx_fmt=png

4、将 userid, behavior和数量取出作为3列,并转为DataFrame格式

640?wx_fmt=png

click_rate3_df数据如下:

640?wx_fmt=png

5、根据 userId进行分组,将 behavior列数据进行旋转作为列标数值为 cnt。并将 behavior的0和1替换为 “browse””click”

640?wx_fmt=png

click_rate5数据如下:

640?wx_fmt=png

6、填充缺失值

640?wx_fmt=png

click_rate6数据如下:

640?wx_fmt=png

7、将计算的数据作为新列添加到数据

640?wx_fmt=png

click_rate数据如下:

640?wx_fmt=png

8、将最后处理的数据保存到本地,关闭SparkSession

640?wx_fmt=png

最后保存到本地的数据为多个文件,每个文件的格式如下:

640?wx_fmt=png

640?wx_fmt=png

三、用户标签
使用主题(细类)给用户打标签
1、读取 docunment.txt,获取 docidsource两列,即文档编码和主题(细类)两列

640?wx_fmt=png

sources_df数据如下:

640?wx_fmt=png

2、读取 action.txt,只获取具有点击行为的 useriddocid数据,即 behavior为1的数据。

640?wx_fmt=png

actions_df数据如下:

640?wx_fmt=png

3、创建两个DataFrame的临时视图

640?wx_fmt=png

4、进行关联查询

640?wx_fmt=png

interestTags数据如下:

640?wx_fmt=png

5、将最后处理的数据保存到本地,关闭SparkSession

640?wx_fmt=png

导出后的数据如下:

640?wx_fmt=png

踩雷点:
1、代码开发时,可以每个操作跟一个action,方便查看数据,跑批的时候不需要每个都跟,只需要最后一个action,否则会给机器增加很多工作量。
2、中间过程生成的DataFrame必须先建立临时视图,后面才能使用,否则会报错。

赞 赏 作 者

640?wx_fmt=jpeg

Python中文社区作为一个去中心化的全球技术社区,以成为全球20万Python中文开发者的精神部落为愿景,目前覆盖各大主流媒体和协作平台,与阿里、腾讯、百度、微软、亚马逊、开源中国、CSDN等业界知名公司和技术社区建立了广泛的联系,拥有来自十多个国家和地区数万名登记会员,会员来自以工信部、清华大学、北京大学、北京邮电大学、中国人民银行、中科院、中金、华为、BAT、谷歌、微软等为代表的政府机关、科研单位、金融机构以及海内外知名公司,全平台近20万开发者关注。

640?wx_fmt=jpeg

▼ 点击成为社区注册会员          「在看」一下,一起PY

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值