【Python】数据分析——用户行为
前言
用户量数据分析有几个关键步骤
1.获取用户行为数据(一般就是埋点数据)
2.对所有获取到的数据进行第一遍数据筛选
3.筛查后的数据进行基础的数据整理(主要就是数据的分组聚合等操作)
4.整理完成的数据转换成需要输出的数据格式(输出到文件,数据库等)
第一步
获取用户行为数据
一般用户的行为数据在数据库,比较多的由mysql,mongo,es等
本次就以es为例:
1.初始化es对象
Python学习交流Q群:906715085###
from elasticsearch import Elasticsearch
# 初始化es
es = Elasticsearch(
['10.10.3.13:19200', '10.10.3.15:19200', '10.10.3.41:19200'], # 连接集群,以列表的形式存放各节点的IP地址
sniff_on_start=True, # 连接前测试
sniff_on_connection_fail=True, # 节点无响应时刷新节点
sniff_timeout=60 # 设置超时时间
# 除开链接指定的IP地址外,其他的都可以不设置,使用默认值
)
2.获取es数据:这里写的比较简单,条件只有请求的时间范围,调用es的search方法查询,参数为index:索引名,doc_type:类型名,body:查询语句,这里完全就是dll语句,相比于java来说简单了很多
def get_es_data(startTime, endTime):
query = { "query": { "range": { "requestTime": { "gte": startTime, "lte": endTime } } },"size": 50000 }all_search = es.search(index="bury_point_log", doc_type="main", body=query) res = all_search['hits']['hits'] return res
在对这个语句的查询过程中,有一个弊端,数据量过大的时候,size也必须设置的很大,导致查询效率特别低,另外一种方式就是使用聚合语句,把本来要在panda中要做的事情,先在es中做掉一部分
这个查询效率就特别快
def get_es_data_agg(): query = { "query": { "range": { "requestTime": { "gte": "2022-05-01 00:00:00", "lte": "2022-05-31 23:59:59" } } }, "aggs": { "appName": { "terms": { "field": "appName", "size": 10 }, "aggs": { "user": { "terms": { "field": "userId", "size": 100000 } } } } } } all_search = es.search(index="bury_point_log", doc_type="main", body=query)
第二步
对数据进行筛选,把获取到的数据转成成DataFrame,利于后续进行分组聚合
Python学习交流Q群:906715085###
def show_pd_message(items): res = [] for item in items: content = item['_source'] appTypeName = '' if content.get('appName') == '1': appTypeName = '家长端' elif content.get('appName') == '2': appTypeName = '教师端' elif content.get('appName') == '3': appTypeName = '后台' content_filter = {'appName': appTypeName, 'clientIp': content['clientIp'], 'module': content['requestRemark'], 'requestTime': content['requestTime'], 'userId': content['userId']} res.append(content_filter)indexs = [(i + 1) for i in range(len(res))] columns = ['appName', 'clientIp', 'module', 'requestTime', 'userId']pd_res = pd.DataFrame(res, columns=columns, index=indexs) return pd_res
这里就是把需要的字段筛选出来,配合上colums和index,转换成panda对象。
第三步
数据整理
以对每个客户端用户数量进行统计为例,先对各客户端以及用户Id进行分组聚合,出来的对象再转换成需要的字典或者列表数据
def get_user_num(pd_res):
# 各端使用人数
# print(''' #
------------------各客户端数据使用情况(人次)--------------------- # ''')
result1 = pd_res.groupby(['appName', 'userId'], as_index=False).agg({'module': 'size'})
res = result1.to_dict('records') # print(result1)
res1 = {}
for item in res:
if item['appName'] in res1.keys():
if item['userId'] != 'null':
origin_value = list(res1[item['appName']])
origin_value.append({item['userId']: item['module']})
res1.update({item['appName']: origin_value})
else:
res1.update({item['appName']: [{item['userId']: item['module']}]})# print(res1) return res1
第四步
数据输出
一般数据出来后,就会输出到数据库或者文件中,这里简单点就直接控制台打印出来
def user_num_data_anylsis(user_all_res):
family_user = '' teacher_user = '' for item in user_all_res: if '家长端' in item.keys(): family_user_list = list(item['家长端'])
family_user = family_user + str(len(family_user_list)) + ','
else:
family_user = family_user + '0,'if '教师端' in item.keys():
teacher_user_list = list(item['教师端']) teacher_user = teacher_user + str(len(teacher_user_list)) + ',' else: teacher_user = teacher_user + '0,'print(last_month_next_start.split('-')[1] + "月:\n家长端人数" + family_user.split(',')[0] + "次\n教师端人数" + teacher_user.split(',')[0] + "人") print(last_month_start.split('-')[1] + "月:\n家长端人数" + family_user.split(',')[1] + "次\n教师端人数" + teacher_user.split(',')[1] + "人") # 环比 huanbi = ((int)(family_user.split(',')[1]) - (int)(family_user.split(',')[0])) / (int)( family_user.split(',')[0]) * 100 print('家长端人数:' + last_month_start.split('-')[1] + '月环比' + str(round(huanbi, 2)) + '%') huanbi1 = ((int)(teacher_user.split(',')[1]) - (int)(teacher_user.split(',')[0])) / (int)( teacher_user.split(',')[0]) * 100 print('教师端人数:' + last_month_start.split('-')[1] + '月环比' + str(round(huanbi1, 2)) + '%')
最后的结果:
这一章的知识到这里就结束了,整体来说还是非常简单的,闲的无聊的时候拿来练手真的很nice,喜欢的小伙伴记得点赞收藏。
【Python】数据分析——用户行为相关推荐
- python数据分析:用户消费情况数据分析
本次分析数据介绍: 数据为某奶茶店2018年1月-2019年6月的销售数据,共计69,659项数据,用户共计23,570名: 数据集共4个字段: user_id: 用户id order_id: 购买日 ...
- python数据分析可视化实例_Python数据分析及可视化实例之基于Kmean分析RFM进行用户关怀...
系列文章总目录:Python数据分析及可视化实例目录 数据集下载 Python数据分析及可视化实例之全国各城市房价分析(含数据采集) Python数据分析及可视化实例之帝都房价预测 Python数据分 ...
- Python数据分析之用户留存
Python数据分析之用户留存 前言 概览 数据预处理和数据集探究 规范列名 删除多余的列 dummy化类别型特征 探究通话时间与费用的关系 探究流失率 添加平均通话时长 可视化缺失值分布 训练模型 ...
- Python数据分析高薪实战第十二天 网络服务用户流失预测分析和国产电视剧评分预测分析
29 综合实战:网络服务用户流失预测与分析 绝大多数互联网公司都面临一个非常重要的问题:用户流失问题.随着互联网和移动互联网的充分发展,发展新用户(也就是一般所说的拉新)的成本越来越高,往往要几块或者 ...
- python数据分析实战之用户分析及RFM模型分析
理论基础知识可以看我之前的博客: 1.python之Numpy知识点详细总结 2.python最最最重要的数据分析工具之pandas 3.pandas之表连接与高级查询 也可以进入我的专栏:欢迎订阅哦 ...
- 作业3(大作业):python数据分析与应用大作业,对用户用电量数据进行数据处理,包括数据转置、异常数据识别和处理、统计基本统计量(包括峰度、偏度)、按日/周(求和)差分、5%分位数等
Python数据分析与应用大作业 使用学习过的知识(Numpy数值分析基础.Matplotlib数据可视化基础.Pandas统计分析基础),对data.csv用户用户用电量数据进行相关处理,其中数据中 ...
- python数据分析及可视化(十五)数据分析可视化实战篇(抖音用户数据分析、二手房数据分析)
python数据分析的实战篇,围绕实例的数据展开分析,通过数据操作案例来了解数据分析中的频繁用到的知识内容. 抖音用户数据分析 1.理解数据 数据字段含义 了解数据内容,确保数据来源是正常的,安全合法 ...
- 《Python数据分析与挖掘实战》一3.1 数据质量分析
本节书摘来自华章出版社<Python数据分析与挖掘实战>一书中的第3章,第3.1节,作者 张良均 王路 谭立云 苏剑林,更多章节内容可以访问云栖社区"华章计算机"公众号 ...
- Python数据分析可以应用到哪些领域
随着大数据的应用越来越广泛,应用的行业也越来越多,我们每天都可以看到一些关于数据分析的新鲜应用,从而帮助人们获取到有价值的信息.例如,网购时经常发现电商平台向我们推荐商品,往往这类商品都是我们最近浏览 ...
- 靠Python数据分析已赚10w的本科生,附赠学习资料
今天小编给大家推荐一个Python终身学习者:老表,他是开源学习组织Datawhale终身成员,有一年半的Python编程学习经验,热爱爬虫与数据分析,掌握了Python Web开发框架 Flask, ...
最新文章
- python join split
- 手把手教你用线性回归预测二手房房价
- nginx域名配置虚拟主机
- mysql replication principle--转
- Matlab之switch-case语句
- springboot中如何获取yml配置文件中的配置信息
- 学长毕业日记 :本科毕业论文写成博士论文的神操作20170406
- boost::geometry::tag用法的测试程序
- 我的博客网站开发6——博文关键字搜索
- 设计模式(五)--工厂模式汇总
- uploadify动态改变参数
- MaxCompute,基于Serverless的高可用大数据服务 1
- /proc/cpuinfo文件分析(查看CPU信息)
- Objective-C学习准备__C语言6
- Servlet chapter 2
- 解决Windows桌面部分快捷方式图标变为空白的问题
- 定期360评估系统优于年度绩效考核
- oa系统客户端服务器ip端口,致远oa客户端服务器ip
- 微信公众号小程序实战开发vue3+nodejs+koa2+mysql+nginx阿里云部署教程
- 常用统计量及其常见分布