阅读(1.7k) 书签 (0)

AI人工智能 Pandas

2020-09-24 09:50 更新

Pandas:从时间序列数据中处理,分割和提取统计信息

如果必须使用时间序列数据,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()

观察如下图所示 -

img

img

切片时间序列数据 切片涉及仅检索时间序列数据的一部分。 作为示例的一部分,我们仅在1980年到1990年间对数据进行分割。请注意以下执行此任务的代码 -

timeseries['1980':'1990'].plot()
   <matplotlib.axes._subplots.AxesSubplot at 0xa0e4b00>


plt.show()

当您运行切片时间序列数据的代码时,可以观察下图所示的图形 -

img