AI人工智能 Pandas

2020-09-24 09:50 更新

Pandas:從時間序列數(shù)據(jù)中處理,分割和提取統(tǒng)計信息

如果必須使用時間序列數(shù)據(jù),Pandas 是一個非常有用的工具。 在 Pandas 的幫助下,可以執(zhí)行以下操作 -

  • 使用 pd.date_range 包創(chuàng)建一系列日期
  • 通過使用 pd.Series 包對帶有日期數(shù)據(jù)進行索引
  • 使用 ts.resample 包執(zhí)行重新采樣
  • 改變頻率

示例

以下示例顯示使用Pandas處理和分割時間序列數(shù)據(jù)。 請注意,這里使用月度北極濤動數(shù)據(jù),可以從 monthly.ao.index.b50.current.ascii 下載并可以轉(zhuǎn)換為文本格式。

處理時間序列數(shù)據(jù)

要處理時間序列數(shù)據(jù),您必須執(zhí)行以下步驟 -

第1步 ,導(dǎo)入以下軟件包 -

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

接下來,定義一個函數(shù),它將從輸入文件中讀取數(shù)據(jù),如以下代碼所示 -

def read_data(input_file):
   input_data = np.loadtxt(input_file, delimiter = None)

現(xiàn)在,將這些數(shù)據(jù)轉(zhuǎn)換為時間序列。 為此,請創(chuàng)建時間序列的日期范圍。 在這個例子中,我們保留一個月的數(shù)據(jù)頻率。 文件中是存儲從 1950年1月開始的數(shù)據(jù)。

dates = pd.date_range('1950-01', periods = input_data.shape[0], freq = 'M')

在這一步中,在 Pandas Series 的幫助下創(chuàng)建時間序列數(shù)據(jù),如下所示 -

output = pd.Series(input_data[:, index], index = dates)    
return output


if __name__=='__main__':

如下所示,指定輸入文件的路徑 -

input_file = "/Users/admin/AO.txt"

現(xiàn)在,將列轉(zhuǎn)換為時間序列格式,如下所示 -

timeseries = read_data(input_file)

最后,使用顯示的命令繪制并可視化數(shù)據(jù) -

plt.figure()
timeseries.plot()
plt.show()

觀察如下圖所示 -

img

img

切片時間序列數(shù)據(jù) 切片涉及僅檢索時間序列數(shù)據(jù)的一部分。 作為示例的一部分,我們僅在1980年到1990年間對數(shù)據(jù)進行分割。請注意以下執(zhí)行此任務(wù)的代碼 -

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


plt.show()

當您運行切片時間序列數(shù)據(jù)的代碼時,可以觀察下圖所示的圖形 -

img

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號