热门标签 | 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()

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

关注欢喜,走向成功~


推荐阅读
  • 第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)的讲解和应用
    本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • This article discusses the efficiency of using char str[] and char *str and whether there is any reason to prefer one over the other. It explains the difference between the two and provides an example to illustrate their usage. ... [详细]
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
  • java drools5_Java Drools5.1 规则流基础【示例】(中)
    五、规则文件及规则流EduInfoRule.drl:packagemyrules;importsample.Employ;ruleBachelorruleflow-group ... [详细]
  • 带添加按钮的GridView,item的删除事件
    先上图片效果;gridView无数据时显示添加按钮,有数据时,第一格显示添加按钮,后面显示数据:布局文件:addr_manage.xml<?xmlve ... [详细]
  • [echarts] 同指标对比柱状图相关的知识介绍及应用示例
    本文由编程笔记小编为大家整理,主要介绍了echarts同指标对比柱状图相关的知识,包括对比课程通过率最高的8个课程和最低的8个课程以及全校的平均通过率。文章提供了一个应用示例,展示了如何使用echarts制作同指标对比柱状图,并对代码进行了详细解释和说明。该示例可以帮助读者更好地理解和应用echarts。 ... [详细]
  • 本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
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社区 版权所有