热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

做数学建模不得不会的数据特征分析对比分析

对比分析主要用于对两个互相联系的指标进行比较,包括绝对数比较(相减)相对数比较(相除),结构分析,比例分析,空间比较分析,动态对比分析等,这篇博客来一一写一下分析方法首先引入所需模

对比分析主要用于对两个互相联系的指标进行比较,包括绝对数比较(相减)/相对数比较(相除),结构分析,比例分析,空间比较分析,动态对比分析等,这篇博客来一一写一下分析方法

首先引入所需模块

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

1.绝对数比较(相减)

这种方法相互对比的指标在量级上不能相差过大,不然得不到明显的对比结果。
创建数据,生成30天内的A/B产品的日销售额

data = pd.DataFrame(np.random.rand(30,2)*1000,
columns = ['A_sale','B_sale'],
index = pd.period_range('20170601','20170630'))#pandas中与时间相关的函数
print(data.head())

数据展示
《做数学建模不得不会的数据特征分析---对比分析》
(2)折线图比较

data.plot(kind='line',
style = '--.',
alpha = 0.8,
figsize = (10,3),
title = 'AB产品销量对比-折线图')

输出结果:
《做数学建模不得不会的数据特征分析---对比分析》
(3)多系列柱状图对比


data.plot(kind = 'bar',
width = 0.8,
alpha = 0.8,
figsize = (10,3),
title = 'AB产品销量对比-柱状图')

输出结果:
《做数学建模不得不会的数据特征分析---对比分析》
(4)柱状图,堆叠图对比

创建堆叠图

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])

输出结果:
《做数学建模不得不会的数据特征分析---对比分析》
(5)差值折线图对比

ax2 = fig3.add_subplot(2,1,2)
y3 = data['A_sale']-data['B_sale']#产品A与B差值
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])

输出结果:
《做数学建模不得不会的数据特征分析---对比分析》

2.相对数比较(相除)

相对数比较主要用于有联系的指标综合计算后的对比,数值为相对数,主要对比方法有结构分析、比例分析、空间比较分析、动态对比分析、计划完成度分析等

(1)结构分析
结构分析是在分组的基础上,对各组总量指标与总体的总量指标进行对比,计算出各组数量在总量中所占的比重,它可以反映总体的内部结构
首先创建数据,生成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'))
print(data.head())

输出结果:
《做数学建模不得不会的数据特征分析---对比分析》
计算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))

数据展示:
《做数学建模不得不会的数据特征分析---对比分析》
看一下销售量情况

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')

绘制结果:
《做数学建模不得不会的数据特征分析---对比分析》
只看销售量的对比我们难以看出结构性的变化,通过销售额会比较容易看到售卖情况的对比。
(2)比例分析
在分组的基础上将总体不同部分的指标数值进行对比,其相对指标一般称为‘比例相对数’,比例相对数是总体中某一部分数值/总体中另一部分数值。

首先生成数据,生成某人一年内的消费、工资薪水情况,其中消费按照2000-3000/月随机生成,工资按照5000-5500/月随机生成

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())

数据结果:
《做数学建模不得不会的数据特征分析---对比分析》
计算比例相对数,消费与收入的比值

data['c_s'] = data['consumption'] / data['salary']
print(data.head())

绘制面积图观察结果
《做数学建模不得不会的数据特征分析---对比分析》
(3)空间比较分析
包括横向对比分析和纵向对比分析。
横向对比分析是同类现象在同一时间不同空间的指标数值进行对比,可以反应同类现象在不同空间上的差异程度和现象发展不平衡的状况,空间比较数为 甲空间某一现象的数值/乙空间同类现象的数值,比如从绝对数来看,我国经济总量世界第一,但是从人均水平来看却是另一回事

首先生成数据,30天内A/B/C/D四个产品的销售情况,不同产品我们设置销售量级不同

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())

数据展示:
《做数学建模不得不会的数据特征分析---对比分析》
通过柱状图做横向比较,比较四个产品销售额

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)

绘制结果:
《做数学建模不得不会的数据特征分析---对比分析》
再来一个小tips

# 关于同比与环比
# 同比 → 产品A在2015.3和2016.3的比较(相邻时间段的同一时间点)
# 环比 → 产品A在2015.3和2015.4的比较(相邻时间段的比较)
# 如何界定“相邻时间段”与“时间点”,决定了是同比还是环比

看完以上横向对比,再来看一下纵向对比,也称动态对比分析,它是同一现象在不同时间上的指标数值进行对比,反应现象的数量随着时间推移而发展变动的程度及趋势,最基本分方法是计算动态相对数,反应发展速度
动态相对数(发展速度)=某一现象的报告期数值/同一现象的基期数值
基期是用来比较的基础时期,报告期是所要研究的时期,又称计算期

首先创建数据,生成30天内A产品的销售情况

data = pd.DataFrame({ 'A':np.random.rand(30)*2000+1000},
index = pd.period_range('20170601','20170630'))
print(data.head())

数据展示:
《做数学建模不得不会的数据特征分析---对比分析》
假设基期销售额为1000,计算累积增长量和逐期增长量

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()

绘制结果:
《做数学建模不得不会的数据特征分析---对比分析》
好的,就到这里了

关注欢喜,走向成功~


推荐阅读
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
  • 开源Keras Faster RCNN模型介绍及代码结构解析
    本文介绍了开源Keras Faster RCNN模型的环境需求和代码结构,包括FasterRCNN源码解析、RPN与classifier定义、data_generators.py文件的功能以及损失计算。同时提供了该模型的开源地址和安装所需的库。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • 本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ... [详细]
  • Python教学练习二Python1-12练习二一、判断季节用户输入月份,判断这个月是哪个季节?3,4,5月----春 ... [详细]
author-avatar
莫小北
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有