jupyter处理一个月的天气数据,并且读取某一地的天气数据情况

1. 前期准备

1.导入所需要的包
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import glob,os
2.对所给每天天气数据的.csv文件进行合并
csv_list = glob.glob('*.csv')
print(u'共发现%s个CSV文件'% len(csv_list))
print(u'正在处理............')
for i in csv_list: 
    fr = open(i,'rb').read()
    with open('weatherdata2022-09.csv','ab') as f:   #合并后新文件的名称
        f.write(fr)
print('合并完毕!')
3.为数据的每一列添加列名称,并且将所选地区的天气合成一个新的.csv文件
SPLIT_STATUS = False   #修改地区时需要将False改为True,保存好.csv后改回来
SELECT_DATE = 6

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

if SPLIT_STATUS:
    df = pd.read_csv('weatherdata2022-09.csv')
    df.columns = ['日期', '时间', '县市(区)', '省份', '温度', '湿度', '气候', '气候(英文)', '气候代码', '空气质量(AQI)',
                  'PM2.5计算的空气质量', '气压', '能见度', '风力', '风力等级', '风速', '实时降水量', '24小时降水量']

    print(df.head())

    df = df[(df['县市(区)'] == '岚县')]
    df.drop(df[df['日期'].str.contains('08月')].index, inplace=True)

    for i in ['一', '二', '三', '四', '五', '六', '日']:
        df["日期"] = df["日期"].str.replace(f"\\(星期{i}\\)", '')

    df["日期"] = df["日期"].str.replace(f"日", '')
    df["日期"] = df["日期"].str.replace(f"09月", '')
    df["湿度"] = df["湿度"].str.replace("%", '')
    df["湿度"].astype("uint8")

    df.to_csv('result.csv', encoding='utf-8', index=False)
else:
    df = pd.read_csv('result.csv', encoding='utf-8')    #输出新的.csv文件
    
df["温度"].astype('int32')
df["日期"].astype('int8')

print(df.head())

输出效果:
在这里插入图片描述

4.筛选每天的最高和最低气温,并将这30天的最高和最低气温绘制到一张图上(中间虚线是平均温度)
weather_max = []
weather_min = []

for i in range(1, 31):
    weather_max.append(np.array(df[df["日期"] == i]["温度"]).max())
    weather_min.append(np.array(df[df["日期"] == i]["温度"]).min())

weather_max_mean = np.array(weather_max).mean()
weather_min_mean = np.array(weather_min).mean()

plt.plot(range(1, 31), weather_max, label='高温', marker='o', color='lightgreen')
plt.axhline(weather_max_mean, label='平均高温', linestyle='--', color='black')

plt.plot(range(1, 31), weather_min, label='低温', marker='o', color='orange')
plt.axhline(weather_min_mean, label='平均低温', linestyle='--', color='black')

plt.title("岚县09月天气情况")
plt.xlabel("日期")
plt.ylabel("摄氏度/(℃)")
plt.legend()
plt.show()
plt.close()

输出效果:
在这里插入图片描述

5.绘制整个月的温湿度相关性矩阵
wetness_mean = []
wetness_max = []
wetness_min = []
wet_matrix = []

for i in range(1, 31):
    wetness_mean.append(np.array(df[df["日期"] == i]["湿度"]).mean())
    wetness_max.append(np.array(df[df["日期"] == i]["湿度"]).max())
    wetness_min.append(np.array(df[df["日期"] == i]["湿度"]).min())
    wet_matrix.append([wetness_mean[-1], wetness_min[-1], wetness_min[-1], weather_max[i - 1], weather_min[i - 1]])

wet_col = ["湿度_平均值", "湿度_最小值", "湿度_最大值", "温度_最大值", "温度_最小值"]
wet_matrix = pd.DataFrame(data=wet_matrix, columns=wet_col)
wet_corr = wet_matrix.corr()

plt.matshow(wet_corr)
plt.xticks(range(len(wet_col)), wet_col)
plt.yticks(range(len(wet_col)), wet_col)
plt.colorbar()
plt.grid(True)
plt.title("岚县09月温湿度相关性矩阵")
plt.show()
plt.close()

输出效果:
在这里插入图片描述

6.绘制这个月某天的PM2.5的空气质量图
dt = []
for i in df["时间"]:
    dt.append(int(i.split(":")[0]))
df["时间"] = dt
df["时间"].astype('uint8')

df_time = df[df["日期"] == SELECT_DATE]

pm_mean = []
for i in range(24):
    pm_mean.append(round(df_time[df_time["时间"] == i]["PM2.5计算的空气质量"].mean(), 4))
pm_mean12 = round(df_time["PM2.5计算的空气质量"].mean(), 4)

plt.bar(range(24), pm_mean, label='每小时平均', color='lightblue')
plt.axhline(pm_mean12, label='当日平均', linestyle='--', color='pink')
plt.title("岚县09月{}日全天PM2.5计算的空气质量".format(SELECT_DATE if SELECT_DATE > 10 else f"0{SELECT_DATE}"))
plt.xlabel("时间/(h)")
plt.ylabel("质量/(%)")
plt.legend()
plt.show()
plt.close()

输出效果:
在这里插入图片描述

7.统计一个月的气候天数并绘制饼图
plt.pie(df["气候"].value_counts(),labels=["多云","小雨"],autopct="%1.1f%%")
plt.legend()
plt.title("岚县09月气候构成")
plt.show()

输出效果:
在这里插入图片描述
(文中所需要的数据位置)
链接:https://pan.baidu.com/s/1-34D_1SxWY2KKPApOdIYDg?pwd=h3o9
提取码:h3o9

  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
2019MathorCup高校数学建模挑战赛D题 2019第九届MathorCup高校数学建模挑战赛 竞赛信息 竞赛简介 为了培养学生的创新意识及运用数学方法和计算机技术解决实际问题的能力,中国优选法统筹法与经济数学研究会决定主办2019第九届MathorCup高校数学建模挑战赛,欢迎各高等院校按照竞赛章程及有关规定组织同学报名参赛。 组织机构 主办单位:中国优选法统筹法与经济数学研究会 【中国优选法统筹法与经济数学研究会是在中国科学技术协会直接领导下的学术性社会团体,是国家一级学会。学会由华罗庚教授于1981发起成立,至今成立了评价方法与应用、项目管理、计算机模拟、统筹、管理决策与信息系统、工业工程、高等教育管理、数学教育、经济数学与管理数学、应急管理、灰色系统研究,复杂系统研究等十余个专业分会】 竞赛时间 报名时间:即日起至2019 4 月 10日 12:00 竞赛时间:20194 月 11 日08:00至2019 4 月 15 日08:00 参赛对象 普通高校全日制在校生(研究生、本科生、专科生)以队为单位参赛,每队不超过3人,不允许跨校组队参赛。 参赛费用 每支队伍需缴纳200元的报名费用。 奖项设置 参赛队伍:全国一等奖(约5%)、全国二等奖(约15%)、全国三等奖(约30%),从一等奖队伍中经过决赛答辩决出4支队伍获得“MathorCup”荣誉奖杯; 组织单位:优秀组织单位、优秀组织社团、优秀组织个人; 其它奖励政策:参见《 MathorCup高校数学建模挑战赛奖励细则》( 可从官方主页下载)。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Forever_214

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值