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

编程入门 行业动态 更新时间:2024-10-12 03:22:47

jupyter处理一个月的<a href=https://www.elefans.com/category/jswz/34/1769711.html style=天气数据,并且读取某一地的天气数据情况"/>

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 = 6plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falseif 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()

输出效果:

(文中所需要的数据位置)
链接:=h3o9
提取码:h3o9

更多推荐

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

本文发布于:2024-03-10 07:12:53,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1727324.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:天气   数据   一个月   情况   jupyter

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!