1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 数据特征分析:对比分析

数据特征分析:对比分析

时间:2023-05-22 05:52:36

相关推荐

数据特征分析:对比分析

文章目录

1.绝对数比较(相减)2.相对数比较(相除)1.结构分析2.比例分析3.空间比较分析(横向对比分析)4.动态对比分析(纵向对比分析)

对比分析 → 两个互相联系的指标进行比较

绝对数比较(相减) / 相对数比较(相除)

结构分析、比例分析、空间比较分析、动态对比分析

1.绝对数比较(相减)

在绝对数比较中,相互对比的指标在量级上不能差别过大

创建一组随机数,分别代表A产品的销量和B产品的销量

plt.rcParams['font.sans-serif']=['SimHei'] #显示中文标签data = pd.DataFrame(np.random.rand(30,2)*1000,columns = ['A_sale','B_sale'],index = pd.period_range('0601','0630'))print(data.head())

A_saleB_sale-06-01 196.136735 332.310339-06-02 239.497573 4.565432-06-03 761.122797 643.422245-06-04 101.757850 630.286314-06-05 185.142519 901.302321

data.plot(kind = 'line',style = '--.',alpha = 0.8,title = 'AB产品销量对比——折线图',figsize = (20,6),fontsize = 15,legend = True)data.plot(kind = 'bar',title = 'AB产品销量对比——柱状图',figsize = (20,6),fontsize = 15)

在量级相同数据的对比中,绝对数比较就可以看出两组数据的相对关系。

因此我们还可以做柱状图堆叠图及差值折线图老探索数据

plt.rcParams['font.sans-serif']=['SimHei'] #显示中文标签plt.rcParams['axes.unicode_minus']=False #用来正常显示负号x = range(len(data))y1 = data['A_sale']y2 = -data['B_sale']fig3 = plt.figure(figsize = (20,12))ax1 = fig3.add_subplot(2,1,1)plt.bar(x,y1)plt.bar(x,y2)plt.xticks(fontsize = 15)plt.yticks(fontsize = 15)plt.xticks(range(0,30,6))ax1.set_xticklabels(data.index[::6])ax2 = fig3.add_subplot(2,1,2)plt.plot(x,y1+y2,'--o')plt.axhline(0,linestyle = '--',color = 'r')#添加平行x轴的辅助线#plt.axvline()#添加平行y轴的辅助线plt.xticks(fontsize = 15)plt.yticks(fontsize = 15)plt.xticks(range(0,30,6))ax2.set_xticklabels(data.index[::6])

2.相对数比较(相除)

有联系的指标综合计算后的对比,数值为相对数

分析方法可分为结构分析、比例分析、空间比较分析、动态对比分析

1.结构分析

在分组基础上,各组总量指标与总体的总量指标对比,计算出各组数量在总量中所占比重,结构分析可以反映总体的内部结构

这里创建两组不同量级的数据进行举例:

data = pd.DataFrame({'A_sale':np.random.rand(30)*1000,'B_sale':np.random.rand(30)*100},index = pd.period_range('0601','0630'))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}'.format(x*100))data['B_per%'] = data['B_per'].apply(lambda x:'{:.2f}'.format(x*100))# 转换为百分数print(data.head())fig,axes = plt.subplots(2,1,figsize = (20,12),sharex = True)# 绝对值比较data[['A_sale','B_sale']].plot(kind = 'line',style = '--.',ax = axes[0])axes[0].legend()plt.xticks(fontsize = 15)plt.yticks(fontsize = 15)# 相对值比较data[['A_per','B_per']].plot(kind = 'line',style = '--o',ax = axes[1])axes[1].legend()plt.xticks(fontsize = 15)plt.yticks(fontsize = 15)# 绝对值对比较难看出结构性变化,通过看销售额占比来看售卖情况的对比# 同时可以反应“强度” → 两个性质不同但有一定联系的总量指标对比,用来说明“强度”、“密度”、“普遍程度”# 例如:国内生产总值“元/人”,人口密度“人/平方公里”

A_saleB_sale-06-01 11.107980 70.487240-06-02 258.969445 58.444937-06-03 931.462925 93.750244-06-04 68.676392 8.391014-06-05 451.428640 87.467882------A_saleB_saleA_perB_per A_per% B_per%-06-01 11.107980 70.487240 0.000630 0.046939 0.06 4.69-06-02 258.969445 58.444937 0.014697 0.038920 1.47 3.89-06-03 931.462925 93.750244 0.052861 0.062430 5.29 6.24-06-04 68.676392 8.391014 0.003897 0.005588 0.39 0.56-06-05 451.428640 87.467882 0.025619 0.058246 2.56 5.82

可以看到图一中的绝对值分析不能看出数据间的相对关系。

2.比例分析

在分组的基础上,将总体不同部分的指标数值进行对比,其相对指标一般称为“比例相对数”

比例相对数 = 总体中某一部分数值 / 总体中另一部分数值 → “基本建设投资额中工业、农业、教育投资的比例”、“男女比例”…

data = pd.DataFrame({'consumption':np.random.rand(12)*1000 + 2000,'salary':np.random.rand(12)*500 + 5000},index = pd.period_range('/1','/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(figsize = (20,12),grid = True,alpha = 0.8,ylim = [0.3,0.6])

consumption salary-01 2040.449670 5207.496900-02 2159.305132 5212.656944-03 2200.339158 5130.780265-04 2893.534180 5414.673479-05 2944.590743 5396.974339------consumption salary c_s-01 2040.449670 5207.496900 0.391829-02 2159.305132 5212.656944 0.414243-03 2200.339158 5130.780265 0.428851-04 2893.534180 5414.673479 0.534388-05 2944.590743 5396.974339 0.545600

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('0601','0630'))print(data.head())print('------')# 创建数据 → 30天内A/B/C/D四个产品的销售情况# 不同产品的销售量级不同data.sum().plot(kind = 'bar',color = ['r','g','b','k'],figsize = (20,12),rot = 0)plt.xticks(fontsize = 20)plt.yticks(fontsize = 20)for i,j in zip(range(4),data.sum()):plt.text(i,j+5000,'{:.2f}'.format(j),horizontalalignment='center',fontsize = 20,alpha = 0.8)data[:10].plot(kind = 'bar',color = ['r','g','b','k'], alpha = 0.8, grid = True, figsize = (20,12),width = 0.8)plt.xticks(fontsize = 20)plt.yticks(fontsize = 20)# 多系列柱状图,横向比较前十天4个产品的销售额# 关于同比与环比# 同比 → 产品A在.3和.3的比较(相邻时间段的同一时间点)# 环比 → 产品A在.3和.4的比较(相邻时间段的比较)# 如何界定“相邻时间段”与“时间点”,决定了是同比还是环比

A B C D-06-01 1997.353982 316.453985 7721.841133 430.332589-06-02 4678.166249 1702.777437 9028.497516 693.539994-06-03 2617.312356 835.670079 3693.068883 497.772748-06-04 86.866974 1690.183922 7874.507873 550.739731-06-05 3373.909158 1689.619683 5160.037689 71.619315------

4.动态对比分析(纵向对比分析)

同一现象在不同时间上的指标数值进行对比,反应现象的数量随着时间推移而发展变动的程度及趋势

最基本方法,计算动态相对数 → 发展速度

动态相对数(发展速度) = 某一现象的报告期数值 / 同一现象的基期数值

基期:用来比较的基础时期

报告期:所要研究的时期,又称计算期

data = pd.DataFrame({'A':np.random.rand(30)*2000+1000},index = pd.period_range('0601','0630'))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 = (20,6),style = '--.',alpha = 0.8) plt.axhline(0,color='r',linestyle="--",alpha=0.8) # 添加y轴参考线plt.legend(loc = 'lower left')plt.grid()plt.xticks(fontsize = 20)plt.yticks(fontsize = 20)# 通过折线图查看增长量情况data['lspeed'] = data['l_growth'] / 1000 # 定基增长速度data['zspeed'] = data['z_growth'] / data.shift(1)['A'] # 环比增长速度data[['lspeed','zspeed']].plot(figsize = (20,6),style = '--.',alpha = 0.8) plt.axhline(0,color='r',linestyle="--",alpha=0.8) # 添加y轴参考线plt.grid()print(data.head())print('------')plt.xticks(fontsize = 20)plt.yticks(fontsize = 20)# 通过折线图查看发展速度

A-06-01 2194.169019-06-02 2646.814210-06-03 1710.473423-06-04 1507.380439-06-05 2934.035023------A basel_growthz_growth lspeed zspeed-06-01 2194.169019 1000 1194.1690190.000000 1.194169 NaN-06-02 2646.814210 1000 1646.814210 452.645191 1.646814 0.206295-06-03 1710.473423 1000 710.473423 -936.340787 0.710473 -0.353761-06-04 1507.380439 1000 507.380439 -203.092985 0.507380 -0.118735-06-05 2934.035023 1000 1934.035023 1426.654584 1.934035 0.946446------

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。