1126总结python项目练习01

2018-11-27  本文已影响0人  夜希辰
1126总结python项目练习01

照着敲了一遍代码,完全没有任何思路。主要是根本就不知道要分析什么指标。文中几乎没有代码,如果要看代码可以去知乎看秦路老师的7周7成为数据分析师。写这篇文章的目的是总结思路。最主要适用的人就是自己,如果你看见了这篇文章就当故事吧

长胖的梅梅……

学习时间:6:20-7:20、6:25-7:10、9:10—10:50

11:30睡觉,5:40起床。仰卧起坐100,胖到90斤了……

关于学习时间想到了吴漾的三句话

1-每天学习5小时早上学习2小时晚上学习3小时

2-为什么每天学习3个小时不满足勒?

3-你宁愿睡觉也不愿意学习,说明你不喜欢学习

4-学习的标准是什么?喜欢学习的标准是什么,不喜欢学习的标准是什么

小节:很久没看三大思维课程,又回到了迷茫的思路。

反思:每天早上学习 80分钟,下班回来70分钟,吃完饭不到九点就可以开始学习11点半睡觉吧。这周练习完python下周开始学习r语言或者统计学

python用了两个月还没学好,崩溃……这周在练习个项目,今天就可以把用户CD总结完

下面是运用python分析CD消费行为分析过程,原文参考7周7。另外没任何截屏代码和图形

Python:用户消费行为分析

数据:用户购买CD的明细,列标题包括:用户ID、购买日期、购买数量、购买金额。数据大小:6列,69659行跟着秦路老师的分析敲了一遍代码还是不懂。问题:我们拿到这份数据主要分析什么?自己练习一遍后知道主要解决的问题是:如何提高CD销量

一、导入常用的库

pandas\numpy\datatime\matplotlib.pyplot1、因为原数据没有列标题,需要我们自己定义列标题。使用names = columns = [‘user_id’ ‘user_dt’ ‘user_products’ ‘user_amount’]2、用read导入数据集。Pd.read_csv(……)Read_csv和read_table都是加载带分隔符的数据

3、观察数据。涉及到数据格式的转换

df.head()、

查看数据类型。在数据中经常会出现时间数据用文本格式表示,需要将表达时间的时间数据转换为时间格式。

Pd.to_datatime(df.order_dt,format = ‘%Y%m%d’)

df.describe()

生成描述性统计数据。Max mean max std max

Df.info()

查看数据是否有空值

备注:消费类的数据都是长尾形态,大部分用户都是小额,小部分用户贡献了大头,俗称28定律。

pd.to_datetime(列名,format=?)可以将特定的字符串或者数字转换成时间格式

二、

上面的数据粒度是每笔订单,我们转化成每一位用户看一下

1、 不知道数据粒度是什么意思

2、 用groupby(‘user_id’).sum(),创建一个新的对象

3、 按月分析绘制图形

Df.groupby(‘month’).order_amount.sum().plot()

绘制折线图。查看每个月的销量情况、并且绘制成图形。

4、 统计每月销售金额并绘制图形

折线图

Df.groupby(‘month’).order_products.sum().plot()

前期每月销售金额和销售数量都呈现出早起销量多,后期平稳下降趋势。分析为什么会出现这个现象勒?假设用户身上出了问题、假设前期各种促销方案

感悟:如果用我的脑子分析到这里就分析不下去了,每月销量与销售金额图形绘制了感觉就完事了。接着看秦路老师下面的分析过程。

三、

1、查看销售量和销售额之间的关系

每笔订单的散点图(分析粒度不同):

Df.plot.scatter(x = ?,y=?).订单消费金额和订单量呈规律性。分析判断数据是有有极致异常值。

每个id的散点图:

先将数据根据ID分组,在绘制散点图

2、绘制直方图

绘制CD销量直方图

绘制每个用户消费金额的直方图

秦路老师分析:从直方图上可以观察,大部分用户的消费能力确实不敢,高消费用户在图上几乎看不出来,这也确实符合消费行业的消费规律

粒度单笔订单:每月总销量折线图、每个总消费金额折线图、销量与消费金额关系散点图、绘制销量的直方图(判断销量频率)

粒度用户ID:每个ID购买量和购买金额的散点图、每个ID都买数量的直方图

总而言之就是在粒度为每笔订单的时候分析销量和消费额的关系,以月为单位。在粒度为每位用户的时候分析销量和消费金额的关系。

感悟:跟着敲代码,惊讶于每个炫酷的图形,现在在梳理分析思维

四、

观察完消费量与金额的关系,下面来看一下消费时间节点的关系。分析粒度用户ID

1、 查看用户第一次消费时间:

既月份的最小值

2、 查看用户最后一次消费时间

既按ID分组,在选取分组后的最大值,是根据每组判断最大值最小值。可以用values_counts计数(如4月份最后一次消费有多少人)

秦路老师分析:所有用户的第一次消费都集中在前三个月,绝大部分数据依然集中在前三个月,后续的时间段内,依然有用户在消费,但是缓慢减少。可以解释销量异常值的原因。

五、

分析复购率和回购率,需要将数据进行透视

1、 数据透视函数:

df.pivot_table(index = ? , column = ?, values = ?, aggfunc = ? )

index是设置数据透视后的索引,column是设置数据透视后的列,values是将哪个值进行计算,aggfunc是用哪种方法.

Index = user_id , column = month, values = order_dt, aggfunc = counts

文中分析,每个用户每个月的消费次数

数据透视后是结构化的表,将数据进行转化,本月购买两次的用户记为1,购买1次的几位0,没有购买记为空值(数据转换现在还不是很了解,自己回去百度,好像入行的都是用的gogle)

1、 复购率:在某时间窗口内消费两次及以上的用户在总消费用户中占比。这里是以每月为单位。

透视表.sum/透视表.count (在列操作,回去操作一下是否默认是axis = 0)

求出每月的复购率并绘制成折线图

秦路老师分析折线图:复购率在早期,因为大量新用户加入的关系,新客的复购率并不高,譬如1月新客们的复购率只有6%左右。而在后期,这时的用户都是大浪淘沙剩下的老客,复购率比较稳定,在20%左右。

单看新客和老客,复购率有三倍左右的差距

2、 回购率

A、

回购率是某一个时间窗口内消费的用户,在下一个时间窗口仍旧消费的占比。因为是横向对比,所以会比较难

这里是将消费金额进行数据透视,用了平均值

Index = user_id , column = month, values = order_amount, aggfunc = mean

将数据进行转化,只要有过购买记为1,没有购买记为0.使用的函数是applymap+lambda

B、

在回购率透视表基础上新建判断函数:

新建一个判断函数。data是输入的数据,即用户在18个月内是否消费的记录,status是空列表,后续用来保存用户是否回购的字段。

未完,明天继续更新

上一篇下一篇

猜你喜欢

热点阅读