首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >用户画像准确性评测初探 ——拨开python大数据分析的神秘面纱

用户画像准确性评测初探 ——拨开python大数据分析的神秘面纱

作者头像
腾讯移动品质中心TMQ
修改于 2018-07-18 07:39:58
修改于 2018-07-18 07:39:58
4.7K3
举报

导读

本文主要包括两部分内容,第一部分会对零零散散进行了两个多月的用户画像评测做个简要回顾和总结,第二部分会对测试中用到的python大数据处理神器pandas做个整体介绍。

Part1 用户画像评测回顾与总结

1、为什么做用户画像评测?

将时钟拨回到2018年初,大家迫切想打破以往资讯推荐无章可循的局面,而今日的推荐算法也似乎演成了神话,用户意图这个词在WiFi管家团队被一再提及,继而AI推荐布局被推到了前台。

用户意图识别的优劣取决于对用户实时需求的了解程度,此事古来难。AI团队率先做的尝试是在一些特定场景下猜测用户意图,进行意图相关推荐,如住酒店用户,地铁上用户等,这是算法可以做的事情,那测试在这个过程中可以做些什么呢?算法验证相对滞后,有什么可以先行的呢?用户意图识别首要识别对用户场景,如果场景错了,后面的工作就无法关联起来。如,住酒店,是个动态场景,尝试进一步拆分成可衡量的静态场景,如,什么人(性别,工作,偏好等)?什么时间(出行时间)住什么酒店(酒店位置,级别等)?这些我们是有后套标签系统的,经过了解这些标签系统已经有些尝试应用,但是标签本身准确性却无从评估,因此,用户标签准确性评测就在懵懂中筹备开始了。

2、用户画像准确性怎么做?

感谢先行者浏览器团队,提供了最初的评测思路,他们的考虑很周全。而我在具体的实践过程中,根据业务的实际情况制定了最终的评测方案(下图),从第一轮标签提取开始,就暴露出各种细节问题,好在都一一解决了。

简单列下可供后来者借鉴的几个注意项:

(1)  问卷设计的原则:每一个问卷题目与后台标签对应关系提前考虑好,有的一对一有的一对多。问卷的每一个选项要与对应标签的取值对应好关系,这会大大简化后期脚本处理工作。

(2)  问卷下发回收:最初下发了label数量>9的用户,用>8的用户补了1k,结果实际回收率不到50%,于是追加了>8的全量用户,总共4k多个,实际回收依然不足1k,而此间耗费了将近2周的时间。

(3)  关键字选取:整个过程关键字是imei,但下发问卷时,众测平台关键字却是qq,这就在数据处理上又需要多一层转换处理了。

(4)  标签系统提数:标签系统的数据是周期性更新,更新频率高,建议问卷回收后进行二次提数,尽可能减少时间差造成的数据不一致。

(5)  脚本处理:因为涉及的数据量比较大,涉及到比较多文件的处理,强烈建议装两个库,jupyter notebook(交互式笔记本,可及时编写和调试代码,很好用),还有一个大数据处理的pandas,对于excel的操作实在便利太多。

(6)  经纬度处理:经纬度数据没法下发问卷,因此问卷题目设计成问具体地址,大楼,小区等。数据转换接入了地图的逆地址解析接口,然后再对比具体位置信息,这里的对比也是纠结了1天时间,最终精确到2个中文字符的维度。

3、用户画像准确性怎么分析?

至问卷回收完毕,实际工作才完成一半,接下来就是远超预估的复杂繁琐的数据处理及分析过程了。我想用下面这张图来描述整个分析过程。

整个分析包括四部分:

(1)  黄框:活跃用户数据处理。

  1. 为什么要做? 活跃用户主要下发问卷前用,这里为什么还需要做分析呢?这里的分析工作是可以省掉的,方案最后会说,先来看这里的目标是什么。因为问卷没有收集imei数据,而lable标签是根据imei进行统计的,因此这里需要多做一层merge处理,以使问卷可以补足缺失的imei信息。
  2. 是否可优化?是否存在风险? 细心的读者可能已经发现,这里存在一个隐患!可能导致样本数量减少,因为用户的qq和imei其实不是一一对应的,可能存在一对一或一对多情况,如果下发imei用户更换qq完成了问卷,这里的merge就会导致部分样本数据反查不到imei数据从而丢失样本。庆幸的是本次测试丢失样本数不到10个,否则我可能要从头再来了。
  3. 如何规避? 在用户问卷设计中让用户主动反馈imei信息。前期设计没有考虑清楚key值的设计造成了这个隐患,同时还增加了分析的工作量。

(2)  蓝框:系统lable数据处理。

  1. 为什么要做? 细心的读者会发现,系统lable在最初已经提取了,用于做单个用户lable数量的过滤分析,这里还可以直接用原来的数据么? 答案是非常不建议!因为后台数据会周期性更新,最初提取的数据已经不能表征问卷用户当前的上报数据了。所以lable数据重新提取这一步不能省。

(3)  红框:问卷数据处理。

  1. 为什么要做? 问卷设计的原则是便于用户理解选择,与代码数据上报实现差异很大,所以这里的数据解析是必须的,也是结果分析最核心的部分。
  2. 做了什么? 这里我花费了大量的时间写脚本、调试,这里大量采用pandas,感谢它大大简化了我的代码量。为了便于大家熟悉了解pandas的用法,我这里会截取部分代码来看。

Action1:drop冗余数据

经验:感谢pandas,定义droplist,通过dataframe的drop方法,两行代码:

Action2:按lableid重新定义列名

Action3:常规各列数据处理(举个栗子)

(4)绿框:diff结果分析

  1. 做了什么? 在脚本处理上经纬度会更复杂,但思路大同小异,便于解说,这里以常规数据举例。

关键点1:利用dataframe将一行取出来存成array:

关键点2:定义diffresult文件列名:

关键点3:遍历每一列数据,过滤掉不存在lable:

关键点4:循环遍历比较系统数据和用户数据:

在本part最后,再总结下不足,主要有如下三方面:

(1)  样本覆盖全面性不够:覆盖具有局限性,不能代表所有的用户;

(2)  无法全自动化监控:问卷设计及提数暂时无法自动化,也就仅限于一次摸底;

(3)  样本数量不足:单个用户的标签不全,导致标签整体数量偏少。

Part2 pandas使用总结

1、jupyter环境准备(web交互式笔记本,python快速编码运行调试神器)。

(1)pip install jupyter

解决:下载ipython-5.7.0-py2-none-any.whl,notebook-5.5.0-py2.py3-none-any.whl放到python的Scripts目录下,pip install xxx.whl。

(2)再次pipinstall jupyter

(3)使用jupyter notebook

new-选择对应类型可打开交互式笔记本界面。

2、Pandas擅长做什么?

(1)快速读写csv、excel、sql,以原表数据结构存储,便捷操作处理行、列数据;

(2)数据文档行列索引快速一键重定义;

(3)强大的函数支持大数据文件的快速统计分析;

(4)可以对整个数据结构进行操作,不必一行行循环读取……

如果您有上述需求,不妨继续往下看。

3、pandas安装

(1)安装:一般用pip,安装第三方库前不妨先更新下pip。

python -m pip install -U pip

pip install pandas

(2)导入

import pandas as pd

(3)  帮助

查看python第三方库帮助,利用python自带pydoc文档生成工具

Step1:配置pydoc服务

Cmd下python –m pydoc –p 1234

Step2:浏览器打开http://localhost:1234/

 4、Pandas数据结构

series:带标签的一维数组,标签可以重定义。

dataframe:二维表格性数组,导入读取的csv、excel就是这种结构,可以直接对行列做操作。

举个例子:

读取表格——得到类型是DataFrame的二维数组question_data:

其中的一列df[‘num’]就是一维数组series,像个竖起来的list。

5、pandas的数据处理

(1)数据检索处理。

(a)查询首尾;

(b)查询某行,列;

注意:iloc、loc、ix(尽量用ix,避免搞不清楚index和行号)。

loc:主要通过index索引行数据。df.loc[1:]可获取多行,df.loc[[1],[‘name’,’score’]]也可获取某行某列iloc:主要通过行号索引行数据。与loc的区别,index可以定义,行号固定不变,index没有重新定义的话,index与行号相同。

ix:结合loc和iloc的混合索引。df.ix[1],df.ix[‘1’]。

(c)按条件查询指定行和列;

(d)多条件查询;

(2)数据增删改处理。

(a)增删行;

(b)增删列;

(c)行列数据相连:参看(3)(c)。

(3)多表数据处理;

(a)merge;

eg:合并两张表:

stu_score1 = pd.merge(df_student, df_score, on='Name')——内连接,交集。

stu_score1

stu_score2 =pd.merge(df_student, df_score, on='Name',how='left')——左连接,以左边为准。

stu_score2

how参数:inner(默认),left,right,outer,分别为内、左、右、外连接,inner为交集,outer为并集。

(b)join——how原则同merge,默认how=‘left’

主用于索引拼接列,两张表不同列索引合并成一个DataFram,比较少用。

(c)concat——axis=0,按行合并,axis=1,按列合并

stu_score2 = pd.concat([df_student,df_score], axis=0)。

stu_score2

(4)数据统计处理;

(a)df.describe()

根据某列计算一系列统计值,df[‘xxx’].describe(),返回如下数据表:

(b)df.set_index(‘列a’)与df.reset_index(‘列a’)

需要对某列数据处理时可以通过set_index()设为索引,再用df.sort_index()进行排序,然后再通过reset_index()设回数据。

(5)文件读写处理;

以csv为例

df = pd.read_csv("D:/pandas_test.csv", encoding='utf-8')

df.to_csv(r"D:\test.csv", index=False,sep=',', encoding='utf_8_sig')

写文件时设置encoding='utf_8_sig'可解决中文乱码问题。

(6)数据集批量处理。

(a)apply和applymap

 df[‘’].apply(函数)对某列数据应用函数,df.applymap(函数)对整个表应用函数。

(b)groupby

根据某列或某几列分组,本身没有任何计算,返回,用于做分组后的数据统计,如:

group_results = total_result.groupby(['lable', 'diff_value']).size()返回每个分组的个数,常用的有max(),min(),mean()

如上是本次脚本分析涉及到的功能,此外,pandas还有作图功能,这次暂未用到,就不展开说啦。

版权所属,禁止转载!!!

关注腾讯移动品质中心TMQ,获取更多测试干货!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-07-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯移动品质中心TMQ 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
3 条评论
热度
最新
谢谢大佬的分享,首次问卷调查就考这篇文章了
谢谢大佬的分享,首次问卷调查就考这篇文章了
回复回复点赞举报
如果分发的用户质量不高,回收问卷太少怎么办?
如果分发的用户质量不高,回收问卷太少怎么办?
回复回复点赞举报
太赞了,真是篇好文章
太赞了,真是篇好文章
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
数据分析之Pandas(一)
今日来谈谈数据分析的pandas使用,本来今天出cs231n的全连接网络更新的,结果没写成文章,太长了,至少2000-3000字,今晚有课,所以就没写成,明天继续搞,而且这个题难度有点大,所以消化一下,在分享! 今天主要是学习pandas,下面一起来实战吧!
公众号guangcity
2019/09/20
1.5K0
数据分析之Pandas(一)
【数据分析】用户画像分析
摘要: 伴随着大数据应用的讨论、创新,个性化技术成为了一个重要的落地点。相比传统的线下会员管理、问卷调查、购物篮分析,大数据第一次使得企业能够通过互联网便利地获取用户更为广泛的反馈信息,为进一步精准、快速地分析用户行为习惯、消费习惯等重要商业信息,提供了足够的数据基础。伴随着对人的了解逐步深入,用户画像的概念悄然而生。 用户画像 用户画像,能够完美地抽象出一个用户的信息全貌,可以看作企业应用大数据的根基。 什么是用户画像? 举例而言,某位客户的特征描述为:男,31岁,收入一万以上,爱美食,团购达人,
陆勤_数据人网
2018/02/27
3.9K0
【数据分析】用户画像分析
Python数据分析之Pandas(三)
: | -----: | ------: | -----: | --------: | | 0 | 1 | 1193 | 5 | 978300760 | | 1 | 1 | 661 | 3 | 978302109 | | 2 | 1 | 914 | 3 | 978301968 | | 3 | 1 | 3408 | 4 | 978300275 | | 4 | 1 | 2355 | 5 | 978824291 |
yuanshuai
2022/08/22
1.5K0
Python数据分析之Pandas(三)
python数据分析之pandas超详细学习笔记
join参数的属性,如果为’inner’得到的是两表的交集,如果是outer,得到的是两表的并集。
远方的星
2021/07/31
1.6K0
python数据分析之pandas超详细学习笔记
用 Pandas 进行数据处理系列 二
获取行操作df.loc[3:6]获取列操作df['rowname']取两列df[['a_name','bname']] ,里面需要是一个 list 不然会报错增加一列df['new']=list([...])对某一列除以他的最大值df['a']/df['a'].max()排序某一列df.sorted_values('a',inplace=True,ascending=True) , inplace 表示排序的时候是否生成一个新的 dataFrame , ascending=True 表示升序,默认为升序,如果存在缺失的补值( Nan ),排序的时候会将其排在末尾
zucchiniy
2019/10/30
8.6K0
数据分析之路—python基础学习
Python安装:直接安装Anaconda环境可以方便很多,Anaconda内置了很多Python包,使用起来很方便,另外推荐使用Python3版本,Python2目前已经停更。
23号杂货铺
2019/09/27
9720
数据分析之路—python基础学习
系统性的学会 Pandas, 看这一篇就够了!
Numpy已经能够帮助我们处理数据,能够结合matplotlib解决部分数据展示等问题,那么pandas学习的目的在什么地方呢?
小F
2021/08/20
4.3K0
系统性的学会 Pandas, 看这一篇就够了!
Python数据分析实战(2)使用Pandas进行数据分析
Pandas的使用很灵活,最重要的两个数据类型是DataFrame和Series。
cutercorley
2020/08/26
4.3K0
Python 数据分析与可视化:开启数据洞察之旅(5/10)
在当今数字化时代,数据就像一座蕴藏无限价值的宝藏,等待着我们去挖掘和探索。而 Python,作为数据科学领域的明星语言,凭借其丰富的库和强大的功能,成为了开启这座宝藏的关键钥匙,在数据分析和可视化领域占据着举足轻重的地位。
正在走向自律
2025/05/10
7870
Python 数据分析与可视化:开启数据洞察之旅(5/10)
【Python环境】Python数据分析入门
本文来分享一下如何通过Python来开始数据分析。 具体内容如下: 数据导入 导入本地的或者web端的CSV文件; 数据变换; 数据统计描述; 假设检验 单样本t检验; 可视化; 创建自定义函数。 数据导入 这是很关键的一步,为了后续的分析我们首先需要导入数据。通常来说,数据是CSV格式,就算不是,至少也可以转换成CSV格式。在Python中,我们的操作如下: import pandas as pd # Reading data locally df = pd.read_csv('/Users/al-a
陆勤_数据人网
2018/02/26
1K0
【Python环境】Python数据分析入门
Python 数据分析初阶
这里可以单独查看其中的内容 data['nick'],计算其中的大小则使用 data['nick'].value_counts()。
zucchiniy
2020/05/22
1.5K0
利用Python进行数据分析笔记
本书讲的是利用Python进行数据控制、处理、整理、分析等方面的具体细节和基本要点。我的目标是介绍Python编程和用于数据处理的库和工具环境,掌握这些,可以让你成为一个数据分析专家。虽然本书的标题是“数据分析”,重点却是Python编程、库,以及用于数据分析的工具。这就是数据分析要用到的Python编程。
CtrlX
2023/03/21
5.4K0
利用Python进行数据分析笔记
python数据分析之pandas包
相关系数和协方差唯一值值计数及成员资格处理缺失数据层次化索引数据透视生成重排分级次序根据级别汇总统计列索引转为行索引读取文件导出文件数据库风格的DataFrame合并pandas知识体系图
用户7886150
2020/12/26
1.3K0
Python数据分析实战之技巧总结
需求:pandas处理多列相减,实际某些元素本身为空值,如何碰到一个单元格元素为空就忽略了不计算,一般怎么解决!
DataCharm
2021/02/22
2.7K0
Python数据分析实战之技巧总结
【Python环境】Python中的结构化数据分析利器-Pandas简介
Pandas是python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,并于2009年底开源出来,目前由专注于Python数据包开发的PyData开发team继续开发和维护,属于PyData项目的一部分。Pandas最初被作为金融数据分析工具而开发出来,因此,pandas为时间序列分析提供了很好的支持。 Pandas的名称来自于面板数据(panel data)和python数据分析(data analysis)。panel data是经济学中关于多维数据集的一个术
陆勤_数据人网
2018/02/27
15.7K0
Python数据分析实验二:Python数据预处理
文章相关资源可参考我的GitCode仓库:https://gitcode.com/Morse_Chen/Python_data_analysis
Francek Chen
2025/01/22
4350
Python数据分析实验二:Python数据预处理
python大数据分析实例-用Python整合的大数据分析实例
用Python进行数据分析的好处是,它的数据分析库目前已经很全面了,有NumPy、pandas、SciPy、scikit-learn、StatsModels,还有深度学习、神经网络的各类包。基本上能满足大部分的企业应用。用Python的好处是从数据抽取、数据收集整理、数据分析挖掘、数据展示,都可以在同一种Python里实现,避免了开发程序的切换。
全栈程序员站长
2022/09/03
5.3K0
python大数据分析实例-用Python整合的大数据分析实例
Python数据分析作业二:Pandas库的使用
  Pandas(Python Data Analysis Library)是基于是基于 NumPy 的数据分析模块,它提供了大量标准数据模型和高效操作大型数据集所需的工具,可以说 Pandas 是使得 Python 能够成为高效且强大的数据分析环境的重要因素之一。
Francek Chen
2025/01/22
6460
Python数据分析作业二:Pandas库的使用
python数据分析——数据预处理
数据预处理是数据分析过程中不可或缺的一环,它的目的是为了使原始数据更加规整、清晰,以便于后续的数据分析和建模工作。在Python数据分析中,数据预处理通常包括数据清洗、数据转换和数据特征工程等步骤。
鲜于言悠
2024/03/20
1.3K0
python数据分析——数据预处理
Pandas必会的方法汇总,数据分析必备!
用Python做数据分析光是掌握numpy和matplotlib可不够,Pandas是必须要掌握的一个重点,numpy虽然能够帮我们处理处理数值型数据,但是这还不够,很多时候,我们的数据除了数值之外,还有字符串,还有时间序列等,比如:我们通过爬虫获取到了存储在数据库中的数据。
小F
2021/09/14
6.6K0
相关推荐
数据分析之Pandas(一)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档