对比分析

'''
【课程1.3】  对比分析对比分析 → 两个互相联系的指标进行比较绝对数比较(相减) / 相对数比较(相除)
结构分析、比例分析、空间比较分析、动态对比分析'''
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
% matplotlib inline
# 1、绝对数比较 → 相减
# 相互对比的指标在量级上不能差别过大
# (1)折线图比较
# (2)多系列柱状图比较data = pd.DataFrame(np.random.rand(30,2)*1000,columns = ['A_sale','B_sale'],index = pd.period_range('20170601','20170630'))
print(data.head())
# 创建数据 → 30天内A/B产品的日销售额data.plot(kind='line',style = '--.',alpha = 0.8,figsize = (10,3),title = 'AB产品销量对比-折线图')
# 折线图比较data.plot(kind = 'bar',width = 0.8,alpha = 0.8,figsize = (10,3),title = 'AB产品销量对比-柱状图')
# 多系列柱状图比较

  输出:

                A_sale      B_sale
2017-06-01  334.812619  778.500279
2017-06-02  921.431743  970.734046
2017-06-03  785.444137  481.548456
2017-06-04  359.790330  259.824537
2017-06-05  657.224681  332.818389

 

# 1、绝对数比较 → 相减
# (3)柱状图堆叠图+差值折线图比较fig3 = plt.figure(figsize=(10,6))
plt.subplots_adjust(hspace=0.3)
# 创建子图及间隔设置ax1 = fig3.add_subplot(2,1,1)  
x = range(len(data))
y1 = data['A_sale']
y2 = -data['B_sale']
plt.bar(x,y1,width = 1,facecolor = 'yellowgreen')
plt.bar(x,y2,width = 1,facecolor = 'lightskyblue')
plt.title('AB产品销量对比-堆叠图')
plt.grid()
plt.xticks(range(0,30,6))
ax1.set_xticklabels(data.index[::6])
# 创建堆叠图ax2 = fig3.add_subplot(2,1,2)  
y3 = data['A_sale']-data['B_sale']
plt.plot(x,y3,'--go')
plt.axhline(0,hold=None,color='r',linestyle="--",alpha=0.8)  # 添加y轴参考线
plt.grid()
plt.title('AB产品销量对比-差值折线')
plt.xticks(range(0,30,6))
ax2.set_xticklabels(data.index[::6])
# 创建差值折线图

  输出:

[<matplotlib.text.Text at 0x9faa9b0>,<matplotlib.text.Text at 0x9fa6e48>,<matplotlib.text.Text at 0x9fed0f0>,<matplotlib.text.Text at 0x9fedb38>,<matplotlib.text.Text at 0x9ff15c0>]

  

# 2、相对数比较 → 相除
# 有联系的指标综合计算后的对比,数值为相对数
# 结构分析、比例分析、空间比较分析、动态对比分析、计划完成度分析
# (1)结构分析
# 在分组基础上,各组总量指标与总体的总量指标对比,计算出各组数量在总量中所占比重
# 反映总体的内部结构data = pd.DataFrame({'A_sale':np.random.rand(30)*1000,'B_sale':np.random.rand(30)*200},index = pd.period_range('20170601','20170630'))
print(data.head())
print('------')
# 创建数据 → 30天内A/B产品的日销售额
# A/B产品销售额量级不同data['A_per'] = data['A_sale'] / data['A_sale'].sum()
data['B_per'] = data['B_sale'] / data['B_sale'].sum()
# 计算出每天的营收占比data['A_per%'] = data['A_per'].apply(lambda x: '%.2f%%' % (x*100))
data['B_per%'] = data['B_per'].apply(lambda x: '%.2f%%' % (x*100))
# 转换为百分数
print(data.head())fig,axes = plt.subplots(2,1,figsize = (10,6),sharex=True)
data[['A_sale','B_sale']].plot(kind='line',style = '--.',alpha = 0.8,ax=axes[0])
axes[0].legend(loc = 'upper right')
data[['A_per','B_per']].plot(kind='line',style = '--.',alpha = 0.8,ax=axes[1])
axes[1].legend(loc = 'upper right')
# 绝对值对比较难看出结构性变化,通过看销售额占比来看售卖情况的对比# 同时可以反应“强度” → 两个性质不同但有一定联系的总量指标对比,用来说明“强度”、“密度”、“普遍程度”
# 例如:国内生产总值“元/人”,人口密度“人/平方公里”

  输出:

                A_sale      B_sale
2017-06-01  688.134982    6.759655
2017-06-02  310.911156  141.978290
2017-06-03  227.496397  123.595400
2017-06-04  905.453084   64.534911
2017-06-05  374.572618  147.550005
------A_sale      B_sale     A_per     B_per A_per% B_per%
2017-06-01  688.134982    6.759655  0.045606  0.002227  4.56%  0.22%
2017-06-02  310.911156  141.978290  0.020606  0.046780  2.06%  4.68%
2017-06-03  227.496397  123.595400  0.015077  0.040723  1.51%  4.07%
2017-06-04  905.453084   64.534911  0.060009  0.021263  6.00%  2.13%
2017-06-05  374.572618  147.550005  0.024825  0.048616  2.48%  4.86%

 

 

# 2、相对数比较 → 相除
# (2)比例分析
# 在分组的基础上,将总体不同部分的指标数值进行对比,其相对指标一般称为“比例相对数”
# 比例相对数 = 总体中某一部分数值 / 总体中另一部分数值 → “基本建设投资额中工业、农业、教育投资的比例”、“男女比例”...data = pd.DataFrame({'consumption':np.random.rand(12)*1000 + 2000,'salary':np.random.rand(12)*500 + 5000},index = pd.period_range('2017/1','2017/12',freq = 'M'))
print(data.head())
print('------')
# 创建数据 → 某人一年内的消费、工资薪水情况
# 消费按照2000-3000/月随机,工资按照5000-5500/月随机data['c_s'] = data['consumption'] / data['salary']
print(data.head())
# 比例相对数 → 消费收入比data['c_s'].plot.area(color = 'green',alpha = 0.5,ylim = [0.3,0.6],figsize=(8,3),grid=True)
# 创建面积图表达

  输出:

         consumption       salary
2017-01  2300.613040  5349.939624
2017-02  2256.167470  5477.291974
2017-03  2356.130582  5366.495609
2017-04  2680.961342  5203.749452
2017-05  2612.676360  5395.189285
------consumption       salary       c_s
2017-01  2300.613040  5349.939624  0.430026
2017-02  2256.167470  5477.291974  0.411913
2017-03  2356.130582  5366.495609  0.439045
2017-04  2680.961342  5203.749452  0.515198
2017-05  2612.676360  5395.189285  0.484260

 

# 2、相对数比较 → 相除
# (3)空间比较分析(横向对比分析)
# 同类现象在同一时间不同空间的指标数值进行对比,反应同类现象在不同空间上的差异程度和现象发展不平衡的状况
# 空间比较相对数 = 甲空间某一现象的数值 / 乙空间同类现象的数值
# 一个很现实的例子 → 绝对数来看,我国多经济总量世界第一,但从人均水平来看是另一回事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'))
print(data.head())
print('------')
# 创建数据 → 30天内A/B/C/D四个产品的销售情况
# 不同产品的销售量级不同data.sum().plot(kind = 'bar',color = ['r','g','b','k'], alpha = 0.8, grid = True)
for i,j in zip(range(4),data.sum()):plt.text(i-0.25,j+2000,'%.2f' % j, color = 'k')
# 通过柱状图做横向比较 → 4个产品的销售额总量data[:10].plot(kind = 'bar',color = ['r','g','b','k'], alpha = 0.8, grid = True, figsize = (12,4),width = 0.8)
# 多系列柱状图,横向比较前十天4个产品的销售额# 关于同比与环比
# 同比 → 产品A在2015.3和2016.3的比较(相邻时间段的同一时间点)
# 环比 → 产品A在2015.3和2015.4的比较(相邻时间段的比较)
# 如何界定“相邻时间段”与“时间点”,决定了是同比还是环比

  输出:

                     A            B            C           D
2017-06-01  2850.211921  1647.138351  5276.354493  529.747107
2017-06-02  3222.680792   768.466753  6941.803099  284.760211
2017-06-03   727.193796  1732.612257  3311.883561  332.427362
2017-06-04  2582.599603   444.224737  1829.401025  744.340597
2017-06-05  1756.352061  1731.221585  7583.832278  768.792895

 

# 2、相对数比较 → 相除
# (4)动态对比分析(纵向对比分析)
# 同一现象在不同时间上的指标数值进行对比,反应现象的数量随着时间推移而发展变动的程度及趋势
# 最基本方法,计算动态相对数 → 发展速度
# 动态相对数(发展速度) = 某一现象的报告期数值 / 同一现象的基期数值
# 基期:用来比较的基础时期
# 报告期:所要研究的时期,又称计算期data = pd.DataFrame({'A':np.random.rand(30)*2000+1000},index = pd.period_range('20170601','20170630'))
print(data.head())
print('------')
# 创建数据 → 30天内A产品的销售情况data['base'] = 1000  # 假设基期销售额为1000,后面每一天都为计算期
data['l_growth'] = data['A'] - data['base']  # 累计增长量 = 报告期水平 - 固定基期水平
data['z_growth'] = data['A'] - data.shift(1)['A']  # 逐期增长量 = 报告期水平 - 报告期前一期水平
data[data.isnull()] = 0  # 替换缺失值data[['l_growth','z_growth']].plot(figsize = (10,4),style = '--.',alpha = 0.8)  
plt.axhline(0,hold=None,color='r',linestyle="--",alpha=0.8)  # 添加y轴参考线
plt.legend(loc = 'lower left')
plt.grid()
# 通过折线图查看增长量情况data['lspeed'] = data['l_growth'] / data['base']  # 定基增长速度
data['zspeed'] = data['z_growth'] / data.shift(1)['A']  # 环比增长速度
data[['lspeed','zspeed']].plot(figsize = (10,4),style = '--.',alpha = 0.8)  
plt.axhline(0,hold=None,color='r',linestyle="--",alpha=0.8)  # 添加y轴参考线
plt.grid()
print(data.head())
print('------')
# 通过折线图查看发展速度

  输出:

                     A
2017-06-01  2604.901536
2017-06-02  2387.955402
2017-06-03  1968.693059
2017-06-04  2313.807035
2017-06-05  1441.483332
------A  base     l_growth    z_growth    lspeed    zspeed
2017-06-01  2604.901536  1000  1604.901536    0.000000  1.604902       NaN
2017-06-02  2387.955402  1000  1387.955402 -216.946134  1.387955 -0.083284
2017-06-03  1968.693059  1000   968.693059 -419.262343  0.968693 -0.175574
2017-06-04  2313.807035  1000  1313.807035  345.113976  1.313807  0.175301
2017-06-05  1441.483332  1000   441.483332 -872.323703  0.441483 -0.377008
------

 

转载于:https://www.cnblogs.com/654321cc/p/9581789.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/426948.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

平面设计中的网格系统pdf_深入浅出,带你认识网格系统与版式设计

设计分享 研习设 设计Hello大家好&#xff0c;这里是研习设计分享。时不时分享/新鲜/有趣/有料/设计资讯和案例&#xff0c;欢迎大家订阅关注&#xff01;~预估阅读时间&#xff1a;10分钟ME研习设小研研&#xff1a;今天&#xff0c;和大家深入浅出&#xff0c;带你认识网格系…

实例16:python

#输出指定格式的日期。 import time print(time.time()) print(time.localtime()) print(time.asctime()) print(time.strftime(’%Y-%m-%d %H:%M:%S’,time.localtime())) import datetime print(datetime.date.today()) print(datetime.date.today().strftime(’%d/%m/%Y’…

cad直线和圆弧倒角不相切_曲线操作-直线,圆弧,圆,倒斜角

直线该命令用于创建直线段。执行直线命令&#xff0c;主要有以下两种方式。菜单:选择“菜单”“捕入”一“曲线” 一“直线” 命令。功能区:单击“曲线”选项卡“曲线” 组中的“直线”按钮。执行上述操作后&#xff0c;系统打开如图4.13 所示的“直线”对话框。“直线”对话框…

WPF vs2015,vs2012 添加ArcObjects SDK

一&#xff1a;如果是vs2015&#xff0c;找到注册表中HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\下面的这两个&#xff0c;并且将名称和数据记下来。如图&#xff1a; &#xff08;如果是vs2012,只添加InstallDir及其数据值就行了。&#xff09; 二…

实例17:python

#输入一行字符&#xff0c;分别统计出其中英文字母、空格、数字和其它字符的个数。 #!/usr/bin/python3 a input(‘请输入一串字符:’) 英文 0 空格 0 数字 0 其他 0 for i in a: if i.isalpha(): 英文 1 elif i.isspace(): 空格 1 elif i.isnumeric(): 数字 1 else: 其他…

bow 折叠键盘 linux,bow便携折叠蓝牙键盘体验

bow便携折叠蓝牙键盘体验2019-10-07 02:29:3913点赞8收藏0评论买了个键盘 bow的hb188似乎对蓝牙键盘一直以来都有一种执念&#xff0c;自从想要写点什么东西的想法在脑子里面生根发芽之后&#xff0c;一直都在找一种相对来讲比较便携的键盘。一开始的时候想买苹果的原装键盘&am…

admin——django自带数据库管理工具

admin是Django自带的数据库管理工具&#xff0c;是一个app 在admin.py中可以自己定制类来使admin数据库管理页面展现自己想要查看的信息 models.py from django.db import models# Create your models here.class Book(models.Model):title models.CharField(max_length32)pri…

remote addr 取到内网ip_内网穿透工具frp

前言渗透渗透中面对的大部分目标除了暴露在互联网的部分&#xff0c;还有隐藏在内网的大量资产&#xff0c;这部分资产往往无法联通外网&#xff0c;很少暴露在攻击者面前&#xff0c;与此同时安全一般也没有外部资产做的全面 。如果我们从某一外部互联网入口成功进入了内网&am…

实例18:python

#题目&#xff1a;求saaaaaaaaaaaa…a的值&#xff0c;其中a是一个数字。例如222222222222222(此时共有5个数相加)&#xff0c;几个数相加由键盘控制。 #!/usr/bin/env python3 -- coding: utf-8 -- n int(input(n )) a int(input(a )) sum 0 total 0 for i in range(…

AQS是什么?

AQS介绍AQS&#xff0c;即AbstractQueuedSynchronizer, 队列同步器&#xff0c;它是Java并发用来构建锁和其他同步组件的基础框架。来看下同步组件对AQS的使用&#xff1a;AQS是一个抽象类&#xff0c;主是是以继承的方式使用。AQS本身是没有实现任何同步接口的&#xff0c;它仅…

实例19:python

#题目&#xff1a;一个数如果恰好等于它的因子之和&#xff0c;这个数就称为"完数"。 #例如61&#xff0b;2&#xff0b;3.编程找出1000以内的所有完数。 #!/usr/bin/python3 list2 [] for x in range(1, 1001): list1 [] for i in range(1, int(x / 2) 1): if x…

实例20:python

#题目&#xff1a;一球从100米高度自由落下&#xff0c;每次落地后反跳回原高度的一半&#xff1b;再落下 #&#xff0c;求它在第10次落地时&#xff0c;共经过多少米&#xff1f;第10次反弹多高&#xff1f; #!/usr/bin/python -- coding: UTF-8 -- tour [] height [] h…

圆弧齿轮啮合原理_图解八种齿轮的加工原理

齿形有多种形式&#xff0c;其中以渐开线齿形最为常见。渐开线齿形常用的加工方法有两大类&#xff0c;即成形法和展成法。1铣齿采用盘形模数铣刀或指状铣刀铣齿属于成形法加工&#xff0c;铣刀刀齿截面形状与齿轮齿间形状相对应。2成形磨齿也属于成形法加工&#xff0c;成形砂…

单片机c语言1602怎么接线,lcd1602中文资料分享:lcd1602接线图_lcd1602与单片机连接图 - 全文...

lcd1602液晶屏在很懂工业产品上都有应用&#xff0c;LCD1602能够能够同时显示32个字符&#xff0c;价格便宜&#xff0c;编程简单而且稳定可靠。lcd1602液晶屏是一种图形点阵显示器&#xff0c;显示原理简单易懂&#xff0c;都是液晶屏内部的液晶材料变化而显示不同的字符&…

[SimplePlayer] 1. 从视频文件中提取图像

在开始之前&#xff0c;我们需要了解视频文件的格式。视频文件的格式众多&#xff0c;无法三言两语就能详细分析其结构&#xff0c;尽管如此&#xff0c;ffmpeg却很好地提取了各类视频文件的共同特性&#xff0c;并对其进行了抽象描述。 视频文件格式&#xff0c;统称为contain…

实例21:python

#猴子吃桃问题&#xff1a;猴子第一天摘下若干个桃子&#xff0c; #当即吃了一半&#xff0c;还不瘾&#xff0c;又多吃了一个第二天早上又将剩下的桃子吃掉一半&#xff0c; #又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。 #到第10天早上想再吃时&#xff0c;见只…

android5.1 显示方向,Android5.1 Settings.apk定制显示选项

在Android5.0后&#xff0c;系统应用的目录结构发生了一些变化&#xff0c;以往/system/app/下直接是APK文件&#xff0c;目前是/system/app/应用名目录/应用apk类似这种目录结构。同时在Android5.1上反编译Settings.apk需要使用最新apktool_2.0.3来反编译&#xff0c;否则无法…

实例22:python

#题目&#xff1a;两个乒乓球队进行比赛&#xff0c;各出三人。甲队为a,b,c三人&#xff0c; #乙队为x,y,z三人。已抽签决定比赛名单。 #有人向队员打听比赛的名单。a说他不和x比&#xff0c;c说他不和x,z比&#xff0c;请编程序找出三队赛手的名单。 #!/usr/bin/python -- c…

CCF 201312-3 最大的矩形[比较简单]

问题描述 试题编号&#xff1a;201312-3试题名称&#xff1a;最大的矩形时间限制&#xff1a;1.0s内存限制&#xff1a;256.0MB问题描述&#xff1a; 问题描述在横轴上放了n个相邻的矩形&#xff0c;每个矩形的宽度是1&#xff0c;而第i&#xff08;1 ≤ i ≤ n&#xff09;个矩…

实例23:python

#题目&#xff1a;打印出如下图案&#xff08;菱形&#xff09;: * *** ***** #******* ***** *** * #先把图形分成两部分来看待&#xff0c;前四行一个规律&#xff0c;后三行一个规律&#xff0c;利用双重for循环&#xff0c;第一层控制行&#xff0c;第二层控制列。…