关于数据中的时间处理问题

前言

在9月份处理数据的时候,我遇到了以下问题:

1.两个数据集的时间标准不一样

2.在进行相关性分析的时候,发现冬季数据的长度两者不一致

原因

首先,简单介绍以下两个数据集的大致情况:

1.txt文件。2008年~2017年的数据,所有数据的序列长度均为8760,即为逐小时数据,且闰年未考虑2月29号这一天的数据。数据时间是我后续加进去的(北京时)

2.nc文件。2008年`2017年的各层温度数据。时间序列完好,即包含了时间,闰年也包含了2月29号的数据。(UTC)

由数据的大致情况,可以看出,我们需要解决以下问题。

  1. 北京时与国际标准时的换算。
  2. 如何为txt文件加入合适的时间序列

解决步骤

北京时与国际标准时的换算

BJT=UTC+8

ds9=ds9.assign_coords(time = (ds9.indexes['time']- timedelta(hours=-8)))#将UTC改变为北京时间

如何为txt文件加入合适的时间序列

这个问题至关重要!

起初,我的处理方法如下:因为数据的长度均为8760,所以就使用了

times=pd.date_range(start=time[i],periods=8760,freq='H')

的方法。这个方法还用了很长时间(内心苦涩)。

直到在处理相关性问题的时候我才发现,出现了大问题。——在闰年,即使我指定的时间序列长度是8760,但是系统默认指定给数据的时间序列里是有2月29号的,所以就导致了闰年12月31号无数据!

so ,我需要创建这样一个时间序列——闰年无2月29的数据,时间序列长度为8760.

解决方法如下:

import pandas as pd
import numpy as np
#创建2008年的时间序列(缺少2.29号)
date2008=pd.date_range(start='2008-01-01',end='2008-12-31-23',freq='H')
#创建一个DataFrame
lst=np.arange(8784)#创建一个列表
data2008=pd.DataFrame(lst,index=date2008)#使用Index属
drop2008=(data2008.index.day.isin([29]))&(data2008.index.month.isin([2]))#不需要的数据
need2008=data2008[~drop2008]#取反得到自己需要的数据
#need2008的index就是我们需要的时间序列啦!

结语

到这里,今天的内容就结束啦!

以后在数据处理的过程中遇到问题还是会更新的呦,大家拜拜~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小靓仔哈哈哈

谢谢你这么可爱好学还关注我!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值