数据分析实战--对比分析

作者: 勤奋的土豆鹿鹿 | 来源:发表于2019-04-17 00:35 被阅读8次

    本文主要讲的是对比分析的一些可视化作图,用来练练matplotlib不错。主要内容有:两个相互联系的指标的比较(绝对比较)、相对比较两方面。

    0 模块导入

    
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
    plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
    
    

    1.对比分析 → 两个互相联系的指标进行比较(绝对比较)

    创建数据 → 30天内A/B产品的日销售额

    
    data = pd.DataFrame(np.random.rand(30,2)*1000,
                        columns=['A_sale','B_sale'],
                        index = pd.period_range('20170601','20170630')
                        )
    fig,ax = plt.subplots(4,1,figsize=(10,15))
    plt.subplots_adjust(hspace=0.5)
    
    

    (1)折线图比较 AB产品销量对比图-折线图

    data.plot(kind = 'line',
              style='--',
              alpha = 0.8,
              title = 'AB产品销量对比图-折线图',
              ax = ax[0])
    
    

    2、相对数比较 → 相除(相对)

    (2)多系列柱状图比较 AB产品销量对比-柱状图

    
    data.plot(kind = 'bar',
              alpha = 0.8,
              width = 0.8,
              title = 'AB产品销量对比-柱状图',
              ax=ax[1])
    
    

    (3)绝对数比较,相减 AB产品销量对比-堆叠图

    
    data1 = data.copy()
    data1['B_sale'] = -data['B_sale']
    data1['A_sale'].plot(kind = 'bar',
              color = 'g',
              alpha = 0.4,
              title = 'AB产品销量对比-堆叠图',
              ax=ax[2])
    data1['B_sale'].plot(kind = 'bar',
              color = 'b',
              alpha = 0.4,
              title = 'AB产品销量对比-堆叠图',
              ax=ax[2])
    
    

    (4)面积图

    
    data.plot.area(alpha = 0.5,
                   title = 'AB产品销量对比-面积',
                   ax = ax[3]) 
    
    
    image

    2、相对数比较 → 相除(相对比较)

    创建数据 → 30天内A/B产品的日销售额

    A/B产品销售额量级不同

    
    data = pd.DataFrame({'A_sale':np.random.rand(30)*1000,
                        'B_sale':np.random.rand(30)*200},
                        index = pd.period_range('20170601','20170630'))
    
    

    (1) 计算出每天的营收占比

    data['A_per'] = data['A_sale']/data['A_sale'].sum()
    data['B_per'] = data['B_sale']/data['B_sale'].sum()
    
    

    (2)转换为百分数

    data['A_per%'] = data['A_per'].apply(lambda x:'%.2f%%'%(x*100))
    data['B_per%'] = data['B_per'].apply(lambda x:'%.2f%%'%(x*100))
    
    

    (3)每日A、B产品营收--折线图

    fig,ax = plt.subplots(2,1,figsize=(10,10))
    plt.subplots_adjust(hspace = 0.5)
    x = range(len(data))
    data['A_sale'].plot(kind='line',
                      style='--go',
                      ax = ax[0],
                      color = 'b',
                      title = 'A、B产品营收--折线图')
    data['B_sale'].plot(kind='line',
                      style='--go',
                      color = 'g',
                      ax = ax[0],
                      title = 'A、B产品营收--折线图')
    ax[0].legend(labels = ['A_sale','B_sale'],loc='best')
    
    

    (4)每日A、B产品营收占比--折线图

    data['A_per'].plot(kind='line',
                      style='--go',
                      ax = ax[1],
                      color = 'b',
                      title = 'A、B产品营收占比--折线图')
    data['B_per'].plot(kind='line',
                      style='--go',
                      color = 'g',
                      ax = ax[1],
                      title = 'A、B产品营收占比--折线图')
    ax[1].legend(labels = ['A_per','B_per'],loc='best')
    
    
    image

    3 相对数比较 → 相除

    创建数据 → 某人一年内的消费、工资薪水情况

    消费按照2000-3000/月随机,工资按照5000-5500/月随机

    
    data = pd.DataFrame({'A':np.random.rand(30)*5000,
                        'B':np.random.rand(30)*2000,
                        'C':np.random.rand(30)*10000,
                        'D':np.random.rand(30)*800},
                       index = pd.period_range('20170601','20170630'))
    
    

    (1)通过柱状图做横向比较 → 4个产品的销售额总量

    fig,ax = plt.subplots(2,1,figsize=(10,10))
    plt.subplots_adjust(hspace=0.5)
    data.sum().plot(kind='bar',
                    width = 0.8,
                    alpha = 0.4,
                    rot = 0,
                    title = '4个产品的销售额总量',
                    ax = ax[0])
    
    

    (2)多系列柱状图,横向比较前十天4个产品的销售额

    data.iloc[:10,:].plot(kind = 'bar',
                         title = '前十天4个产品的销售额',
                         ax = ax[1])
    
    
    image image

    关注二维码相互交流哦!

    相关文章

      网友评论

        本文标题:数据分析实战--对比分析

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