电商用户行为分析(一)

电商用户行为分析

数据集使用了阿里巴巴提供的一个淘宝用户行为数据集–UserBehavior是,用于隐式反馈推荐问题的研究。该数据集包含了2017年11月25日至2017年12月3日之间,有行为的约一百万随机用户的所有行为(行为包括点击、购买、加购、喜欢)。由用户ID、商品ID、商品类目ID、行为类型和时间戳组成。
数据集的大致信息
我将记录自己对这个数据集的简单分析,通过使用pandas和mysql对数据做处理,使用pyplot来进行可视化。(由于该数据集过于庞大,设备的性能有限,本次实验中仅使用前10000000条数据)
下面是分析思路:
在这里插入图片描述

1.数据的清洗

首先导入一些我们会用到的包

import pandas as pd
from collections import Counter
from datetime import datetime
import matplotlib.pyplot as plt
import pymysql

先将数据导入,转换成一个df,由于数据本身是不带列名的,这里我们自己设置

df = pd.read_csv(r"2.csv")
df.columns = ['user_id', 'item_id', 'category_id', 'behavior_type', 'timestamp']

处理数据的重复值和缺失值

print(df.duplicated().sum())  # 查看重复值数量
df.drop_duplicates(inplace=True)
print(df.duplicated().sum())
print(df.isnull().sum())  # 查看缺失值

可以看出是没有缺失值的,只需要删除5条重复值即可
在这里插入图片描述
下面我们对这个时间戳进行转换

df['timestamp'] = pd.to_datetime(df['timestamp'], unit="s")
df["timestamp"] = df["timestamp"].astype(str)  # 转换为字符串方便后续处理
df1 = df["timestamp"].str.split(" ", 2, True)  # 将年月日与时分秒分开
df1.columns = ["date", "time"]
df = df.drop("timestamp", axis=1).join(df1)
df = df.sort_values(['date'])
print(df)

在这里插入图片描述
处理完后可以发现还是有很多不在正确时间段内的数据,我们将其删除

df = df.drop(df[(df.date < '2017-11-25') | (df.date > '2017-12-04')].index)
print(df)

在这里插入图片描述
至此基本完成了数据的预处理,下面我们将数据导入mysql中
首先在MySQL中创建一个表,表结构如下:
在这里插入图片描述

接下来使用pandas提供的to_sql来进行处理

conn = create_engine("mysql+pymysql://root:123456@localhost:3306/demo?charset=utf8")
df.to_sql(name="ubd", con=conn, index=False)

结果pychram一直在运行,但是数据缺无法导入,我猜想可能是我的设备性能的问题,于是自己写了一个分批导入

conn = create_engine("mysql+pymysql://root:123456@localhost:3306/demo?charset=utf8")
df.to_sql(name="ubd", con=conn, index=False)
for i in range(100000, 10000000+1, 100000):
df1 = df[i - 100000:i]
print('开始')
df1.to_sql(name="ubd", con=conn, index=False, if_exists='append')
print('完成' + str((i / 10000000)*100) + '%')

成功将数据导入
在这里插入图片描述
对比查询一下记录数也没有错误
在这里插入图片描述

在这里插入图片描述

2.数据分析

将数据导入完成后,就可以开始进行数据的分析了,我们需要从不同的角度去分析,找到能让营收额提高的策略,首先我们从整体的一个时间上来进行分析,找到用户的活动规律,以此为基础再来探究用户的行为爱好,用户消费价值等等。

2.1时间轴分析

由于数据的时间只有几天,我们就从这几天的维度来分析,找到突出的的日期,再从小时的维度来进行分析。首先我们查看一下在这几天总体的各类事件发生情况和每日的人流量。
在这里插入图片描述
下面我们从每一天来看,由于要用到数据可视化,因此再次使用python来访问mysql中的数据,来方便使用了pyplot进行数据可视化

import numpy as np
import matplotlib.pyplot as plt
from pymysql import Connect
import matplotlib.font_manager as fm

conn = Connect(host=
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值