前言
天气预报我们每天都会关注,天气情况会影响到我们日常的增减衣物、出行安排等。每天的气温、相对湿度、降水量以及风向风速是关注的焦点。数据可视化方面,使用matplotlib、numpy、pandas、scikit-learn库对数据进行预处理、可视化处理。得到了一天内温度变化曲线、相对湿度变化曲线图、温湿度相关性、降水量变化图、以及风向雷达图等。机器学习方面,使用最为经典的线性回归方法,对天气数据进行分析,对天气数据预测,然后通过平均绝对值误差(Mean Absolute Error),表示预测值和观测值之间绝对误差的平均值进行约束和优化,最后使用皮尔逊相关系数进行分析与评价。

总的来说,本课程设计涉及到numpy库、pandas库、matplotlib库、sklearn库、以及文件存取的具体应用.可移植性强、界面美观、初具小型系统雏形,是一份结合数据分析、数据可视化与机器学习学习的课程设计。希望读者喜欢~

本课程设计项目特色在于:
(1)精心配色,可视化效果更佳。
(2)多文件结构,文件之间的层次更加清晰。
(3)路径地址采用相对路径,可移植性高。
(4)增加了主菜单,方便选择调用需要执行的功能。
(5)增加动态效果,对“XX变化图”增加了运行时动态生成的效果,对“变化”的感知将更加深刻,具体原理见chart.py文件。
(6)通过scikit-learn库中的LinearRegression()来分析温度-相对湿度的线性回归方程,以及使用相关系数衡量相关性。

考虑到有一部分读者想与笔者有进一步交流,可以添加我的微信:StarsForMoon,添加请说明来意(如CSDN)。感谢您对我的支持!😃

一、主要文件结构

说明:

① dataset文件夹:存放天气数据的csv文件。

② main.py:调用dataset中的数据和src中的源代码,得出可视化图片,然后保存于result文件夹,它是程序运行入口。

③ result文件夹:存放运行完成后的可视化图片。

④ src文件夹:存放数据分析与可视化的源代码。

⑤ 执行main.py后,XX变化图的可视化将会是一个动态变化图展示,所有保存的可视化图片都是静态的.png图片。

二、具体文件细节

(1)main.py源代码:

#main.py是启动程序,负责启动和调用相应的功能,并导入数据集
def main():
    #数据分析与可视化实现
    key=1
    print("\n请选择你所需要的分析: \n0、温度变化图\n1、相对湿度变化图\n2、温度与相对湿度分析图\n3、降雨量变化图\n4、风向雷达图")
    
    #多功能数据分析与可视化的选择
    #try-except结构避免用户输入不正确或恶意输入
    while 1:
        try:
            i=int(input('输入需要查看的图表(输入-1退出):'))
            break
        except:
            print("输入有误,请重新输入")
            print("\n请选择你所需要的分析: \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:
                dataprocess.rainfall(data)#降雨量曲线图
                break
            elif i==4:
                dataprocess.wind(data)#风级风向雷达图
                break
            elif i==-1:
                key=0
                print("正在退出......")
                break
            else:
                print("输入有误请重新输入")
                break
            if(key==0):
                break
        print("\n请选择你所需要的分析: \n0、温度变化图\n1、相对湿度变化图\n2、温度与相对湿度分析图\n3、降雨量变化图\n4、风向雷达图")
        i = int(input('输入需要查看的图表(输入-1退出):'))
    print("\n退出成功,欢迎下次使用!")

#启动入口
if __name__=="__main__":
    main()

(2)dataset文件夹内部:
存有一个天气数据的csv文件,通过爬虫代码获取自己地区当前天气数据。
weather1.csv

(3)src文件夹内部:
内有两个.py文件,dataprocess.py是数据分析处理文件,chart.py是数据可视化文件,main函数会先调用处理文件后再可视化文件。

(4)dataprocess.py代码(使用Numpy、Pandas进行数据处理的文件,此处就不展示了):

dataprocess.py程序是数据处理程序
负责对来自对数据集进行数据分析和处理,以便于提供给chart.py程序进行可视化

(5)chart.py源代码:

chart.py程序是调用matplotlib中的库函数进行可视化
数据的接收自dataprocess.py程序,然后进行可视化
分别有温度变化折线图、相对湿度变化折线图、降水量变化柱状图、风向雷达图、以及结合机器学习线性回归生成的温湿度相关性分析图。
特色:运行过程中,所有变化图都会动态生成,非常酷炫!

#温度变化图
def temdiagram(tems,hours,temave,temmin,tem_minhour,temmax,tem_maxhour):
#因被侵权所致,具体绘图代码
#在此省略,原创不易恳请尊重
#进一步了解+威信:
	StarsForMoon
	.......
	.......
	.......

温度变化图
温度变化图

#相对湿度变化图
def humdiagram(hours,hums,humave,hummax,hum_maxhour,hummin,hum_minhour):
#因被侵权所致,具体绘图代码
#在此省略,原创不易恳请尊重
#进一步了解+威信:
	StarsForMoon
	.......
	.......
	.......

相对湿度变化图
相对湿度变化图

#降雨量曲线图
def rainfalldiagram(hours,rainfall,rainfallavg,rainfallmax,hour_rainfallmax,rainfallmin,hour_rainfallmin):
 #因被侵权所致,具体绘图代码
 #在此省略,原创不易恳请尊重
 #进一步了解+威信:
	StarsForMoon
	.......
	.......
	.......

降水量柱状图
降水量变化图

#风向雷达图
def windradar(temp):
#因被侵权所致,具体绘图代码
#在此省略,原创不易恳请尊重
#进一步了解+威信:
	StarsForMoon
	.......
	.......
	.......

风向雷达图
风向雷达图

#皮尔逊相关系数函数
def coefficient(var1,var2):
#因被侵权所致,具体绘图代码
#在此省略,原创不易恳请尊重
#进一步了解+威信:
	StarsForMoon
	.......
	.......
	.......

温湿度相关性分析图(此处结合了机器学习线性回归)
温湿度相关性分析图

(6)src文件夹内部是存放的运行结果,即可视化图片。
result文件夹内部

最后,觉得做得还不错的话请三连支持一下吧~要是点一点关注那就更好了!

考虑到有一部分读者想与笔者有进一步交流,可以添加我的微信:StarsForMoon,添加请说明来意(如CSDN)。感谢您对我的支持!😃
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐