利用python meteostat库对全球气象数据访问,获取历史气象数据

技术

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
      

picture.image

定义需要查询地点的纬度和经度,如这里需要获取重庆气象数据,定义纬度和经度用于确定重庆市的具体位置【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()
      

picture.image

从找到的气象站中选择一个(通常选择第一个最接近的)来获取气象数据,当然读者也可以自行选择其它站点气象数据,然后构建一个需要获取数据的时间戳并保存为一个dataframe,以下为数据集各指标含义

picture.image

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()
      

picture.image

类似于 获取每日气象数据,获取每日气象数据和每小时气象数据的主要区别在于时间粒度,获取每日气象数据通常使用 Daily 类,而获取每小时气象数据则使用 Hourly 类

picture.image

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()
      

picture.image

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()
      

picture.image

通过Meteostat库,我们能够方便地获取和分析全球范围内的气象数据,无论是每日、每小时还是其它时间粒度的数据,Meteostat都提供了灵活的接口和丰富的功能,使用Meteostat库,你可以:

  • 获取多种气象指标,例如气温、降水量、风速、气压等
  • 分析和可视化气象数据,帮助理解气候趋势和天气变化
  • 应用气象数据到各种领域,包括研究、商业、农业和环境监

3.**** 往期推荐

时间序列预测:CNN-BiLSTM模型实践

基于LSTM模型的多输入多输出单步时间序列预测

使用LSTM模型预测多特征变量的时间序列

TCN时间序列卷积神经网络

基于VMD分解的VMD-CNN-LSTM时间序列预测模型实现

基于VMD分解的VMD-LSTM时间序列预测模型实现,大力提升预测精度!

长短期记忆网络LSTM在时序数据预测演示

如果你对类似于这样的文章感兴趣。

欢迎关注、点赞、转发~

0
0
0
0
相关资源
边缘云游戏行业解决方案
《“加速”游戏体验升级,火山引擎边缘云游戏行业解决方案》 许思安 | 火山引擎边缘云高级总监
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论