- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据分析之实例三:⽤户消费⾏为数据分析(⼀)
#user_id:⽤户id,order_dt:购买⽇期,order_products:购买产品数量,order_amount:购买⾦额
#数据时间:1997年1⽉-1998年6⽉的⾏为数据
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime
%matplotlib inline
#在⾏内显⽰
plt.style.use(ggplot)#更改绘图风格
plt.rcParams[font.sans-serif] = [Arial Unicode MS]#设置字体
#导⼊数据
columns=[user_id,order_dt,order_products,order_amount]
df=pd.read_table(cd_ma.txt,names=columns,sep=\s+) #sep=s\s+代表匹配任意空格
df
#1. ⽇期格式需要转换
#2.存在⼀个⽤户⼀天内购买多次
df.describe()
df[order_date]=pd.to_datetime(df[order_dt],format=%Y%m%d)
#format=%Y%m%d按照指定格式转成数据列,%Y代表四位的年,%m代表两位⽉,%d代表两位⽇,%y代表两位年,%h代表两位⼩时,%M代表两位分钟
df[month]=df[order_date].astype(datetime64[M])
#将order_date转化成精度为⽉份的数据列,astype(datetime64[M])精度转换,转成⽉份进度
df.head()
#按照⽉份统计购买产品数量,消费⾦额,消费次数,消费⼈数
plt.figure(figsize=(20,15))#单位时英⼨
#每⽉产品购买数量
plt.subplot(2,2,1)#绘制在两⾏两列第⼀个图中
df.groupby(month)[order_products].sum().plot()#默认折线图
plt.title(每⽉产品购买数量)
#每⽉的消费⾦额
plt.subplot(2,2,2)#绘制在两⾏两列第⼆个图中
df.groupby(month)[order_amount].sum().plot()#默认折线图
plt.title(每⽉的消费⾦额)
#每⽉消费次数
plt.subplot(2,2,3)#绘制在两⾏两列第三个图中
df.groupby(month)[user_id].count().plot()#默认折线图
plt.title(⽉消费次数)
#每⽉消费⼈数(根据user_id去重统计)
plt.subplot(2,2,4)#绘制在两⾏两列第三个图中
df.groupby(by=month)[user_id].apply(lambda x:len(x.drop_duplicates())).plot()
#apply(lambda x:len(x.drop_duplicates()))去重作⽤,然后⽤len()长度计算,作为⼈数数量的统计
plt.title(⽉消费次数)
#分析结果:前三个⽉销量⾮常⾼,后⾯下降然后基本趋于平稳
⽤户个体的消费分析
#1.⽤户消费⾦额,消费次数(产品数量)描述统计
user_grouped=df.groupby(by=user_id).sum()
user_grouped.describe()
#⽤户数237570,每个⽤户平均购买7个,但是中位数只有3个,并且最⼤值1033个,平均值⼤于中位数,明显右偏
#绘制⽤户的产品的购买数量与消费⾦额的散点图
df.plot(kind=scatter,x=order_products,y=order_amount)
#⽤户的消费分布图
plt.figure(figsize=(12,4))
plt.subplot(1,2,1)
plt.xlabel(每个订单的消费⾦额)
df[order_amount].plot(kind=hist,bins=50)
#bins区间分数,影响柱⼦的宽度,值越⼤柱⼦越细
plt.subplot(1,2,2)
plt.xlabel(每个uid购买数量)
df.groupby(by=user_id)[order_products].sum().plot(kind=hist,bins=50)
您可能关注的文档
- 苏教版小学3年级信息技术全套教案8278.pdf
- 智能电网发展及展望.pdf
- 【三套试卷】2021年开封市小学二年级数学下册第五单元教材检测题(附答案).pdf
- 2018漳州市初中毕业班质量检测数学试题及答案.pdf
- 2021年高考语文人教版大一轮复习练习:第二部分专题一练习六文言文的概括分析.pdf
- 一年级数学上册期末试卷(含答案).pdf
- 【全程复习方略】(福建专用)高中数学不等式和绝对值不等式训练理新人教A版选修4-5.pdf
- 科普版英语三年级下册Lesson5Let’srunarace单元教案.pdf
- 弧形屋面钢结构及围护系统的施工.pdf
- 【人教版】九年级化学(上册)期末综合检测及答案.pdf
文档评论(0)