panda提取时间戳中的日期_CMIP6数据提取---Python实现方案
一个月前写了一篇“使用Arcgis处理CMIP6(netCDF)数据的流程”后,一直收到朋友们的私信,也几乎天天都有交流。说来惭愧,后来我放弃了使用Arcgis进行处理这一条路,而是直接采用Python提取栅格点的时间序列数据,进行处理。
目前忙着降尺度的工作,可能会减少在知乎上的交流,因此在这里我会把目前掌握的部分数据提取方法分享出来,希望能帮到大家。
不用写代码的方法:
这个方法是我后面才发现的,优点就四个字:简单粗暴!,缺点是输出格式死板,需要就格式问题调整很久。
首先,你需要在电脑上装有java的环境(别皱眉,只要有环境就行,不需要coding);
然后,点击下面链接,下载panoply(这个软件也有制图的功能,并且成图操作非常简单友好);
https://www.giss.nasa.gov/tools/panoply/www.giss.nasa.gov
下载好之后打开这个软件,选择nc文件,右边可以看到数据描述性信息,选中要输出的变量,如PR,右键选择export csv,然后等着就行。
不知道为什么一直上传图片失败,图先欠着,下同...
输出之后的csv文件普遍非常大,我示例中最大的一个达到了6g以上。它的数据输出后是这样的,每个时间点的全球数据作为一个矩阵,每一列是同一经度下,每一行是同一纬度下,以分辨率360*720为例,这个矩阵的大小就是(360,720),它是月尺度的,从1850-2014一共165年,1980个月,所以一共有1980个这样的矩阵,综上,PR的数据形态就是(1980,360,720)。
但是这样的数据形式我们不好应用,下面介绍使用python的方法提取。
默认大家都拥有配置好的python3环境,我们需要的库有:netCDF4,numpy,pandas。
其中netCDF4用来查看数据,了解数据信息,制定提取策略。numpy和pandas用于提取数据,并按我们需要的格式输出。
主要是查看数据的shape:
for
然后你会看到我在前面提过的(t,x,y)这个形式,可以理解为一个三维矩阵(t,(x,y)),(x,y)代表数据的分辨率,如(360,720),就意味着一共有360*760个栅格点,对应到纬度和经度后,我们就可以知道这个数据是0.5度*0.5度的栅格,即50km分辨率。
那么现在我们要做的就是提取我们想要的数据了。很多朋友都在问我怎么按区域提取数据,我没有做这个工作,我是按照手里有的实测站点位置来检索栅格点并下载数据的,按区域下载的思路我放在最后说。
pr
首先定义一个函数用来找到我们所需经纬度点最近的栅格点:
import
现在写一个for循环,提取出某个点的时间序列数据到一个list中:
for
同理,通过循环嵌套就可以提取出所有的点的时间序列数据。
这时,有的朋友可能会发现输出的结果里没有时间这一列。这是因为我发现nc文件中的时间格式如果直接导出的话看起来类似于时间戳,但是转化后会发现对不上,所以我采取了自己生成日期序列的笨办法(月尺度的还好,日尺度的很麻烦,因为大多数模型都没有闰年这个概念,即没有2月29日,生成日尺度日期序列时要避开这一坑),把list转为数据框后,加上日期序列这一index,再输出为csv即可。不过,如果做多模型,并且后续处理分析也在python中完成的话,我觉得完全没必要将中间数据输出。
如果要做月变化的对比,可以采取切片的方式,将list按12步长切片,每一片都是一年的12条数据。
def
数据提取暂且说这么多,开头提到的按区域提取数据的思路,我的想法是:通过目标区域的外多边形坐标经纬度点集,然后做一个遍历判断,把在多边形内的点筛选出来,得到符合要求的点的索引号,然后把这些点的数据输出。但是因为这段时间太忙,还没有动手尝试过,大家有思路的话,也欢迎在评论区交流。
panda提取时间戳中的日期_CMIP6数据提取---Python实现方案相关推荐
- panda提取时间戳中的日期_Pandas处理时间序列数据的20个关键知识点
时间序列数据有许多定义,它们以不同的方式表示相同的含义.一个简单的定义是时间序列数据包括附加到顺序时间点的数据点. 时间序列数据的来源是周期性的测量或观测.许多行业都存在时间序列数据.举几个例子: 一 ...
- panda提取时间戳中的日期_工作中常用的十个日期时间计算公式,你一定要收藏...
1.计算本月天数 在单元格输入公式:=DAY(EOMONTH(TODAY(),0)) 后将格式改为常规. 2,计算年龄 在C4单元格输入公式:=DATEDIF(B4,TODAY(),"y&q ...
- panda提取时间戳中的日期_《我在时间尽头等你》中的文案,总有一个戳中你的泪点...
1. 最好的爱情是什么样?不只是爱闪闪发光的你,是连同你的脆弱.敏感.哭泣,也一并捧在手心:不只是爱和你在一起的幸福,是连同生活的辛苦.委屈.不测,也坚定站在你的身边. 2. 一个人如果爱着什么,是会 ...
- python读取日期_从文件中读取日期和数据(Python)
我想从文件中读取时间字符串和数据,但是当我使用loadtxt时,我不能同时读取字符串和数字,因为字符串不是浮点型的.所以我尝试使用genfromtxt并使用delimiter=[]+[]+[]作为我所 ...
- java向mysql写入数据慢_通过java代码往mysql数据库中写入日期相关数据少13个小时...
通过show variables like '%time_zone%'; 查看时区: CST 时区 名为 CST 的时区是一个很混乱的时区,有四种含义: 美国中部时间 Central Standard ...
- java通过poi读取excel中的日期类型数据或自定义类型日期
java通过poi读取excel中的日期类型数据或自定义类型日期 Java 读取Excel表格日期类型数据的时候,读出来的是这样的 12-十月-2019,而Excel中输入的是 2019/10/12 ...
- 利用正则表达式提取网页中Table内的数据
利用正则表达式提取网页中Table内的数据 using System; using System.Collections.Generic; using System.Linq; using Syste ...
- python在json文件中查找指定数据_Python中json的取值 如何使用python提取json中指定字段的数据...
python中为什么用json有什么作用 如何用python读取json里面的值啊我爱你,所以我给了你伤害我的权力,只要我能忍受,我会一直陪伴着你,但你不能伤害我太多. 数据如下,我想要读取name. ...
- JAVA正则提取字符串中的日期
在我们解析字符串的时候,有这么一个需求,需要提取字符中的日期,例如:"开奖日期:2021年3月28日 兑奖截止日期:2021年5月26日" 输入样例: 开奖日期:2021年3月28 ...
最新文章
- Practical Vim 第一章 第二章
- Mac过热降频的罪魁祸首,竟是插到了左边的Type-C口
- 织梦正则批量替换文章内容内链变成绝对路径
- Spring Cloud Alibaba - 23 Gateway初体验
- MySQL This function has none of DETERMINISTIC, NO SQL...错误1418 的原因分析及解决方法
- epoll(eventpoll)是干嘛的?IO多路转接技术(相较select、poll的优点)
- synchronized与java.util.concurrent.locks.Lock的相同之处和不同之处
- 是否应该饮用酵素和自制的葡萄酒
- Java中lastValue_在Logstash中为sql_last_value使用表的ID?
- 在Spring项目中集成使用MongoDB
- springcloud工作笔记094---springcloud项目后端验证_hibernate validator后端校验字段_介绍了解
- PHP 调用shell命令
- Windows win7下VMware Virtual Ethernet Adapter未识别网络解决方法
- MySQL 常用函数大全
- 软件开发人员的简历项目经验怎么写?
- win10 软件移动位置信息服务器,如何修改win10软件默认安装位置
- 如何使用iTunes与iTools导出微信聊天记录
- Unity基础开发之事件函数的执行顺序
- Jane Austen谈Python:文学与技术的交集
- 自带显示大屏 富士通ScanSnap iX1500扫描仪初体验
热门文章
- 关于函数strtok和strtok_r的使用要点和实现原理(一)
- 公式字母上方法的波浪线~如何添加
- PageRank算法Python实现
- SSM毕设项目校园生活互助平台ep2p1(java+VUE+Mybatis+Maven+Mysql)
- python 执行命令,并获取结果及执行状态(os.popen、subprocess.Popen、os.system)
- 利用朴素贝叶斯进行新闻文本分类
- DCF(Discounted Cashflow)模型一(自由现金流)
- Linux面板小程序,宝塔面板微信小程序使用图文教程
- 在AWS中国区使用kops安装k8s完全指南
- Python re 正则:抓取网页上电驴/磁力/迅雷链接