美文网首页
帕累托法则原理及Python实战

帕累托法则原理及Python实战

作者: 数据科学成长笔记 | 来源:发表于2021-03-03 21:19 被阅读0次

    写在前面
    在进行业务分析时,80%问题往往是由20%的对象引起的,应把有限的精力放在能产出最大效益的对象上,抓住关键点(KA品牌品类等)让你的动作立竿见影。

    什么是帕累托法则

    帕累托法则(英文:Pareto principle,也称作80/20原则、关键少数法则)指出,约仅有20%的变因操纵着80%的局面。也就是说:所有变量中,最重要的仅有20%,虽然剩余的80%占了多数,但贡献度却远低于“关键的少数”。例如:20%的品牌贡献了整体80%的销量,其余的大多数品牌销量占据很低;80%的收益来自20%的市场等等。帕累托法则适用于管理稳定且个数不多的用户,例如我们的品牌、供应商或用户。

    为什么要用帕累托法则

    重要用户管理

    虽然每个用户对我们来说都很重要,但是在进行用户管理时需要对不同贡献度用户进行划分,例如,按对大盘贡献度的80%(这个数据可根据业务策略情况进行划分,贡献指标可以为销售量、销售额等指标,此外贡献度也可取70%、90%等)找到最具有价值的用户,之后对重点用户进行培养及提供服务。(在实战阶段1,以销量为贡献度指标找出各部门、品类的重点用户)

    重点问题管理

    当大盘指标数据出现异常时,首要工作是对我们的重点用户/品牌指标达成进行分析,因为这些用户/品牌与公司业务保持紧密的联系,对公司业务的数据波动具有较大的贡献度,因此使用帕累托法则可以使我们目标更聚焦。(在实战阶段2,以转化率为异常波动指标找出各部门的问题品牌)

    Tips:
    但是我们也要注意,我们对用户进行分层管理不代表只对重点用户进行管理,在不同的策略下应制定不同的用户管理方法。

    Pyhton实战

    # 导入相关第三方包
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    import seaborn as sns
    import scipy
    
    # 修复图片中文显示乱码及刻度显示缺失问题
    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.rcParams['axes.unicode_minus'] = False
    
    %matplotlib inline
    

    实战1:重点用户管理

    本文以销量作为用户贡献度划分指标选出重点对象。

    # 读取数据文件
    data = pd.read_excel('pareto_principle.xlsx')
    # 根据销量降序
    data.sort_values('销售量',ascending=False,inplace=True)
    # 计算销售占比
    data['累计销售占比'] = data.销售量.cumsum()/data.销售量.sum()
    # 数据统计
    def describe(p=0.8):
        """
        p 为占比阈值,即占统计量前p的数据。
        """
        counts = len(data) # 统计总数
        ka_counts = len(data[data.累计销售占比<=p]) # 统计在阈值內的用户数据
        p_counts = ka_counts/counts # 统计销售在阈值內用户个数占总用户数的比值
        ka = data[data.累计销售占比<=p].品牌名.values
        print("总共有品牌{}个,销量在前{:.1%}的品牌数{}个,占比{:.1%},品牌为{}".format(counts,p,ka_counts,p_counts,ka))
    describe(p=0.8)
    
    总共有品牌24个,销量在前80.0%的品牌数6个,占比25.0%,品牌为['A17' 'A20' 'A15' 'A23' 'A1' 'A9']
    
    # 新建画布
    plt.figure()
    # 因为品牌个数较多的问题,我们选取前15名绘制图形,因为上文已经排序,所以这里直接使用切片。绘制销量及销量占比图
    data_top15 = data[:15].copy()
    sales_top15 = data_top15.set_index('品牌名')
    plt.figure()
    sales_top15.销售量.plot(kind='bar',color = 'y', alpha = 0.6, width = 0.6)
    plt.ylabel('销售量')
    sales_top15.累计销售占比.plot( secondary_y=True,color='r', style='-o',linewidth=2)
    plt.ylabel('累计销售占比')
    # 画出销量占比前80%线
    key = sales_top15[sales_top15.累计销售占比>0.8].index[0]
    key_num = sales_top15.index.tolist().index(key) 
    plt.axvline(key_num,color='r',linestyle="--",alpha=0.8)  
    plt.annotate(format(sales_top15.loc[key].累计销售占比, '.2%'), xy=(key_num, sales_top15.loc[key].累计销售占比), xytext=(key_num*1.1, sales_top15.loc[key].累计销售占比*0.8),arrowprops=dict(facecolor='red', shrink=0.05))
    
    Text(6.6000000000000005, 0.6425486725663717, '80.32%')
    
    output_10_2.png

    实战2:重点问题管理

    在大盘整体转化率较低时,我们需要针对重点品类/品牌进行改进来提升整体的转化率,本例将利用帕累托法则从各品类中选出重点品牌,然后找出其中的问题品牌。本例中有三个品类,每个品类下有多个品牌,现在按照帕累托法则挑选出重点品牌中转化率较低的问题品牌。

    # 读取数据文件
    data = pd.read_excel('pareto_principle1.xlsx')
    data.head()
    
    1.png
    data.sort_values(['品类','销售量'],ascending=False,inplace=True)
    # 首先计算出各品类下的重点品牌
    data['品类维度销量占比'] = data.groupby('品类')['销售量'].cumsum()/data.groupby('品类')['销售量'].transform(sum)
    ka_data = data[data['品类维度销量占比']<=0.8].copy()
    # 然后对转化率进行升序排列选出问题品牌,各品类选出前3名进行通报。
    ka_data.sort_values(['品类','转化率'],inplace=True)
    pro_ka_data = ka_data.groupby('品类').apply(lambda x : x[:3])[['品类','品牌','转化率','销售量']]
    #导出问题品类品牌
    pro_ka_data.to_excel('问题品类品牌.xlsx',index=False)
    pro_ka_data
    
    2.png

    Q&A

    Q1: "帕累托法则"与"长尾效应"
    与前者不同,长尾效应 认为受互联网的崛起,广泛的销售层面让98%的产品都有机会销售,而不再只依赖20%的主力产品,即那些原来不受到重视的销量小但种类多的产品或服务由于总量巨大,累积起来的总收益超过主流产品的现象。在互联网领域,长尾效应尤为显著。从概念上,二者看似对立,但本质上都是企业进行用户/商品管理的手段。如果想利用长尾效应取得显著效果,企业就必须积极注意那些消费者的个性化需求

    相关文章

      网友评论

          本文标题:帕累托法则原理及Python实战

          本文链接:https://www.haomeiwen.com/subject/pwpcqltx.html