如果必须使用时间序列数据,Pandas 是一个非常有用的工具。 在 Pandas 的帮助下,可以执行以下操作 -
pd.date_range
包创建一系列日期pd.Series
包对带有日期数据进行索引ts.resample
包执行重新采样示例
以下示例显示使用Pandas处理和分割时间序列数据。 请注意,这里使用月度北极涛动数据,可以从 monthly.ao.index.b50.current.ascii
下载并可以转换为文本格式。
处理时间序列数据
要处理时间序列数据,您必须执行以下步骤 -
第1步 ,导入以下软件包 -
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
接下来,定义一个函数,它将从输入文件中读取数据,如以下代码所示 -
def read_data(input_file):
input_data = np.loadtxt(input_file, delimiter = None)
现在,将这些数据转换为时间序列。 为此,请创建时间序列的日期范围。 在这个例子中,我们保留一个月的数据频率。 文件中是存储从 1950年1月开始的数据。
dates = pd.date_range('1950-01', periods = input_data.shape[0], freq = 'M')
在这一步中,在 Pandas Series
的帮助下创建时间序列数据,如下所示 -
output = pd.Series(input_data[:, index], index = dates)
return output
if __name__=='__main__':
如下所示,指定输入文件的路径 -
input_file = "/Users/admin/AO.txt"
现在,将列转换为时间序列格式,如下所示 -
timeseries = read_data(input_file)
最后,使用显示的命令绘制并可视化数据 -
plt.figure()
timeseries.plot()
plt.show()
观察如下图所示 -
切片时间序列数据 切片涉及仅检索时间序列数据的一部分。 作为示例的一部分,我们仅在1980年到1990年间对数据进行分割。请注意以下执行此任务的代码 -
timeseries['1980':'1990'].plot()
<matplotlib.axes._subplots.AxesSubplot at 0xa0e4b00>
plt.show()
当您运行切片时间序列数据的代码时,可以观察下图所示的图形 -