请选择 进入手机版 | 继续访问电脑版
爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 5259|回复: 1

[经验总结] python读取nc文件并绘制全球年平均气温折线图

[复制链接]

新浪微博达人勋

发表于 2022-3-9 23:55:52 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 wudi129 于 2022-3-10 10:41 编辑
  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. import netCDF4 as nc
  4. from netCDF4 import num2date
  5. import pandas as pd
  6. import datetime

  7. file = 'F:/data/HadCRUT.nc'
  8. data = nc.Dataset(file)
  9. lat = np.array(data.variables['latitude'])
  10. lon = np.array(data.variables['longitude'])
  11. t = np.array(data.variables['time'])
  12. tas_mean = np.array(data.variables['tas_mean'])
  13. tas_mean[tas_mean == -1.e+30] = np.nan

  14. def cftime2datetime(cftime, units, format='%Y-%m-%d %H:%M:%S'):
  15.     """
  16.     将nc文件里面的时间格式 从cftime 转换到 datetime格式
  17.     :param cftime:
  18.     :param units:
  19.     :param format:
  20.     :return:
  21.     """
  22.     return datetime.datetime.strptime(num2date(times=cftime, units=units).strftime(format), format)


  23. clean_time_data = pd.Series([cftime2datetime(i, units='days since 1850-01-01 00:00:00') for i in t])

  24. def y_m(year):
  25.     v = np.nanmean(tas_mean[clean_time_data.dt.year == year,:,:].flatten())
  26.     return v

  27. year = np.arange(start = 1979,stop = np.max(clean_time_data.dt.year) + 1)

  28. need = pd.DataFrame({'year': year})
  29. need['tas_mean'] = need['year'].apply(lambda x: y_m(year = x))


  30. fig , ax = plt.subplots(figsize = (10,4),dpi = 150)
  31. ax.plot(need['year'],need['tas_mean'],linestyle = '-',marker = 'o')
  32. plt.show()
复制代码


评分

参与人数 1金钱 +5 收起 理由
Boye + 5 很给力!

查看全部评分

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2024-3-17 19:59:45 | 显示全部楼层
您好,这是在哈德来下载的海温么,我在网上下载的是datatime64格式的,但是想学习一下怎样转换cftime格式的时间
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表