python大作业:天气数据分析

2024-06-09 1841阅读

有偿分享源码和.docx格式文档

  • 一、设计要求
    • 1.1 csv文件的存储
    • 1.2 日平均气温趋势分析
    • 1.3 城市天气种类统计分析
    • 1.4 月平均气温趋势分析
    • 1.5 气温风力天气统计
    • 1.6 城市旅游季分析
    • 二、设计方案
      • 2.1 整体思路
      • 2.2 库的使用
      • 2.3 工作分解结构
      • 2.4 自定义标准详解
      • 三、设计代码
      • 四、实现效果
        • 4.1 csv文件的处理
        • 4.2 日平均气温趋势分析
        • 4.3 城市天气种类统计分析
        • 4.4 月平均气温趋势分析
        • 4.5 气温风力天气统计
        • 4.6 城市旅游季分析
        • 五、设计总结
          • 5.1 matplotlib可视化
            • 5.1.1 绘图方法
            • 5.1.2 结构关系
            • 5.1.3 绘图流程
            • 5.2 pandas数据清洗
              • 5.2.1 处理数据中的空值
              • 5.2.2 删除空格
              • 5.2.3 大小写转换
              • 5.2.4 更改数据格式
              • 5.2.5 更改列名称
              • 5.2.6 删除重复值
              • 5.2.7 修改及替换数据
              • 5.3 参考文献

                一、设计要求

                1.1 csv文件的存储

                首先,根据GitHub开源数据集进行数据清洗,获得题目要求csv数据;其次,将获取的数据信息利用电脑自带Excel功能存储到csv格式的文件中;然后,将文件命名为”城市名称.csv”;最后,其中每行数据格式要求为“日期(date),最高温(T_max),最低温(T_min),天气(weather),风向(wind)”;

                (将获取的数据信息存储到csv格式的文件中,文件命名为”城市名称.csv”,其中每行数据格式为“日期,最高温,最低温,天气,风向”)

                1.2 日平均气温趋势分析

                首先,在csv文件中增加“平均温度(T_Average)”一列,平均温度=(最高温+最低温)/2,此处可以利用numpy库的np.mean()方法求解找到平均值后追加一列数据;然后通过matplotlib库的plt.plot()的方法在同一张图中绘制两个城市(南京、成都)一年的平均气温走势折线图;

                (在数据中增加“平均温度”一列,其中:平均温度=(最高温+最低温)/2,在同一张图中绘制两个城市一年平均气温走势折线图)

                1.3 城市天气种类统计分析

                首先根据csv文件的天气(weather)一列统计两个城市各类天气的天数,将天气按照.split(“/”)分割成列表,利用set()方法去重统计出天气的种类;然后,根据天气的质量进行人工排序增加图表的可视化,再对每座城市的天数进行统计;最后绘制matplotlib条形图对比两座城市的天气情况;

                (统计两个城市各类天气的天数,并绘制条形图进行对比)

                1.4 月平均气温趋势分析

                首先统计这两个城市每个月天数,由于在程序的开头已经实现了年份的统计,此处可以通过判断平闰年来统计每月天数,或者通过csv文件的天数进行统计;然后统计每个月的平均气温,将平均气温放在图表对象中;最后根据图表对象绘制月平均气温折线图;

                (统计这两个城市每个月的平均气温,绘制折线图)

                1.5 气温风力天气统计

                首先,将风向进行分割split分割,分别判断白天夜间的风力是否小于5级别;同时判断平均气温(T_Average)是否大于10并且小于5;最后根据结果在控制台打印天数即可

                (统计出这两个城市一年中,平均气温在10~25度,风力小于5级的天数)

                1.6 城市旅游季分析

                基于天气自然应用结合题目要求数据集,本此实验共自定义四大标准:

                (1)风力大小,风力越小代表当地的天气情况相对较好

                (2)温差,昼夜温差越小则代表当地天气状况良好

                (3)平均温度,平均温度越靠近20℃,人体感到舒适程度越高

                (4)适宜天气数,天气为晴天或者多云的天数,代表适合出游的天气数量

                为四大标准进行权重分配,对每一标准的权重比例进行赋值,标准的值进行降序排序,权重从高到低依次为4 3 2 1。注意,如果标准值相同则赋值相同,以前一权重为准。

                (自定义标准,分析这两个城市适合旅游的季节)

                二、设计方案

                2.1 整体思路

                通过选取中国东西部两座代表性城市南京、成都分析两地天气状况,通过可视化技术呈现出两地气候的差异,为人们的旅游出现提供建议。

                2.2 库的使用

                针对关键问题,本次设计共利用到如下表1所示库以及库的解决的问题

                python大作业:天气数据分析

                2.3 工作分解结构

                python大作业:天气数据分析

                2.4 自定义标准详解

                按照设计要求,共有四大标准,实现方法如下:

                (1)列表字典citySeason存储城市的季节

                为了方便后期数据的处理,标准的使用了列表字典的数据结构进行存储

                python大作业:天气数据分析

                (2)for循环设置citySeason值

                通过一次遍历csv文件可以找到全部的标准,实现代码见三设计代码

                (3)sorted方法设置权重

                将列表字典按照标准用sorted方法排序,赋以权重即可实现权重的设置

                (4)寻找权重最大

                利用numpy的np.max()方法寻找权重的最大值

                (5)函数的封装

                将代码重构实现函数封装,传入参数为城市的csv数据,返回值为空,功能:寻找并打印适宜季节

                三、设计代码

                有偿分享源码和.docx格式文档(可编辑)

                四、实现效果

                4.1 csv文件的处理

                两个csv文件分别为NanJing.csv和ChengDu.csv,每一列分别是

                ①日期date,

                ②最高温T_max

                ③最低温T_min

                ④天气weather

                ⑤风向wind_direction

                处理结果如下图2所示

                python大作业:天气数据分析

                4.2 日平均气温趋势分析

                在日平均气温趋势分析中,用到了折线图来反映温度趋势,在同一图中呈现两地趋势进行对比。如下图3所示,横纵代表日期,纵轴代表温度,区间为-5~30℃;蓝色折线代表南京,橙色折线代表成都;据图可分析出在冬季成都的气温比南京要高,夏季成都比南京的气温低,即所谓的成都冬暖夏凉的来由。

                python大作业:天气数据分析

                4.3 城市天气种类统计分析

                在城市天气种类统计分析中,共有12类天气,质量从好到坏依次为 ‘晴’, ‘多云’, ‘阴’, ‘小雨’, ‘小到中雨’, ‘中雨’, ‘中到大雨’, ‘大雨’, ‘阵雨’, ‘雷阵雨’, ‘大暴雨’, ‘雨夹雪’,利用双柱状图实现两地天气种类的对比。如下图4所示,横轴代表天气种类,纵轴代表天数数量,区间为0~175days,蓝色折线代表南京,橙色折线代表成都;据图可分析出,南京的高质量天气数量与成都持平,成都的阴天或者小于远高于南京,若分析降雨量应该还要加入降雨量的统计

                python大作业:天气数据分析

                4.4 月平均气温趋势分析

                早月平均气温趋势分析中,将每月的平均气温通过折线图呈现,在同一图中呈现两地平均气温对比。如图5所示,横纵代表日期,纵轴代表温度,区间为-5~30℃;蓝色折线代表南京,橙色折线代表成都;据图可分析出成都2 3 4 12月的气温要高于南京,4到11月要低于南京,再次验证了成都是冬暖夏凉的城市。

                python大作业:天气数据分析

                4.5 气温风力天气统计

                根据题目要求设计方案编码统计出平均气温在10~25度,风力小于5级南京为134天,成都为203天,运行结果如下图6所示

                python大作业:天气数据分析

                4.6 城市旅游季分析

                根据自定义四大标准统计出南京的四季情况如下,分别为序号,季节,风力,温差,平均气温。适合天气数量,天数,权重。按照权重分配得出秋季的权重最高,故南京的适合旅游的季节为秋季。

                python大作业:天气数据分析

                五、设计总结

                5.1 matplotlib可视化

                5.1.1 绘图方法

                通过这次绘图过程,对matplotlib图表绘制所使用的函数和方法印象加深。

                plot()函数包含了很多基础的绘图功能,用它来绘制线图;

                scatter()函数用以绘制散点图;

                xlim() / ylim()用于设置坐标轴的数值显示范围;

                xlabel() / ylabel()用于设置坐标轴的标签;

                grid()函数用于设置图形中的网格线;

                axhline() / axvline():用于设置水平参考线和垂直参考线。

                axhspan() / axvspan()用于设置平行于x轴/y轴的参考区域;

                annotate():添加指向性注释文本,灵活调整注释的位置以及指示箭头的样式,

                text():图形中的注释,但它跟annotate()的区别是它用于添加不带指向性箭头的文本注释; title():形的标题;

                5.1.2 结构关系

                理解了figure与asex之间的关系,先建画板再建子图,再赋值给对象

                fig=plt.figure(figsize=(6,6),dpi=100,facecolor=’#dfd7d7’)

                #用add_subplot划分子图ax

                ax=fig.add_subplot(1,1,1)

                学习了子图之间并列关系,若无先赋值给对象,那么就要按代码顺序plt.绘图。赋值给对象后,对象没有包含的方法就需要用set_函数调用。

                5.1.3 绘图流程

                python大作业:天气数据分析

                5.2 pandas数据清洗

                本次实验用到了pandas数据清洗部分方法,在此进行简单的技术总结(表格代码在jupyter notebook中实现)

                5.2.1 处理数据中的空值

                我们在处理真实的数据时,往往会有很多缺少的的特征数据,就是所谓的空值,必须要进行处理才能进行下一步分析

                空值的处理方式有很多种,一般是删除或者填充

                (1)使用dropna函数删除空值

                import pandas as pd
                data=pd.read_csv('成绩表.csv',encoding='gbk')
                data.dropna(how='any')
                

                (2)用fillna函数实现空值的填充

                ①使用数字0填充数据表中的空值

                data.fillna(value=0) 
                

                ②使用平均值填充数据表中的空值

                data['语文'].fillna(data['语文'].mean())
                

                5.2.2 删除空格

                pandas删除空格也很方便,主要使用map函数

                data['姓名']=data['姓名'].map(str.strip)
                data
                

                5.2.3 大小写转换

                pandas中转换函数也为upper()和lower()

                data['拼音']=data['拼音'].str.upper()
                data
                data['拼音']=data['拼音'].str.lower()
                data
                

                5.2.4 更改数据格式

                pandas使用astype来修改数据格式,以将“语文”列改成整数为例

                data['语文'].dropna(how='any').astype('int')
                

                5.2.5 更改列名称

                pandas使用rename函数更改列名称,代码如下:

                data.rename(columns={'语文':'语文成绩'})
                

                5.2.6 删除重复值

                pandas使用drop_duplicates函数删除重复值

                data['数学'].drop_duplicates()  #默认删除后面的重复值
                

                5.2.7 修改及替换数据

                pandas中使用replace函数实现数据替换

                data['姓名'].replace('成  功','失  败')
                

                5.3 参考文献

                [1]韦依洋,吴一凡,李永远.Python技术在数据可视化中的应用研究[J].福建电脑,2022,38(01):27-31.DOI:10.16707/j.cnki.fjpc.2022.01.007.

                [2]李成渊,俞越,彭伟明.大数据环境下北京冬奥、杭州亚运历史同期气候可视化设计——以数据抓取部分为例[J].江苏科技信息,2019,36(31):75-77.

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]