📅  最后修改于: 2020-12-10 06:23:07             🧑  作者: Mango
时间序列是按等距时间间隔索引的观察序列。因此,应该在任何时间序列中保持顺序和连续性。
我们将使用的数据集是一个多变量时间序列,其中包含大约一年的每小时数据,用于一个污染严重的意大利城市的空气质量。可以从下面给出的链接中下载数据集-https: //archive.ics.uci.edu/ml/datasets/air+quality 。
有必要确保-
时间序列等距分布,并且
没有多余的值或空白。
如果时间序列不是连续的,我们可以对其进行上采样或下采样。
在[122]中:
import pandas
在[123]中:
df = pandas.read_csv("AirQualityUCI.csv", sep = ";", decimal = ",")
df = df.iloc[ : , 0:14]
在[124]中:
len(df)
出[124]:
9471
在[125]中:
df.head()
出[125]:
为了预处理时间序列,我们确保数据集中没有NaN(NULL)值;如果有的话,我们可以将它们替换为0或平均值或之前或之后的值。与丢弃相比,替换是首选选择,这样可以保持时间序列的连续性。但是,在我们的数据集中,最后几个值似乎为NULL,因此删除不会影响连续性。
在[126]中:
df.isna().sum()
Out[126]:
Date 114
Time 114
CO(GT) 114
PT08.S1(CO) 114
NMHC(GT) 114
C6H6(GT) 114
PT08.S2(NMHC) 114
NOx(GT) 114
PT08.S3(NOx) 114
NO2(GT) 114
PT08.S4(NO2) 114
PT08.S5(O3) 114
T 114
RH 114
dtype: int64
在[127]中:
df = df[df['Date'].notnull()]
在[128]中:
df.isna().sum()
出[128]:
Date 0
Time 0
CO(GT) 0
PT08.S1(CO) 0
NMHC(GT) 0
C6H6(GT) 0
PT08.S2(NMHC) 0
NOx(GT) 0
PT08.S3(NOx) 0
NO2(GT) 0
PT08.S4(NO2) 0
PT08.S5(O3) 0
T 0
RH 0
dtype: int64
时间序列通常绘制为相对于时间的折线图。为此,我们现在将合并date和time列,并将其从字符串转换为datetime对象。这可以使用datetime库来完成。
在[129]中:
df['DateTime'] = (df.Date) + ' ' + (df.Time)
print (type(df.DateTime[0]))
在[130]中:
import datetime
df.DateTime = df.DateTime.apply(lambda x: datetime.datetime.strptime(x, '%d/%m/%Y %H.%M.%S'))
print (type(df.DateTime[0]))
让我们看看温度等一些变量如何随时间变化。
在[131]中:
df.index = df.DateTime
在[132]中:
import matplotlib.pyplot as plt
plt.plot(df['T'])
出[132]:
[]
在[208]中:
plt.plot(df['C6H6(GT)'])
出[208]:
[]
箱形图是另一种有用的图形,它使您可以将有关数据集的许多信息压缩到单个图形中。它显示一个或多个变量的均值,25%和75%的四分位数和离群值。在离群数很少且与均值相距甚远的情况下,我们可以通过将其设置为均值或75%四分位数来消除离群值。
在[134]中:
plt.boxplot(df[['T','C6H6(GT)']].values)
出[134]:
{'whiskers': [,
,
,
],
'caps': [,
,
,
],
'boxes': [,
],
'medians': [,
],
'fliers': [,
],'means': []
}