《Python数据分析与可视化教案 6.5 工业数据分析与可视化.docx》由会员分享,可在线阅读,更多相关《Python数据分析与可视化教案 6.5 工业数据分析与可视化.docx(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、6.5工业数据分析与可视化作为清洁能源的太阳能相对煤炭石油等能源来说是可再生、无污染的,只要有太阳就 有太阳能,所以太阳能的利用被很多国家列为重点开发工程。太阳能具有波动性和间歇性的特性,太阳能电站的输出功率受光伏板本体性能、气象 条件、运行工况等多种因素影响,具有很强的随机性,由此带来的大规模并网困境严重制 约着光伏发电的开展。因此挖掘光伏发电数据中的价值,对光伏数据进行分析尤为重要。一、数据源分析本案例包括三个数据集:photovoltaic.csv、wind_direction.xlsxs wind_speed.txto ID :表示记录编号。板温:表示光伏电池板背测温度。现场温度:表示
2、光伏电站现场温度。转换效率A :表示数据采集点A处的光伏板转换效率。转换效率B :表示数据采集点B处的光伏板转换效率。转换效率C:表示数据采集点C处的光伏板转换效率。电压A :表示数据采集点A处汇流箱电压值。电压B :表示数据采集点B处汇流箱电压值。电压C :表示数据采集点C处汇流箱电压值。电流A:表示采集点A处汇流箱电流值。电流B :表示采集点B处汇流箱电流值。电流C :表示采集点C处汇流箱电流值。功率A :表示采集点A处的功率Pa. P=UIO功率B :表示采集点B处的功率Pb, P二UI。功率C :表示采集点C处的功率Pc, P=UI。发电量:表示光伏电厂现场发电量。数据源1如图6-*所
3、示。Z| photovoltaic.csv -记事本文件(F)编辑(E)格式(0)查看(V)喏助(H)时间,ID,光照强度,功率A,功率B,功率C,板温现场温度,电压A,电压B,电压C,电流A用流B,电流C,转换效率A,转换效率B,转换效率C,发电量 2018-06-01 08:31:30,9,13,909.72,148.05,1031.03,-19.33,-17.5,722.0,705.0,721.0,1.26,0.21,1.43,259.11,42.17,293.66,1.2899280687752308 2018-06-01 08:34:30,10,34,976.86,155.98,10
4、87.5,-19.14,-17.4729.0,709.0,725.0,1.34,0.22,1.5,106.32,1698,118.36,1.437751581 2018-06-01 08:37:30,11,30,1128.4,172.08,1132.56,-18.73,-17.3,728.0,717.0,726.0,1.55,024,1.56,139.0,21.2,139.51,1.692574814 2018-06-01 08:40:30,12,41,1279.25,166.06,1310.4,-17.54,-17.0,731.0,722.0,720.0,1.75,0.23,1.82,114
5、.86,14.91,117.66,1.975787459 2018-06-01 08:43:30,13,50,1334.07,200.2,1472.58,-16.68,-16.6,729.0,715.0,729.0,1.83,08:46:30,14,53,1474.6,225.37/517.34,-15.43,-16.6,730.0,727.0,726.0,2.02,0.31,2.09,101.72,15.55,104.67,2.370655595 2018-06-01 08:49:30,15,65,1548.51,233.28,1674.4,-14.6,-16.3,727.0,729.0,7
6、28.0,2.13,0.32,2.3,86.86,13.09,93.92,2.532091305 2018-06-01 08:52:30,16,76,1619.93,538.72,1723.12,-141,-16.2,733.0,728Q724Q2.21,0.74,2.38,77.59,25.8,82.53,2.779719016 2018-06-01 08:55:30,17,83,1681.68,1677.36,1810.0,-13.27,-16.2,728.0,723.0,724.0,2.31,2.32,2.5,73.55,73.36,79.16,3.3760893010660133 20
7、18-06-01 08:58:30,18,86,1802.96/756.89,1861.12,12.41,16.2,727.0,729.0,727.0248241,2.56,75.89,73.95,78.34,3.6370823761186575 2018-06-01 09:01:30,19,96,1865.82,1865.82,1979.25,-11.25,-159726.0,726.0,725.0,2.57257273,70.09,70.09,74.35,3.832377845 2018-06-01 09:04:30,20,1000923.9,1900.8,2011.59, 10.77,1
8、58726Q720.0,721.0265,2.64,2.79,69.27,68.43,72.42,3.956691872ID :表ZF记录编号。风向:表示光伏电厂现场风的来向。* Figure 1簧G6 中Q三上 El不同板温数据段的频数饼图图6-*步骤10 (2)输出结果四、结论1 .从数据筛选分析的结果中可以看出,发电量排名前10条数据中,在可能影响发电量 的四个因素中,转换效率和风速变化没有明显的规律,说明这两个因素可能不是影响发电 量的主要因素。2 .从描述性统计分析的结果中可以看出,在所有统计的月份中,8月的总发电量最高,3 .在统计小时段中,12:00-12:59时间段的平均发电量
9、最大。4 .从相关性分析的结果中可以看出,发电量与光照强度的相关系数最高,说明光照强 度大可以增加发电量。5 .从板温直方图的结果中可以看出,板温基本集中在-20到30,在。到10之间的数据 最多,而且数据有左偏的趋势。6 .从发电量和光照强度双重图折线的结果中可以看出,发电量与光照强度属于紧密相 关,所以如果想要提高发电量,应该想方法增加光照强度。7 .从板温段频数饼图的结果中可以看出,(-5, 5的数据最多,占了 30.8%数据源2如图6-*所示。ID :表示记录编号。风速:表示光伏电厂现场风速测量值。 数据源3如图6-*所示。wind_speed.txt - i己事本 文件(F)编辑(E
10、)格式(0)查看(V)帮助(H) ID风速10.19 030.610 0.81.111 0.90.912 1.10.913 0.71.014 1.51.5图6.*数据源3 (局部) 二、目标1 .根据三个点A、B、C的转换效率、电流、电压、功率计算出综合转换效率、电流、 电压、功率。2 .筛选出板温在10到30之间,发电量排名前10对应的发电量、板温、光照强度、转 换效率、风速,查看是否有一些因素可能对于发电量有影响作用。3 .计算不同月份总发电量,分析哪些月份的总发电量较高。4 ,计算不同小时段的平均发电量,分析哪些小时段平均发电量最高。5 .计算发电量与光照强度、转换效率、板温之间之间的相
11、关系数,分析哪些因素是发 电量的主要因素。6 .根据板温绘制直方图,查看板温的数据分布。7 .根据发电量和光照强度两列数据绘制双重折线图,并查看其关系,因为两列数据的 数据量纲不同,可以先对数据进行标准化再画图。8 .将板温进行数据分段,再绘制段的饼图,分析哪个板温段占比做多。三、分析步骤步骤1:导入库,设置参数。(1)导入所需要的库 pandas、numpy、matplotlib.pyploto(2)利用pd.set_option解除显示宽度的显示,设置数据对齐。(3)利用reParams设置相关参数,将显示字体设置为黑体,设置显示负号,字体大 小设置为15。步骤1代码如下:import p
12、andas as pdimport matplotlib.pyplot as pitpd.set_optionCdisplay.unicode.east_asian_widthTrue)pd.seCoptionCdisplay.widthNone)pltrcParams,font.sans-serif=,Simhei,plt.rcParamsaxes.unicode_minus=Falseplt.rcParams font, size =15步骤2:读入数据,合并数据,显示数据形状。(1)导入光伏数据的 photovoltaic.csv、wind_direction.xlsxs wind_sp
13、eed.txt (三个文件 均存放在c:data路径中),将导入的数据命名为datal、data2、data3o其中,wind_speed.txt 文件的分隔符是Tab, wind_direction.xlsx的数据在Sheetl工作表内。(2)利用merge函数将data 1、data2s data3三个数据按照关键字段“ID”进行合并, 合并方式为内连接,命名为data。(3)输出data的行数、列数、列名以及前5行。步骤2 (1)代码如下:datal = pd.read_csv(nc:/data/photovoltaic.csvn)data2 = pd.read_excel(nc:/da
14、ta/wind_direction.xlsxn)data3 = pd.read_csv(nc:/data/wind_speed.txtn, sep=t)步骤2 (2)代码如下:data = pd.merge(datal,data2,on=ID)data = pd.merge(data,data3,on=TD)步骤2 (3)代码如下:print(数据的行数=%dn 数据的列数=%dH%(data.shapeO,data.shape 1 )print(数据的列名为:n”, data, columns)print(数据的前 5 行为:n”,data.head。)输出结果如图6-*所不。Run:6-5
15、=5C:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/6-5.py 数据的行数=17409 数据的列数=20 数据的列名为:Index(时间,ID,光照强度,功率A,功率B,功率U,板温,现场温度,电压A,电压B,电压C,电流A,电流电流U,转换效率A,转换效率B,转换效率C,发电量,风向,风速 dtype=object)数据的前5行为:时间ID光照强度功率A功率B功率C板温现场温度电压A电压B电压C电流A 电流B 电流C转招02018-06-01 08:07:30110.000.000.000.01
16、0.10.00.00.00.000.0012018-06-01 08:31:30913909.72148.051031.03 -19.33-17.5722.0705.0721.01.260.2122018-06-01 08:34:301034976.86155.981087.50 -19.14-17.4729.0709.0725.01.340.2232018-06-01 08:37:3011301128.40172.081132.56 -18.73-17.3728.0717.0726.01.550.2442018-06-01 08:40:3012411279.25166.061310.40 -
17、17.54-17.0731.0722.0720.01.750.23Process finished with exit code 0图6-*步骤2输出结果步骤3 :添加新列。(1)生成新列“转换效率”,计算公式为:转换效率=(转换效率A+转换效率B+转 换效率C) 13。(2)生成新列“电压”,计算公式为:电压=(电压A+电压B+电压C) /3。(3)生成新列“电流”,计算公式为:电流二(电流A+电流B+电流C) /3。(4)生成新列“功率”,计算公式为:功率=(功率A+功率B+功率C) /3。步骤3代码如下:data/转换效率I = (data转换效率A* + data转换效率B* + da
18、ta转换效率C)/3data电压】=(data电压 A1 + data电压 B + data电压。)/3data电流卜(data电流A1 + data电流B + data电流。)/3data功率 1 = (data功率 A1 + data/功率 B* + data功率。)/3print(data转换效率?电压?电流:功率输出结果如图6-*所示。Run:6-5C:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/6-5.py转换效率电压电流功率00.0000000.0000000.0000000.00000
19、01198.313333716.0000000.966667696.266667280.553333721.0000001.020000740.113333399.903333723.6666671.116667811.013333482.476667724.3333331.266667918.570000Process finished with exit code 0图6-*步骤3输出结果步骤4 :时间序列处理(1)将“时间”列转换为日期格式。(2)从“时间”列中分别抽取出月、日、小时,并生成新变量“月”、“日、时步骤4 (1)代码如下:data时间=pd.to_datetime(data
20、时间)步骤4 (2)代码如下:data月=data时间.dt.monthdata日=data时间dt.daydata时=data时间.dt.hour print(data月?日;时川:5) 输出结果如图6-*所不。Run:6-5AC:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/6-5.py月日时 0618 rp16182618Process finished with exit code 0图6-*步骤4输出结果步骤5:数据筛选。筛选出板温在10到30之间,发电量排名前10对应的发电量、板 温、光照
21、强度、转换效率、风速。步骤5代码如下:data_loc = data.loc(data板温=10) & (data板温C:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/6-5.py发电量光照演度转换效率 板温发电量 1.000000 0.879766 -0.124008 0.512180 rp 光照强度 0.879766 1.000000 -0.251364 0.696835过 转换效率-0.124008 -0.251364 1.000000 -0.238970, 板温 0.512180 0.6968
22、35 -0.238970 1.000000Process finished with exit code 0图6-*步骤7输出结果步骤8 :板温直方图。根据板温绘制直方图,直方图柱子设为30个,柱子颜色设为天 蓝,边缘颜色设为黑色,直方图标题设为“板温直方图”,x轴标题设为“板温”,y轴标题设为“频数”,y轴标题旋转度数设为。,y轴刻度设为0, 300, 600, 900, 1200, 1500o 步骤8代码如下:plt.hist(data板温】,bins=30, color=skyblue,edgecolor=k)pit. title。板温直方图)plt.xlabel,板温)plt.ylab
23、el(频数,rotation=0)plt.yticks(np.arange(0,1501,300)plt.show()输出结果如图6-*所示。 Figure 1- X,育G今 中Q三上 El图6-*步骤8输出结果步骤9 :绘制双重折线图。(1)将发电量和光照强度两列的数据进行标准化,数据标准化的方法为: (数据-平均值)/标准差。(2)根据发电量和光照强度两列的标准化数据绘制线性关系双重折线图,x轴为 ID, x轴范围为。到1000,颜色分别设为棕色和黄绿色,添加图例。步骤9 (1)代码如下:yl = data1发电量】meanl = data发电量.mean() stdl =data发电量s
24、td() y l_std = (yl-mean 1 )/std 1 y2 = data光照强度mean2 = data光照强度mean()std2 = data光照强度1.std()y2_std = (y2-mean2)/std2print(”发电量标准化前5行数据为:n”,yl_std:5)print(光照强度标准化前5行数据为:ny2_std:5) 输出结果如图6-*所不。Run:6-5C:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/6-5.py 发电量标准化前5行数据为:0-1.5424281
25、-1.2723962-1.2297003-1.1560994-1.074298Name:发电量,dtype: float64光照强度标准化前5行数据为:0-1.5408261-1.4863132-1.3909153-1.4090864-1.359115Name:光照强度,dtype: float64Process finished with exit code 0图6-*步骤9 (1)输出结果 步骤9 (2)代码如下:x = datafIDplt.pkt(x,yl_std,color=brownJabel=发电量)pltplot(x,y2_std,cok)r=,yellowgreenUabel
26、=光照强度)plt.legend(loc = upper right1)plExlabelCID1)plt.xlim(OJOOO)plt.show()输出结果如图6-*所示。Figure 1 X伊今 +Q三廿 E)图6-*步骤9 (2)输出结果步骤10:绘制饼图。(1)将板温分成六段,从-25到35每隔10为一段,并统计各段的频数,并降序排 序。(2)根据板温的分段数据绘制饼图,内部文本颜色大小设为深绿色、14,饼图的外部 文本颜色大小设为红色、16,设置标题为“不同板温数据段的频数饼图”。步骤10 (1)代码如下:data板温段=pd.cut(data板温工-25, -15, -5, 5,
27、15, 25, 35)result = data板温段.value_counts()result = result.sort_values(ascending=False)print(各板温段频数为:n” jesult)输出结果如图6-*所不。Run:6-5AC:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/6-5.py各板温段频数为:I(-5, 5 (5, 15 (15, 25534445573272(-15, -52602(25, 351224(-25, -15368Name:板温段,dtype:
28、 int64Process finished with exit code 0图6-*步骤10 (1)输出结果步骤10 (2)代码如下:c = ,darkorange7yellowgreenVskyblue,lightyellowVlightgreen,pink,patches, text 1 ,text2 = pltpie(x=result,labels=result.index,autopct = 1%. If%,colors = c,radius=l) for i in textl:i.set_size(16)i.set_color(Ted)for i in text2:i.set_size(14)iset_color(darkgreen)pit. title。不同板温段的频数”,color=b)plt.show()输出结果如图6-*所示。