前言
在9月份处理数据的时候,我遇到了以下问题:
1.两个数据集的时间标准不一样
2.在进行相关性分析的时候,发现冬季数据的长度两者不一致
原因
首先,简单介绍以下两个数据集的大致情况:
1.txt文件。2008年~2017年的数据,所有数据的序列长度均为8760,即为逐小时数据,且闰年未考虑2月29号这一天的数据。数据时间是我后续加进去的(北京时)
2.nc文件。2008年`2017年的各层温度数据。时间序列完好,即包含了时间,闰年也包含了2月29号的数据。(UTC)
由数据的大致情况,可以看出,我们需要解决以下问题。
- 北京时与国际标准时的换算。
- 如何为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就是我们需要的时间序列啦!
结语
到这里,今天的内容就结束啦!
以后在数据处理的过程中遇到问题还是会更新的呦,大家拜拜~