京东数据分析——以Python为主要工具


  • 数据探索分析
  • 用户购买行为建模

数据基本情况

1.数据来源
2.数据概况
3.本文内容

1.探索分析

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
plt.style.use('ggplot')
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
df = pd.read_csv('JDdata.csv')
df.head()
customer_id product_id action_date action_id type age_range gender customer_register_date customer_level city_level brand shop_id category product_market_date vender_id fans_number vip_number shop_register_date shop_category shop_score
0 1068082 5924 2018/4/1 3853455 PageView 6.0 W 2012/8/13 1 4.0 Li-Ning 8002 Badminton 2013/6/14 1457 213610 357580 2013/5/23 Outdoor Sports
1 1068082 10723 2018/4/1 3853455 PageView 6.0 W 2012/8/13 1 4.0 Li-Ning 8002 Badminton 2011/7/19 1457 213610 357580 2013/5/23 Outdoor Sports
2 735392 4559 2018/2/6 9434940 PageView 6.0 M 2009/9/15 7 5.0 Other 6944 Cookie 2015/11/16 355 63969 85597 2014/10/31 Food
3 1516193 374293 2018/3/17 2105553 PageView 6.0 M 2016/5/25 1 4.0 illuma 3830 Milk Power 2017/12/25 25 11576 20927 2016/12/16 Mother and Infant
5 1160556 285165 2018/2/4 8914730 PageView 6.0 M 2012/3/11 7 4.0 Other 744 Coat 2016/5/16 8627 180250 52606 2016/5/16 Clothes
#数据清洗与数据类型变换,将时间变为标准时间格式
df=df.dropna(how='any',axis=0)
df['action_date']=pd.to_datetime(df.action_date)
df['customer_register_date']=pd.to_datetime(df.customer_register_date)
df['shop_register_date']=pd.to_datetime(df.shop_register_date)
df['product_market_date']=pd.to_datetime(df.product_market_date)
#查询用户购买行为情况
order_comment=df.query("type=='Order'| type=='Comment' " )
order_comment.sort_values(by='action_date',ascending=True)
order_comment['month']=order_comment.action_date.values.astype('datetime64[M]')#根据用户购物的月份生成数据透视表,汇总每月购物的用户
order_month=order_comment.groupby(by='month')
order_count_by_month=order_month.customer_id.count()
plt.figure(1,figsize=(10,4)) #生成图表,生成两张子图
plt.subplot(1,2,1)
order_count_by_month.plot() #子图1 每月购物的用户数
plt.subplot(1,2,2)
order_count_by_month.plot.bar() #子图2 每月订单数
plt.title('每月订单数量')
plt.xlabel('月份')
plt.show()


从2018年2月到3月,用户订单有所增长,并在3月达到顶峰,从3月到4月,订单数量大量下降

#根据用户等级将用户分组,并统计各个等级的用户数
level_order=order_comment.groupby(by='customer_level').customer_id.count()
level_order
Out[20]:customer_level1    38243      624      305    33196    28927    3321
Name: customer_id, dtype: int64
level_order_ratio=level_order/(level_order.sum())
level_order_ratio
Out[21]:customer_level1    0.2843553    0.0046104    0.0022315    0.2468026    0.2150517    0.246951
Name: customer_id, dtype: float64
plt.figure(figsize=(10,4))
plt.subplot(1,2,1)
plt.pie(level_order_ratio,labels=level_order_ratio.index)
plt.subplot(1,2,2)
level_order.plot.bar()


会员等级为1/5/6/7的用户消费占9成以上,会员等级为3/4的用户仅占非常少量,而等级为2的用户并没有消费

#根据性别将购物的用户分组,并计算不同性别产生购物行为的比例
(order_comment.groupby(by='gender').customer_id.count())/(order_comment.customer_id.count())Out[23]:
gender
M    0.571386
W    0.428614
Name: customer_id, dtype: float64

消费者中男性占比为57%左右,而女性占41.7%

#分析男女性再不同品类的消费情况
gen_cata_ptable=order_comment.pivot_table(index='shop_category',columns='gender',values='type',aggfunc='count').plot.bar(figsize=(12,4),color='gb')
plt.title('男女性的品类消费情况',fontsize=20)
plt.xlabel('消费品类')
plt.xticks(fontsize=15)
plt.show()


(1)在化妆品、电子产品及家具方面,男性和女性的消费基本持平,而在衣服、食物的消费方面,男性远远多于女性
(2)在家具消费珠宝首饰等方面,男性多于女性
(3)在户外运动消费品方面、家用电子产品发面,女性高于男性

order_comment.pivot_table(index='shop_category',columns='gender',values='type',aggfunc='count')
shop_category gender
- M W
Beauty Makeup 1832 1883
Clothes 1428 357
Electronics 75 55
Food 2180 1053
Furniture 415 319
Household Eletric Appliance 726 944
Jewellery Accessories 707 535
Mother and Infant 150 186
Outdoor Sports 171 432
#查询不同年龄等级的用户购物行为情况
order_comment.groupby(by='age_range').type.count().plot()


从上图分析得出,年龄等级为5的订单更多

order_comment['register_year']=order_comment.customer_register_date.values.astype('datetime64[Y]')
order_comment.groupby(by='register_year').type.count().plot()


由上图可知,在订单中,2015-2017年注册的用户最多

order_comment.groupby(by='city_level').type.count().plot.bar()


由上图可知,订单中的用户主要来自于1、3、4、5的四个地区。

2.建立用户消费行为预测模型

  • 自变量
    1.行为变量(日期)
    2.人口学变量(年龄,性别) 性别标签化
    3.账户变量(注册日期,用户级别,城市级别)
  • 因变量
    用户购买行为
#导入sklearn
from sklearn import linear_model
from sklearn.linear_model import LogisticRegression as LR
from sklearn.linear_model import RandomizedLogisticRegression as RLR
from sklearn.preprocessing import LabelEncoder,OneHotEncoder
from sklearn.preprocessing import MinMaxScaler,StandardScaler
import sklearn.preprocessing as preprocessing
from sklearn import model_selection
from sklearn.model_selection import train_test_split
#将因变量的不同取值转换为1或0,此处产生了购买行为为1,未发生购买行为为0
df=df.replace("Order",1)
df=df.replace("Comment",1)
df=df.replace("PageView",0)
df=df.replace("Follow",0)
df=df.replace("SavedCart",0)deal=df[['action_date','type','age_range','gender','customer_register_date','customer_level','city_level','shop_score']]
deal['action_date']=deal.action_date.astype('datetime64[M]')
deal['customer_register_date']=deal.customer_register_date.astype('datetime64[M]')
#将时间标准化
deal['register_time']=StandardScaler().fit_transform(deal['customer_register_date'].values.reshape(-1,1)).reshape(1,-1)[0]
deal['action_time']=StandardScaler().fit_transform(deal['action_date'].values.reshape(-1,1)).reshape(1,-1)[0]#将各个变量进行标签编码
deal['type']=LabelEncoder().fit_transform(deal.type).reshape(-1,1).reshape(1,-1)[0]
deal['age_range']=LabelEncoder().fit_transform(deal.age_range).reshape(-1,1).reshape(1,-1)[0]
deal['gender']=LabelEncoder().fit_transform(deal.gender).reshape(-1,1).reshape(1,-1)[0]
deal['customer_level']=LabelEncoder().fit_transform(deal.customer_level).reshape(-1,1).reshape(1,-1)[0]
deal['city_level']=LabelEncoder().fit_transform(deal.city_level).reshape(-1,1).reshape(1,-1)[0]#将时间转换成整数类型,去掉时间单位
deal['time']=deal.action_date.max()-(deal.action_date)
deal['time']=deal.time/np.timedelta64(1,'D')
deal['register_time']=deal.customer_register_date.max()-(deal.customer_register_date)
deal['register_time']=deal.register_time/np.timedelta64(1,'D')deal=deal[['type','age_range','gender','customer_level','city_level','time','register_time']]
deal['time']=deal.time.astype(int)
deal['register_time']=deal.register_time.astype(int)
#逻辑回归分析
#提取自变量
y=deal.type
#提取因变量
x=deal[['age_range','gender','customer_level','city_level','time','register_time']]
#拆分数据集,分为训练集与测试集
X_train, X_test, y_train, y_test = model_selection.train_test_split(x, y, test_size = 0.25, random_state = 1234)
#利用训练集建模
sklearn_logistic = linear_model.LogisticRegression()
sklearn_logistic.fit(X_train,y_train)
#返回模型参数
print(sklearn_logistic.intercept_, sklearn_logistic.coef_)[Out]:[-1.77332045] [[ 2.55656312e-02  3.10479735e-01 -1.63262949e-02 -3.03207628e-04-4.12853141e-03 -1.82303009e-04]]

截距为-1.77332045,其他为各个变量的相关系数。

#利用热力图呈现变量之间的相关关系
import seaborn as sns
deal.corr()
sns.heatmap(deal.corr(),vmin=-1,vmax=1,cmap=sns.color_palette("RdBu_r", 18))
plt.savefig('deal.png', dpi=300,bbox_inches = 'tight')
plt.show()

  • 结论:此处建模失败,建议从另外的角度再探索模型…

    • 男性注册得比较早
    • 注册时间越早,会员等级越高
    • 其他变量之间呈弱相关关系

京东用户行为数据分析——以Python为主要工具相关推荐

  1. 天池-淘宝用户行为数据分析(python+Tableau)

    天池-淘宝用户行为数据分析(python+Tableau) 一.背景 ​ 用户行为分析可以让产品更加详细.清楚地了解用户的行为习惯,从而找出网站.app.推广渠道等产品存在的问题,有助于产品发掘高转化 ...

  2. sql查询当天交易总额最大的用户信息_京东用户行为数据分析(SQL)

    一. 项目背景 项目对京东零售集团的运营数据集进行指标分析,研究京东用户在购物过程中的行为习 惯,购物偏好,在购物过程中各个环节的转化和流失情况,为运营决策提供数据支撑. 二. 数据介绍 本数据集采用 ...

  3. Python+SQL实战:京东用户行为数据分析案例解析(下)

    freedom_lime | 作者 掘金 | 来源 https://juejin.im/post/6844904202590748679#heading-0 4. 用户行为转化漏斗 # 导入相关包 f ...

  4. 2天,我把数据分析的Python+Tableau+Excel工具撸干净了!

    春节回家,看到朋友晒的年终奖,我羡慕不已. 他入职腾讯一年半,拿了3个月工资作为年终奖.据他所说,这还不算什么,网易<哈利波特·魔法觉醒>项目组,所有员工奖励888888元-- 虽然说并不 ...

  5. python 爬虫-京东用户评论数据和用户评分

    python 爬虫-京东用户评论数据和用户评分 在京东页面查找(例如:oppo r15),选择第一个商品点击进入. 点击第一个评论页面: 点击第二个评论页面: 第三个评论页面: 发现第二页和第三页的网 ...

  6. 淘宝APP用户行为数据分析案例(附python代码及注释)

    淘宝APP用户行为数据分析案例 一.分析背景与目的 1.1背景与数据限制 电商平台的最核心的功能就是为买卖双方提供高效和体验良好的交易服务.得益于算法技术的发展,淘宝APP给买方提供了搜索.推荐及广告 ...

  7. 基于python的数据分析系统,python数据分析经典案例

    大家好,本文将围绕利用python进行数据分析案例展开说明,基于python的数据分析系统是一个很多人都想弄明白的事情,想搞清楚基于python的数据分析题目需要先了解以下几个事情. 1.如何利用py ...

  8. 数据分析真题日刷 | 京东2019校招数据分析工程师笔试题

    今日真题 网易2018校园招聘数据分析工程师笔试卷(来源:牛客网) 题型 客观题:单选51道,不定项选择12道 完成时间 120分钟 牛客网评估难度系数 3颗星 ❤️ 「更多数据分析真题」 <数 ...

  9. 京东2020校招数据分析工程师 —— 选择题盲点整理(2019.8.24)

    套题 京东2020校招数据分析工程师笔试题 题型 选择 * 30 + 编程 * 2 完成时间 120分钟 完整题目不可能记得啦,针对盲点,补一补. ❤️ 「更多数据分析真题」 <数据分析真题日刷 ...

  10. 大数据可视化python_大数据分析之Python数据可视化的四种简易方法

    本篇文章探讨了大数据分析之Python数据可视化的四种简易方法,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入. < 数据可视化是任何数据科学或机器学习项目的一个重要组成部分 ...

最新文章

  1. 树莓派c语言输出pwm波,树莓派硬件PWM输出程序
  2. JVM类加载机制(ClassLoader)源码解析
  3. LeetCode MySQL 1211. 查询结果的质量和占比
  4. java连接zookeeper_java 学习笔记(四) java连接ZooKeeper
  5. 【转载】pyinstaller的使用和几个坑
  6. 那些年学过的Hibernate笔记
  7. opencv cv2.copyMakeBorder()函数详解
  8. Tableau+财务领域数据分析+应用
  9. 更改 matlab java 版本_64位 JDK 1.8 调用Matlab 2017b打包的jar
  10. 我的理想200字计算机工程师,我的理想工程师作文(我的理想是做一名工程师)...
  11. HCNE的110个知识点
  12. 11.03 CSS的基础应用
  13. 【西祠日志】【17】初识AngularJS,下一代Web应用的前端
  14. Hadoop -- hadoop介绍
  15. [Android]Toolbar
  16. 2011年高考模拟命题作文读我
  17. 深度学习之CNN卷积神经网络详解以及猫狗识别实战
  18. 你的眼中满是“变量”,可“变量”眼中是无相(Python)(Java与Python学习通法)
  19. ThingsBoard架构简介
  20. 【JY】YJK前处理参数详解及常见问题分析:控制信息(二)

热门文章

  1. 洛谷每日三题之第四天
  2. console口 - 配置口
  3. Oracle学习3:dual详解
  4. gwipr70驱动天空_win7 kmplayer plus设置_gwi pr2 pluswin7驱动_kmplayerplus官方下载
  5. 神经网络容易受到对抗攻击,网络攻防原理与技术
  6. 阿里数据中台与OneData
  7. 超万支团队报名,历时4个月,阿里云原生编程挑战赛即将决出最后赢家
  8. 手机无线如何共享给台式计算机,怎么把电脑网络共享给手机上网
  9. 快速解绑微信公众号管理员
  10. visual basic与python_学visual basic还是 python?