爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 1538|回复: 5

[经验总结] Python气象数据读取

[复制链接]

新浪微博达人勋

发表于 2023-10-1 16:50:22 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 小白大白123 于 2023-10-2 20:04 编辑

Python气象数据读取
【修改更新于2023.10.2】
温馨提示:
(1)有关python的经验方法都是基于anaconda下载的库包(conda install 库包名 或 cmd 命令 pip install 库报名),以及使用anaconda里的spyder(python3.8)编辑和运行代码。
(2)所有的代码都是经过了spyder(python3.8)正常运行得出结果的,可以放心使用,也欢迎交流和讨论。
(3)使用的软件以及不同版本,都有可能会导致代码运用出现问题(不代表分享的代码有问题或是错误的。),关于不同版本运行本号分享的代码出现问题,请自行网上搜索解决办法解决。
纲要:
1.Python读取气象数据txt文本格式存储
2.Python读取气象数据NetCDF(.nc)格式存储

一、读取txt文本格式存储的气象数据
气象站点数据是气象数据很重要的一部分,尤其是在观测数据方面,站点数据一般存放于.txt文件中,首先就需要读取数据。
以一套中国气象数据网下载的某省的1979-2019年逐月气温的站点数据为例,数据文件格式为TXT文本格式:
TXT文本保存的数据如下图所示:
640.png

如果没有导入pandas库,需要现在anaconda里下载pandas库,再在spyder理运行python代码,对于这类简单排列的.txt文件,可以通过np.load读取,但用pandas的.read_csv更为方便:
  1. import pandas as pd
  2. data = pd.read_csv("tem.txt", skiprows=1, sep=',', header=None)
  3. print(data)
复制代码

运行后,文件信息查看如下:
640 (1).png

可以看到,文件的数据有22列,492行,第0列是年份,第1列是月份,剩余列数是变量数据。
skiprows=1表示跳过了前1行的文件头(因为第一行的数据中含有非数字的字符,所以选择跳过不读取)。
如果其他文件中数据是以空格为间隔,则sep='\s+'定义了数据间隔为空格。

二、Python读取气象数据 NetCDF(.nc)文件
(之前帖子:http://bbs.06climate.com/forum.php?mod=viewthread&tid=99406&fromuid=111039
气象数据可视化主要依靠matplotlib做绘图,其他库包为辅助,包括数据处理的,地理信息处理的等等。绘图主要有六步(“六部曲”):
  • 引入库包:import matplotlib.pyplot as plt
  • 设定画布:fig=plt.figure()
  • 导入数据:之前已有介绍导入nc文件格式数据(【气候软件】Python读取气象数据 NetCDF文件(***.nc))和导入txt文本格式数据(【气候软件】Python2:读取TXT文本格式的数据)。
  • 线图命令:plt.plot(x,y,lw=,ls=,c=,alpha=)
  • 出图:plt.show()
  • 存图:fig.savefig("···")


【读取气象数据 NetCDF(.nc)文件
第一步:使用anaconda安装xarray库;
第二步:使用Spyder(Python3.8)读取数据NetCDF文件(***.nc),以一套CMIP6的某模式输出的tas(表面气温)变量1850-2014年的历史格点资料为例;
第三步:气温数据取出,Xarray在读取坐标信息时,自动将时间坐标读取为了float64 格式,这对我们挑选目的时间十分方便。Xarray通常与pandas配合使用;
第四步:选取某时间段内数据,比如我们想选取15.5-74.5(根据数据信息中time格式的规定输入相应格式)时期数据;
第五步:选取特定经纬度范围(高度)的数据,当我们想选取特定经纬度范围(高度)的数据时,.loc[]函数同样可以解决。
在这里,选取了40°N-55°N,115°E-135°E范围的数据。
(详情及附件见之前帖子:http://bbs.06climate.com/forum.php?mod=viewthread&tid=99406&fromuid=111039


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

新浪微博达人勋

发表于 2023-10-1 20:52:14 | 显示全部楼层
这个叫读csv文件。今日头条,搜索,风清云淡话编程,里面有40多篇的文章,包括文本文件读写技巧的文章。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2023-10-1 21:06:31 | 显示全部楼层
本帖最后由 小白大白123 于 2023-10-10 21:26 编辑
lujianjun 发表于 2023-10-1 20:52
这个叫读csv文件。今日头条,搜索,风清云淡话编程,里面有40多篇的文章,包括文本文件读写技巧的文章。

谢谢您的批评指正!谢谢。
本文的数据存储格式就是txt文本,本文就是要利用python来读取txt这种存储格式的文本文件。中国气象数据中心下载的气象观测数据的文件格式有的就是txt文本,本文用Python读取试试。
风轻云淡和本文写的也有不同之处,本文提供一个文本文件读取的思路和方法。
。。。。。。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2023-10-2 19:49:07 | 显示全部楼层
哈哈哈哈哈哈哈哈哈哈哈哈哈哈,气py
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2023-10-3 11:33:13 | 显示全部楼层
edwardli 发表于 2023-10-2 19:49
哈哈哈哈哈哈哈哈哈哈哈哈哈哈,气py

嘿嘿,向您多多学习~
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2023-10-7 11:04:47 | 显示全部楼层
小白大白123 发表于 2023-10-1 21:06
谢谢您的批评指正!但不允采纳,谢谢。
您自己概念混淆,以及误解本文。
本文的数据存储格式就是txt文 ...

哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈,你是这么理解的.
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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