大数据分析——能源产量可视化分析

一、选题的背景介绍15分)

可持续发展是当今社会发展的重要课题,开发利用清洁能源,减低化石能源消耗,是平衡经济增长、社会发展和节能减排之间矛盾和制约的重要途径,从社会方面分析,地球的化石能源有限,再加上其本身的不可再生性,基本是用一点少一点。从经济方面来看,开发提纯化石能源的过程需要耗费巨量资金,而风力、水力发电耗费资金与其对比不值一提。从技术方面来看,我国在新能源研究上已经初步取得较大成果,已经出现了一批新能源汽车以供使用。因此,为了让人们更好的意识到化石能源的稀缺,本报告特选择今年10月以来的各种化石能源产品产量及增速为数据源,以可视化图表的形式让人们直观的看到每年能源的产出,旨在呼吁人们减少化石等不可再生能源的使用,大力开发可再生能源,如风力、水力发电、乙醇能源等。

2.本数据集包含原煤(万吨)、原油(万吨)、天然气(亿立方米)、  煤层气(亿立方米)、液化天然气(万吨)、原油加工量(万吨)、汽油(万吨)、煤油(万吨)、柴油(万吨)、燃料油(万吨)、石脑油(万吨)、液化石油气(万吨)、石油焦(万吨)、石油沥青(万吨)、焦炭(万吨)、发电量(亿千瓦时)、火力发电量(亿千瓦时)、水力发电量(亿千瓦时)、核能发电量(亿千瓦时)、风力发电量(亿千瓦时)、煤气(亿立方米)21个指标,以及本月(10月)产量、1-10月总产量、当月(10月)增速和累计(平均)增速四个属性。其中增速计算公式为(本期产量-去年同期产量)/去年同期产量,因此存在负值出现。

 

3.数据可视化:

 

 

1.10月原油加工各成品比例及转化损耗

10月份原油产量减去各转化产品产量得到转化损耗604万吨,将数据带入饼图可知,转化损耗高达10.3%,比大部分产品所占比例都高,这表明我国原油转化率任有极大的上升空间。其次,据图可知,由原油转化的各成品中,柴油和汽油所占比例最高,煤油和石油焦所占比例最少。

 

 

2.10月发电各模式产量占比饼图

将总发电量减去四大主要发电模式发电量,得到其他发电190亿千瓦时,将数据带入饼图可知,其他发电占比2.9%,占比最少,而占总发电量比例最高的火力发电占比67.4%,第二大发电方式为水力发电,占比15.0%,这表明目前我国主要发电方式为火力发电,其次为水力发电。

 

 

3.各指标10月产量占1-10月总产量的比例

将各指标10月产量除上1-10月总产量值得到该月产量占比,且易知每月平均产量占比为10%。进而由此绘制条形图如上,据图可知,10月份原油、液化天热气和天然气占比均超过10%,这三种均为目前常用不可再生能源,本月超出平均产量,下月则应适量减低开采量,以实现可持续发展战略。

 

 

4.各能源指标产量增速金字塔

将各能源指标10月份和1-10月份累计平均产量的增长速度数据录入金字塔模型中,得到如上图。据图可知,10月份煤气、焦炭、液化天然气和天然气的产量增速明显高于累计平均增速,这表明当月以上能源指标需求量急剧升高,如果不加以节制,从长远来看将造成不可逆转的结果。

 

 

5.原油加工各成品指标增速

各指标产量增速=(本期产量-去年同期产量)/去年同期产量,根据产量增速公式可知,当增速为负值时,表明本期产量与去年同期产量相比有所下降。因此,据上图易知,汽油、煤油、柴油以及石油沥青等原油成品的产量增速低于零线,即为负值,这表明这四种原油成品与去年相比,产量开始下降,换言之也可表明我国正在有意识地控制不可再生能源指标的开采,而相对的,柴油产量与去年相比大幅上升,由于柴油属于可再生能源,再生速度较快,因此在很大程度上可以代替不可再生能源的使用。

 

 

6.20221-10月原油成品各指标累计产量(万吨)

将1-10月原油加工各成品累计产量数据绘制成一幅雷达图,据图分析可知,今年10个月以来以柴油和汽油产量为最,均超过了10000万吨的产量,这两种能源均为汽车等交通工具所需的必备能源,应用广泛,但从长远来看却有害无益,这是对原油的极大损耗,基于原油属于不可再生资源,用一点少一点,因此,我国因该逐步减少原油的消耗,大力开发新能源、可再生能源的使用,这是可持续发展

的重要举措。

 

 

 

7.各能源指标产量20221-10月累计(平均)增速

由于各能源累计增速数据过多,使用柱形图不太美观,因此改用棉棒图绘制,从上图可知,风力发电产量的平均增速最大,而焦炭产量的平均增速最少,从这里可以看出虽然我国使用焦炭等不可再生资源的产量较高,但我国本着可持续发展的原则,每年都在控制着不可再生能源产出的增速,使其尽可能地低甚至为负值,而大力发展可再生能源如风力发电等地产出,使其每年地增速保持在一个尽可能高的位置。

三、总结(15分) 

通过前面各个图表的可视化分析,我们可以非常直观的了解到我国每年化石能源的产量居高不下,尤其以原煤、柴油、汽油、焦炭为主,这些能源都是我们生活中的常规能源,基本普及到家家户户,而在产量增速方面,除了部分如汽油、煤油、石油沥青等能源为负值以外,其他均为正值,这表明我国在能源产出方面正逐步上升,这些无一不在加剧着我国化石能源储备的消耗,而唯一值得安慰的是我国在风力、水力、火力、核能发电方面的累计增速为正值,且有逐步上升的趋势,而化石能源增速有逐年下降的趋势。因此,为了可持续发展战略的有效实施,我们应该逐步减少化石能源的使用,逐步实现以新能源代替化石能源,开发研究更多可靠且实用的新可再生能源,慢慢消除对化石能源的依赖。

 

四、附录10分)

图一源代码:

import matplotlib.pyplot as plt

import numpy as np

import matplotlib.cm as cm

plt.rcParams['font.sans-serif']=['SimHei']

plt.rcParams['axes.unicode_minus'] = False

kinds = ['汽油','煤油','柴油','燃料油',

         '石脑油','液化油','石油焦','石油沥青','转化损耗']

data = [1236.2/5861.6,243.5/5861.6,1882.9/5861.6,392/5861.6,

        507/5861.6,412/5861.6,261.9/5861.6,322.1/5861.6,604/5861.6]

colors = cm.GnBu(np.arange(len(data)) / len(data))

position = [0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1]

plt.pie(data,labels=kinds,autopct='%3.1f%%',shadow=True,

        explode = position,startangle=90,colors = colors)

plt.title("10月原油加工各成品比例及转化损耗")

plt.legend(loc='lower center',

           title = "Pie Learning",

           fontsize = 10,

           bbox_to_anchor=(1, 0.5, 0.4, 1))

plt.show()

 

图二源代码:

import matplotlib.pyplot as plt

import numpy as np

import matplotlib.cm as cm

plt.rcParams['font.sans-serif']=['SimHei']

plt.rcParams['axes.unicode_minus'] = False

 

kinds = ['火力发电','水力发电','核能发电','风力发电','其他发电']

data = [4453.1/6610,993.5/6610,360.1/6610,613.3/6610,190/6610]

colors = cm.OrRd(np.arange(len(data)) / len(data))

position = [0.1,0.1,0.1,0.1,0.1]

plt.pie(data,labels=kinds,autopct='%3.1f%%',shadow=True,

        explode = position,startangle=90,colors = colors)

plt.title("10月发电各模式产量占比饼图")

plt.legend(loc='lower center',

           title = "Pie Learning",

           fontsize = 10,

           bbox_to_anchor=(1, 0.5, 0.4, 1))

plt.show()

 

图三源代码:

import numpy as np

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']

plt.rcParams['axes.unicode_minus'] = False

 

def autolabel(ax,rects):

    for rect in rects:

        width = rect.get_width()

        ax.text(width+2,rect.get_y(),s='{}'.format(width),

                ha='center',va='bottom')

 

y = np.arange(8)

x = np.array([10.04,10.07,10.35,10.12,11.31,10.54,9.5,9.93])

labels = np.array(['原煤','原油','天然气','煤层气','液化天然气','原油','发电量','煤气'])

fig,ax1 = plt.subplots(1,1)

barh1 = ax1.barh(y,x,height=0.5,tick_label=labels,color='orange')

ax1.set_xlabel('10月产量占1-10月总产量比例(%)')

ax1.set_title('各指标10月产量占1-10月总产量的比例')

ax1.set_xlim(0,x.max()+5)

ax1.axvline(10,ls='--',linewidth=1.0,label='平均产量',color='red')

ax1.legend(loc='best')

plt.grid(b=True,axis='x',linewidth=0.5)

autolabel(ax1,barh1)

plt.show()

 

图四源代码:

import numpy as np

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']

plt.rcParams['axes.unicode_minus'] = False

y = np.arange(1,9)

labels = ['原煤','原油','天然气','煤层气','液化天然气','焦炭','发电量','煤气']

x1 = [-1.2,-2.5,-12.3,-8.55,-18.95,-6.9,-1.3,-16.0]

x2 = [10,3,6,8.99,9.49,0.1,2.2,2.5]

fig,ax =plt.subplots(1,1)

ax.barh(y,x1,tick_label=labels,label='当月(10)增速',color='red')

ax.barh(y,x2,tick_label=labels,label='累计(平均)增速',color='blue')

ax.set_ylabel("各指标产量")

ax.set_xticks([-20,-15,-10,-5,0,5,10,15,20])

ax.set_xticklabels([20,15,10,5,0,5,10,15,20])

ax.set_xlabel("各指标产量增速(%)")

ax.set_title("各能源指标产量增速金字塔")

plt.grid(b=True,axis='x',linewidth=0.5)

ax.legend(loc='best')

plt.show()

 

图五源代码:

import numpy as np

import seaborn as sns

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']

plt.rcParams['axes.unicode_minus'] = False

 

x = np.arange(1,9)

y1 = [-4.9,-20.8,30.5,1.9,4.4,0.1,0.3,-32.5]

y2 = [-3.5,-32.2,-18.3,22,9.7,-2.1,-0.6,-32]

fig,ax = plt.subplots(1,1)

ax.axhline(0,ls='--',linewidth=1.0,color='red')

plt.annotate("零线",

             xy = (5,0),

             xytext = (4.5,-12),

             arrowprops = dict(arrowstyle="->",color = 'red'),

             color = "red")

ax.plot(x,y1,label = '当月(10)增速')

ax.plot(x,y2,label = '累计(平均)增速')

ax.set_xticklabels(['','汽油','煤油','柴油','燃料油',

               '石脑油','液化石油气','石油焦','石油沥青'])

ax.legend(loc='best')

plt.ylim(-35,35)

plt.xlabel("各原油成品能源指标")

plt.ylabel("产量增速(%)")

plt.title("原油加工各成品指标增速")

plt.grid(b=True,axis='x',linewidth=0.5)

sns.despine()

plt.show()

 

图六源代码:

import matplotlib.pyplot as plt

import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']  

plt.rcParams['axes.unicode_minus'] = False  

results = [{"汽油":12193.1 , "煤油": 2381.7, "柴油": 15268.6,"燃料油":4283.3,

            "石脑油":4722.8,"液化石油气":4107.1,"石油焦":2468.7,

            "石油沥青":3228.2}]

data_length = len(results[0])

angles = np.linspace(0, 2*np.pi, data_length, endpoint=False)

labels = [key for key in results[0].keys()]

score = [[v for v in result.values()] for result in results]

score_a = np.concatenate((score[0], [score[0][0]]))

angles = np.concatenate((angles, [angles[0]]))

labels = np.concatenate((labels, [labels[0]]))

fig = plt.figure(figsize=(8, 6), dpi=100)

ax = plt.subplot(111, polar=True)

ax.plot(angles, score_a, color="springgreen")

ax.fill(angles, score_a, alpha=0.25,color = 'g')

ax.set_thetagrids(angles*180/np.pi, labels)

ax.set_theta_zero_location('N')

ax.set_rlim(0, 17000)

ax.set_rlabel_position(250)

ax.set_title("20221-10月原油成品各指标累计产量(万吨)")

plt.legend(["累计产量(万吨)"], loc='best')

plt.show()

 

图七源代码:

import matplotlib.pyplot as plt

import numpy as np

import seaborn as sns

plt.rcParams['font.sans-serif'] = ['SimHei']  

plt.rcParams['axes.unicode_minus'] = False  

x = np.arange(1,13)

y = np.array([10,3,6,8.99,9.49,0.1,2.2,2.5,0.8,2.2,1.2,12.4])

labels = np.array(['原煤','原油','天然气','煤层气','液化天然气',

                   '焦炭','发电量','煤气','火力发电','水力发电','核能发电','风力发电'])

fig = plt.figure(figsize = (10,6),dpi= 80 )

ax = fig.add_subplot(111)

 

markerline,stemlines,baseline = ax.stem(x,y,linefmt='--',

                    markerfmt = 'o',label='TestStem',use_line_collection=True)

plt.setp(stemlines,lw=1)

ax.set_title("各能源指标产量201-10月累计(平均)增速",fontdict={'size':18})

ax.set_ylabel("累计增速(%)")

ax.set_xlabel("各能源指标")

ax.set_xticks(x)

ax.set_xticklabels(labels,rotation=60)

ax.set_ylim([0,13])

for temp_x, temp_y in zip(x,y):

    ax.text(temp_x,temp_y+0.5,s='{}'.format(temp_y),ha = 'center',

            va = 'bottom',fontsize=14)

sns.despine()

plt.show()

 

posted @ 2022-12-25 10:53  天台风很大  阅读(469)  评论(0编辑  收藏  举报