电商用户行为分析案例--天池数据集User Behavior Data from Taobao

用户行为分析过程

说明

本次数据分析基于阿里云天池数据集(用户行为数据集),使用转化漏斗,对常见电商分析指标,包括转化率,PV,UV,复购率等进行分析,分析过程中使用Python进行数据的清洗,清洗后的数据导入MySQL数据库,运用MySQL进行数据提取,使用Excel进行数据可视化。

另写了一篇博文,是基于本文入库的数据。在Python环境下,连接MySQL进行取数,并用pyecharts做了一个简单的可视化仪表板。有兴趣的小伙伴,看完本篇博文后,可以移步到:
电商用户行为分析案例–天池数据集User Behavior Data from Taobao(python环境MySQL操作+Pyecharts可视化)

一、数据集

在这里插入图片描述
该数据集记录用户在淘宝网站浏览商品产生的行为数据。

二、提出问题

1、整体用户的购物情况
PV(总访问量)、日均访问量、UV(用户总数)、有购买行为的用户数量、用户的购物情况、复购率分别是多少?

2、用户行为转化漏斗
点击-加购物车-收藏-购买各环节转化率如何?购物车遗弃率是多少,如何提高?

3、购买率高和购买率为0的人群有什么特征?

4、基于RFM模型的用户分析

5、商品销售的一些情况

三、数据清洗

数据清洗用Python的pandas处理,效率会高很多。

#导入相关包
import numpy as np
import pandas as pd
import time

#导入原始数据
data=pd.read_csv(r'E:\date\aliyun_taobao\UserBehavior.csv',header=None,index_col=None)

#更新列名
columns=['User_Id','Item_Id','Category_Id','Behavior_type','Timestamp']
data.columns=columns

#观察数据集情况
data.head()

#查询缺失值情况
data.isnull().sum()

#时间戳列有1个缺失值,查看缺失值列
data[data.iloc[:,4].isnull()]

#时间戳缺失值列,用户行为为'P',这个数据也是异常。查看数据集中用户行为种类
data.iloc[:,3].unique()

#用户行为每个种类有多少数据
data.iloc[:,3].value_counts()

#缺失值只有1列,直接删除。并重置索引
data.dropna(axis=0,inplace=True)
data.reset_index(drop=True,inplace=True)

#时间戳列转换为日期、时间数据。并把日期和时间分为两列
data.loc[:,'Timestamp']=data['Timestamp'].apply(lambda x:time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(x)))
data.loc[:,'Date']=data['Timestamp'].apply(lambda x:x.split(' ')[0])
data.loc[:,'Time']=data['Timestamp'].apply(lambda x:x.split(' ')[1])

#把时间戳列删除
data=data.drop(columns='Timestamp',axis=1)

#原始数据日期区间为2017-11-25到2017-12-03,这个时间区间外认为是异常数据。查看一下具体情况
data[data['Date']<'2017-11-25'].shape

data[data['Date']<'2017-11-25']['Date'].value_counts()

data[data['Date']>'2017-12-03'].shape

data[data['Date']>'2017-12-03']

#时间区间外的日期数据剔除
data=data[(data['Date']>='2017-11-25')&(data['Date']<='2017-12-03')]

#查看重复数据
data[data.duplicated()]
#删除重复数据
data.drop_duplicates(inplace=True)
#充值索引
data.reset_index(drop=True,inplace=True)
#数据清洗完成,导出到本地
data.to_csv(r'E:\date\aliyun_taobao\UserBehavior_Done.csv',index=False)

至此,数据清洗完成,把清洗后的数据导入MySQL数据库。

四、数据导入MySQL

-- 建立数据库
create database test;
-- 建立表格
user test;
-- 创建表格
create table user (
	user_id 
<think>好的,我现在要帮用户解决关于如何使用Hadoop进行电商用户行为分析以及数据源的问题。首先,我需要理清用户的需求。用户可能对Hadoop的整个处理流程不太熟悉,特别是数据来源和处理步骤。他们可能想知道从哪里获取数据,如何存储,如何处理,以及最后如何分析。 首先,我得考虑数据源部分。常见的电商数据包括用户浏览日志、购买记录、购物车操作、搜索关键词等。这些数据通常以结构化或半结构化的形式存在,比如日志文件或数据库导出。可能需要提到公开的数据集,比如天池数据集或者Kaggle上的资源,这样用户有实际的例子可以参考。 接下来是数据采集和存储。用户可能需要了解如何将数据导入Hadoop,这里需要提到Flume和Sqoop。Flume用于实时日志采集,适合处理日志流;Sqoop则用于从关系型数据库导入数据到HDFS。这部分需要具体说明工具的使用场景和基本命令,比如flume的配置文件和sqoop的导入命令。 然后是数据处理和分析。Hive和MapReduce/Spark是常用的工具。Hive适合进行SQL-like的查询,方便统计用户行为指标,比如PV、UV。而MapReduce或Spark可以进行更复杂的分析,比如用户分群或推荐算法。这里需要举一些例子,比如如何用Hive计算每日PV,或者用Spark MLlib做协同过滤。 数据可视化部分,可能需要提到将结果导出到MySQL,然后用ECharts或Tableau生成图表。这里需要说明Sqoop导出数据到MySQL的步骤,以及可视化工具的基本使用方法。 最后,教程资源部分,应该推荐一些官方文档、书籍和在线课程,帮助用户深入学习。比如《Hadoop权威指南》或者Coursera上的相关课程。 同时,我需要确保回答符合之前的系统级指令:使用正确的中文,数学公式用$...$,独立公式用$$...$$,但可能在这个问题中用到的数学公式不多。不过如果有涉及统计指标,比如计算平均值或回归分析,可能需要用到。但用户的问题主要关于流程和工具,可能数学公式较少。 还要注意引用之前的参考内容,比如引用[1]和[2]中提到的Hadoop在电商分析中的应用,以及数据处理的流程。例如,在数据存储部分提到HDFS,数据处理提到Hive和Spark,这些都需要自然地加入引用标记。 生成相关问题时要考虑用户可能的后续问题,比如数据清洗的具体方法、性能优化、或推荐算法实现,这样可以预先提供扩展的问题,帮助用户深入探索。 现在需要检查是否有遗漏的步骤,比如数据预处理、清洗,或者安全性的考虑,但用户的问题主要集中在数据源和教程,可能不需要太深入。不过适当提及这些步骤可以展示完整的流程。 最后,确保语言口语化,结构清晰,分步骤说明,让用户能一步步跟随操作。避免使用专业术语过多,必要时解释术语,比如HDFS、Flume等。</think>### Hadoop电商用户行为分析实施指南 #### 一、数据源获取与处理 1. **典型数据源类型** - 用户行为日志:包括浏览、点击、加购、支付事件,格式示例: ```json {"user_id": "U123", "action": "click", "item_id": "I456", "timestamp": "2023-09-20T14:35:22"} ``` - 结构化业务数据:用户属性表、商品信息表(MySQL/Oracle存储) - 公开数据集阿里天池电商数据集、Kaggle Retailrocket数据集[^2] 2. **数据采集技术栈** - 日志采集:使用Flume配置多级Agent,实时捕获Nginx日志 ```properties # Flume agent配置示例 agent.sources = tail-source agent.channels = mem-channel agent.sinks = hdfs-sink ``` - 数据库同步:通过Sqoop每日增量导入 ```bash sqoop import --connect jdbc:mysql://DB_HOST/ecommerce \ --table user_behavior --target-dir /user/hive/warehouse/behavior ``` #### 二、Hadoop平台数据存储 1. **HDFS存储优化** - 采用**ORC文件格式**存储,压缩比提升60%以上 - 分区策略:按`date=20230920`进行时间分区 - 使用Hive元数据管理: ```sql CREATE EXTERNAL TABLE user_actions ( user_id STRING, action STRING, item_id STRING ) PARTITIONED BY (dt STRING) STORED AS ORC; ``` #### 三、核心分析场景实现 1. **用户行为漏斗分析** ```sql SELECT SUM(CASE WHEN action='pv' THEN 1 ELSE 0 END) AS pv, SUM(CASE WHEN action='cart' THEN 1 ELSE 0 END) AS cart, SUM(CASE WHEN action='buy' THEN 1 ELSE 0 END) AS buy FROM user_actions WHERE dt BETWEEN '20230901' AND '20230930'; ``` 通过MapReduce实现漏斗转化率计算: $$ \text{转化率} = \frac{\text{下一阶段用户数}}{\text{当前阶段用户数}} \times 100\% $$ 2. **用户分群模型** 使用Spark MLlib构建RFM模型: ```scala val kmeans = new KMeans() .setK(5) .setFeaturesCol("scaledFeatures") ``` #### 四、可视化与输出 1. **数据服务架构** ``` Hive → Sqoop → MySQL → ECharts ``` - Sqoop导出命令: ```bash sqoop export --connect jdbc:mysql://BI_SERVER/report \ --table user_funnel --export-dir /user/hive/warehouse/funnel ``` 2. **可视化案例** - 热力图展示用户活跃时段分布 - 桑基图呈现行为路径转化 #### 五、学习资源推荐 1. **官方文档** - [HDFS Architecture Guide](https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html) - [Flume User Guide](https://flume.apache.org/releases/content/1.9.0/FlumeUserGuide.html) 2. **实践教材** - 《Hadoop构建数据仓库实践》(ISBN 9787121382655) - Coursera专项课程《Big Data Analysis with Hadoop and Spark》
评论 85
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值