Meteostat 是一个用于气象和气候数据处理和分析的 Python 库,它提供了对全球气象数据的访问,可以用于历史气象数据的获取、处理和可视化
1. 安装 Meteostat
通过 pip 安装 Meteostat:
pip install meteostat
2 . 获取重庆气象数据
**2.1
查找重庆附近的气象站数据**
from datetime import datetime
import matplotlib.pyplot as plt
from meteostat import Stations, Daily
chongqing = (29.56301, 106.55156)
# 查找重庆附近的气象站
stations = Stations()
nearby_stations = stations.nearby(*chongqing).fetch(5)
nearby_stations
定义需要查询地点的纬度和经度,如这里需要获取重庆气象数据,定义纬度和经度用于确定重庆市的具体位置【chongqing = (29.56301, 106.55156)】,从而查找该位置附近的气象站【利用nearby 方法查找重庆附近的气象站】,获取相应的气象数据【
fetch 方法从 Meteostat API 中获取气象站的信息,参数 5 表示获取 5 个最接近的气象站 】
2.2 获取每日气象数据
# 获取最近的气象站的ID
station_id = nearby_stations.index[0]
# 设置时间范围
start = datetime(2021, 1, 1)
end = datetime(2021, 12, 31)
# 获取每日数据
data = Daily(station_id, start, end)
data = data.fetch()
data.head()
从找到的气象站中选择一个(通常选择第一个最接近的)来获取气象数据,当然读者也可以自行选择其它站点气象数据,然后构建一个需要获取数据的时间戳并保存为一个dataframe,以下为数据集各指标含义
2.3 获取每日气象数据
from meteostat import Hourly
# 设置时间范围
start = datetime(2021, 1, 1)
end = datetime(2021, 2, 1)
# 获取每小时数据
df = Hourly(station_id, start, end)
df = df.fetch()
df.head()
类似于 获取每日气象数据,获取每日气象数据和每小时气象数据的主要区别在于时间粒度,获取每日气象数据通常使用 Daily 类,而获取每小时气象数据则使用 Hourly 类
2.4 每日气象数据可视化
plt.figure(figsize=(15, 10), dpi=300)
plt.subplot(4, 2, 1)
plt.plot(data['tavg'], color='red', label='每日平均气温')
plt.grid(True)
plt.legend()
plt.subplot(4, 2, 2)
plt.plot(data['tmin'], color='blue', label='每日最低气温')
plt.grid(True)
plt.legend()
plt.subplot(4, 2, 3)
plt.plot(data['tmax'], color='green', label='每日最高气温')
plt.grid(True)
plt.legend()
plt.subplot(4, 2, 4)
plt.plot(data['prcp'], color='purple', label='每日降水量')
plt.grid(True)
plt.legend()
plt.subplot(4, 2, 5)
plt.plot(data['wdir'], color='orange', label='每日平均风向')
plt.grid(True)
plt.legend()
plt.subplot(4, 2, 6)
plt.plot(data['wspd'], color='cyan', label='每日平均风速')
plt.grid(True)
plt.legend()
plt.subplot(4, 2, 7)
plt.plot(data['pres'], color='magenta', label='每日平均气压')
plt.grid(True)
plt.legend()
plt.tight_layout()
plt.show()
2.5 每小时气象数据可视化
plt.figure(figsize=(15, 10), dpi=300)
plt.subplot(3, 2, 1)
plt.plot(df['temp'], color='red', label='每小时气温')
plt.grid(True)
plt.legend()
plt.subplot(3, 2, 2)
plt.plot(df['dwpt'], color='blue', label='每小时露点温度')
plt.grid(True)
plt.legend()
plt.subplot(3, 2, 3)
plt.plot(df['rhum'], color='green', label='每小时相对湿度')
plt.grid(True)
plt.legend()
plt.subplot(3, 2, 4)
plt.plot(df['wdir'], color='purple', label='每小时风向')
plt.grid(True)
plt.legend()
plt.subplot(3, 2, 5)
plt.plot(df['wspd'], color='orange', label='每小时风速')
plt.grid(True)
plt.legend()
plt.subplot(3, 2, 6)
plt.plot(df['pres'], color='cyan', label='每小时气压')
plt.grid(True)
plt.legend()
plt.tight_layout()
plt.show()
通过Meteostat库,我们能够方便地获取和分析全球范围内的气象数据,无论是每日、每小时还是其它时间粒度的数据,Meteostat都提供了灵活的接口和丰富的功能,使用Meteostat库,你可以:
- 获取多种气象指标,例如气温、降水量、风速、气压等
- 分析和可视化气象数据,帮助理解气候趋势和天气变化
- 应用气象数据到各种领域,包括研究、商业、农业和环境监
3.**** 往期推荐
基于VMD分解的VMD-CNN-LSTM时间序列预测模型实现
基于VMD分解的VMD-LSTM时间序列预测模型实现,大力提升预测精度!
如果你对类似于这样的文章感兴趣。
欢迎关注、点赞、转发~