CD用户消费行为分析

开始于:2020-02-19
目前在做消费行为的学习项目。以秦路
的为标准。
目前发现了几个问题:

一、apply函数使用之后就是Series,而非Pivot__table

def purchase_return(data):
    status=[]
    for i in range(17):
        if data[i]==1:
            if data[i+1]==1:
                status.append(1)
            if data[i+1]==0:
                status.append(0)
        else:
            status.append(np.NaN)
    status.append(np.NaN)
    return status

pivoted_amount_return=pivoted_purchase.apply(purchase_return,axis=1)
pivoted_amount_return.head()

这段代码之后,发现apply作用于pivot_table或者dataframe之后的出来的是一个Series,所以之后的画图是无法画出来的。
结果如下:


1.png

所以对于后来生成的这个变量,直接再次构造dataframe就好了。

#所以还是需要构造一个dataframe
pivoted_amount_return_l=[line for line in pivoted_amount_return]
#利用先前生成的pivoted_amount透视表的index和columns
pivoted_return_df=pd.DataFrame(pivoted_amount_return_l,index=pivoted_amount.index,columns=pivoted_amount.columns)
pivoted_return_df.head()

二、帕累托图

在做user_amount帕累托图的时候,首先可以对amount进行倒叙排列,再求出占比,最后在进行绘制图像。

user_amount=df.groupby('user_id').order_amount.sum().sort_values(ascending=False).reset_index()   #这里先按照大到小排序
user_amount['amount_cumsum']=user_amount.order_amount.cumsum()

amount_total=user_amount.amount_cumsum.max()
user_amount['prop']=user_amount.amount_cumsum.apply(lambda x: x/amount_total)


帕累托图.png

三、pd.cut

bin=[0,3,7,15,30,60,90,180,365]
user_purchase_retention['date_diff_bin']=pd.cut(user_purchase_retention.
                                               date_diff,bins=bin)
user_purchase_retention.head(10)
cut之后的表格.png

在这里输出的结果是剔除掉所有为NA的结果了的,所以在后面画柱状图的时候,要除以所有客户的总和。

bar.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容