Python产品画像推荐 python做用户画像_数据保存





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



一、数据准备



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



Python产品画像推荐 python做用户画像_数据_02



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



Python产品画像推荐 python做用户画像_数据_03



二、用户点击率



用户点击率即为 action.txt文件中每个用户behaivor列中1的数量除以0的数量。



1、创建 SparkSession对象



Python产品画像推荐 python做用户画像_数据保存_04



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



Python产品画像推荐 python做用户画像_数据保存_05



click_rate1数据如下:



Python产品画像推荐 python做用户画像_数据_06



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



Python产品画像推荐 python做用户画像_ci_07



click_rate2数据如下:



Python产品画像推荐 python做用户画像_数据保存_08



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



Python产品画像推荐 python做用户画像_Python产品画像推荐_09



click_rate3_df数据如下:



Python产品画像推荐 python做用户画像_Python产品画像推荐_10



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



Python产品画像推荐 python做用户画像_Python产品画像推荐_11



click_rate5数据如下:



Python产品画像推荐 python做用户画像_ci_12



6、填充缺失值



Python产品画像推荐 python做用户画像_Python产品画像推荐_13



click_rate6数据如下:



Python产品画像推荐 python做用户画像_数据_14



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



Python产品画像推荐 python做用户画像_Python产品画像推荐_15



click_rate数据如下:



Python产品画像推荐 python做用户画像_ci_16



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



Python产品画像推荐 python做用户画像_数据_17



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



Python产品画像推荐 python做用户画像_Python产品画像推荐_18

Python产品画像推荐 python做用户画像_数据保存_19



三、用户标签



使用主题(细类)给用户打标签



1、读取 docunment.txt,获取 docidsource两列,即文档编码和主题(细类)两列



Python产品画像推荐 python做用户画像_ci_20



sources_df数据如下:



Python产品画像推荐 python做用户画像_数据_21



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



Python产品画像推荐 python做用户画像_数据保存_22



actions_df数据如下:



Python产品画像推荐 python做用户画像_数据保存_23



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



Python产品画像推荐 python做用户画像_ci_24



4、进行关联查询



Python产品画像推荐 python做用户画像_ci_25



interestTags数据如下:



Python产品画像推荐 python做用户画像_数据_26



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



Python产品画像推荐 python做用户画像_数据保存_27



导出后的数据如下:



Python产品画像推荐 python做用户画像_Python产品画像推荐_28



踩雷点:



1、代码开发时,可以每个操作跟一个action,方便查看数据,跑批的时候不需要每个都跟,只需要最后一个action,否则会给机器增加很多工作量。



2、中间过程生成的DataFrame必须先建立临时视图,后面才能使用,否则会报错。