基于天气预报的数据分析与可视化课程设计(Python实现)

上传人:lil****ar 文档编号:333429233 上传时间:2022-09-02 格式:PDF 页数:12 大小:1.93MB
返回 下载 相关 举报
基于天气预报的数据分析与可视化课程设计(Python实现)_第1页
第1页 / 共12页
基于天气预报的数据分析与可视化课程设计(Python实现)_第2页
第2页 / 共12页
基于天气预报的数据分析与可视化课程设计(Python实现)_第3页
第3页 / 共12页
基于天气预报的数据分析与可视化课程设计(Python实现)_第4页
第4页 / 共12页
基于天气预报的数据分析与可视化课程设计(Python实现)_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《基于天气预报的数据分析与可视化课程设计(Python实现)》由会员分享,可在线阅读,更多相关《基于天气预报的数据分析与可视化课程设计(Python实现)(12页珍藏版)》请在金锄头文库上搜索。

1、基于天预报的数据分析与可视化课程设计(Python实现)转载篇基于天预报数据可视化项的原创章:,已征得作者同意在此基础上,本数据分析与可视化课程设计是对原章中的部分成果进了改进和优化。改进与优化之处在于:(1)精配,可视化效果更佳。(2)多件结构,件之间的层次更加清晰。(3)路径地址采相对路径,可移植性。(4)增加了主菜单,便选择调需要执的功能。(5)对风向雷达图贴上了个向的标签,并且使不同的随机颜对个向进着,便区分。(6)增加动态效果,对“XX变化图”增加了运时动态成的效果,对“变化”的感知将更加深刻,具体原理见chart.py件。(7)对温度与相对湿度的相关性分析增加了求解尔逊相关系数(定

2、义了个coefficient函数求解)和求解温度-相对湿度两个变量之间的线性回归程(利机器学习库sklearn中的LinearRegression求解),并将相关系数和拟合曲线展。、主要件结构说明: dataset件夹:存放天数据的csv件。 main.py:调dataset中的数据和src中的源代码,得出可视化图,然后保存于result件夹,它是程序运。 result件夹:存放运完成后的可视化图。 src件夹:存放数据分析与可视化的源代码。 执main.py后,XX变化图的可视化将会是个动态变化图展,但所有保存的可视化图都是静态的.png图。、具体件细节(1)main.py源代码:#main

3、.py是启动程序,负责启动和调相应的功能,并导数据集from src import dataprocessimport pandas as pdimport matplotlib.pyplot as pltimport osfrom os import pathdef main(): #解决基本显问题 plt.rcParamsfont.sans-serif = SimHei # 解决中显问题 plt.rcParamsaxes.unicode_minus = False # 解决负号显问题 #原始数据集导 localpath=path.dirname(_file_) datapath=os.pa

4、th.join(localpath,dataset/weather1.csv) data = pd.read_csv(datapath, encoding=gb2312) #数据分析与可视化实现 key=1 print(n请选择你所需要的分析: n0、温度变化图n1、相对湿度变化图n2、温度与相对湿度分析图n3、降量变化图n4、风向雷达图) #多功能数据分析与可视化的选择 #try-except结构避免户输不正确或恶意输 while 1: try: i=int(input(输需要查看的图表(输-1退出):) break except: print(输有误,请重新输) print(n请选择你所需

5、要的分析: n0、温度变化图n1、相对湿度变化图n2、温度与相对湿度分析图n3、降量变化图n4、风向雷达图) #选择对应功能后,调对应函数 #while循环实现多次查看不同的功能 while key=1: if(i=-1): key=0 break while i!=-1: if i=0: dataprocess.temperature(data)#温度变化曲线 break elif i=1: dataprocess.humidity(data)#湿度变化曲线 break elif i=2: dataprocess.relevance(data)#温湿度相关性分析 break elif i=3

6、: dataprocess.rainfall(data)#降量曲线图 break elif i=4: dataprocess.wind(data)#风级风向雷达图 break elif i=-1: key=0 print(正在退出.) break else: print(输有误请重新输) print(输有误请重新输) break if(key=0): break print(n请选择你所需要的分析: n0、温度变化图n1、相对湿度变化图n2、温度与相对湿度分析图n3、降量变化图n4、风向雷达图) i = int(input(输需要查看的图表(输-1退出):) print(n退出成功,欢迎下次使

7、!)#启动if _name_=_main_: main()(2)dataset件夹内部:存有个天数据的csv件,可以参考原作者章中的爬代码获取地区当前天数据。原作者章链接:。(3)src件夹内部:内有两个.py件,dataprocess.py是数据分析处理件,chart.py是数据可视化件,main函数会先调处理件后再可视化件。(4)dataprocess.py代码:#dataprocess.py程序是数据处理程序#负责对来对数据集进数据分析和处理,以便于提供给chart.py程序进可视化import pandas as pdimport numpy as npimport matplotli

8、b.pyplot as pltfrom sklearn.linear_model import LinearRegressionfrom src import chart#温度变化图def temperature(data): tems = list(data温度)#导温度列 hours = list(data时)#导时间列 temave = sum(tems) / len(tems) # 求平均温度 temmin = min(tems)#求最低温度 tem_minhour = hourstems.index(temmin) # 求最低温度及其时刻 temmax = max(tems)#求最温

9、度 tem_maxhour = hourstems.index(temmax) # 求最低温度及其时刻 #传递给chart.py中对应的函数进可视化 chart.temdiagram(tems, hours, temave, temmin, tem_minhour, temmax, tem_maxhour)#相对湿度变化图def humidity(data): hours = list(data时)#导时间列 hums = list(data相对湿度)#导相对湿度列 humave = sum(hums) / len(hums) # 求平均相对湿度 hummax = max(hums)#求最湿度

10、 hum_maxhour = hourshums.index(hummax) # 求最相对湿度及其时刻 hummin = min(hums)#求最湿度 hum_minhour = hourshums.index(hummin) # 求最低相对湿度及其时刻 #传递给chart.py中对应的函数进可视化 chart.humdiagram(hours, hums, humave, hummax, hum_maxhour, hummin, hum_minhour)#降量曲线图def rainfall(data): hours = list(data时)#导时间列 rainfall = list(dat

11、a降量)#导降量列 rainfallavg = sum(rainfall) / len(rainfall)#求平均降量 rainfallmax = max(rainfall)#求最降量 hour_rainfallmax = hoursrainfall.index(rainfallmax)#求最降量对应时间 rainfallmin = min(rainfall)#求最降量 hour_rainfallmin = hoursrainfall.index(rainfallmin)#求最降量对应时间 #传递给chart.py中对应的函数进可视化 chart.rainfalldiagram(hours,

12、rainfall, rainfallavg, rainfallmax, hour_rainfallmax, rainfallmin, hour_rainfallmin)#风向雷达图def wind(data): wind = list(data风向)#导风向列 windspeed = list(data风级)#导风级列 #将定性数据风向转换为定量数据风向 for i in range(0, 24): if windi = 东风: windi = 0 elif windi = 东北风: windi = 45 elif windi = 北风: windi = 90 elif windi = 西北风

13、: windi = 135 elif windi = 西风: windi = 180 elif windi = 西南风: windi = 225 elif windi = 南风: windi = 270 elif windi = 东南风: windi = 315 degs = np.arange(0, 316, 45)#将0-360度分为块(因为有个风向) #下的循环处理是于求每个向的平均风速 temp = for deg in degs: speed = # 获取 wind_deg 在指定向的风速平均值数据 for i in range(0, 24): if windi = deg: spe

14、ed.append(windspeedi) if len(speed) = 0: temp.append(0) else: temp.append(sum(speed) / len(speed) #传递给chart.py中对应的函数进可视化 chart.windradar(temp)#尔逊相关系数函数def coefficient(var1,var2): aavg = sum(var1)/len(var1)#变量1的平均值 bavg = sum(var2)/len(var2)#变量2的平均值 covab = sum(x - aavg)*(y - bavg) for x,y in zip(var

15、1,var2)#变量1和变量2的协差 asd= math.sqrt(sum(i - aavg)*2 for i in var1)#变量1的标准差 bsd= math.sqrt(sum(j - bavg)*2 for j in var2)#变量2的标准差 bsd= math.sqrt(sum(j - bavg)*2 for j in var2)#变量2的标准差 raletive_coe = covab/(asd*bsd) #变量1和2的尔逊相关系数 return round(raletive_coe,4)#保留四位数#温湿度相关性分析def relevance(data): tems = dat

16、a温度#导温度列 hums = data相对湿度#导湿度列 #series转array x = np.array(data温度).reshape(-1, 1) y = np.array(data相对湿度).reshape(-1, 1) #利sklearn库中的线性回归模型进拟合数据集 clf = LinearRegression() clf.fit(x, y)#拟合线性模型 w = clf.coef_0, 0#权重 b = clf.intercept_0#截距 f = w * x + b#预测值 #传递给chart.py中对应的函数进可视化 chart.relevancediagram(tems, hums, x,w,b,f)(5)chart.py源代码:#chart.py程序是调matplotlib中的库函数进可视化#数据的接收dataprocess.py程序,然后进可视化import matplotlib.pyplot as pltimport mathimport numpy as npimport osfrom os import path#设置处理后图的保存路径path=pa

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号