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


本文主要讲的是对比分析的一些可视化作图,用来练练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

关注二维码相互交流哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值