【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"
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值