社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

使用 Python+PySpark 做用户画像

Python中文社区 • 5 年前 • 1513 次点击  


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

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

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

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

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

click_rate1数据如下:

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

click_rate2数据如下:

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

click_rate3_df数据如下:

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

click_rate5数据如下:

6、填充缺失值

click_rate6数据如下:

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

click_rate数据如下:

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

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

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

sources_df数据如下:

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

actions_df数据如下:

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

4、进行关联查询

interestTags数据如下:

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

导出后的数据如下:

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

赞 赏 作 者



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


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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/46644
 
1513 次点击