如何在pandas中利用时间序列
在均匀间隔的时间段内,一个变量的有序数值流被称为时间序列。时间序列在识别导致观察到的数据的基本因素和结构方面很有用,在你拟合了一个模型之后,就可以转向预测、监测。时间序列的一些应用是分析股票市场、估计收益率、研究疾病的传播,如covid19等等。我们可以根据某些条件使用时间序列来处理特定的数据。在这篇文章中,让我们来演示如何使用时间序列数据。
点击这里查看和下载数据集。
在Pandas中利用时间序列
所有的例子都是在covid_19数据上进行的。在导入CSV文件后,使用pd.to_datetime()方法将 “观察日期 “和 “最后更新 “日期转换为数据时间。
# import packages
import pandas as pd
# read csv file
df = pd.read_csv('covid_19.csv', encoding='UTF-8')
df['ObservationDate'] = pd.to_datetime(df['ObservationDate'])
df['Last Update'] = pd.to_datetime(df['Last Update'])
print(df)
输出:
提取2021年之前的所有观测值。检索到192466条记录。
df[df['ObservationDate']<='2021']
输出:
检索某一天的观察结果。在这个例子中,我们把这一天设置为’2020-06’。
df[df['ObservationDate'] == '2020-06']
输出:
检索死亡人数最多的一天。根据我们的数据,2021年5月29日,英国的死亡人数最多。
df[df['Deaths'] == max(df['Deaths'])]
输出:
输出
在’2021-05-20’的所有死亡人数之和。
sum(df[df['ObservationDate'] == '2021-05-20']['Deaths'])
输出:
3430539.0
我们可以将时间序列列设置为数据时间,并将其设置为数据框架的索引,以方便检索我们需要的信息,而不是在艰苦的工作中检索数据。在这个例子中,ObservationDate被设置为数据框架的索引。通过使用df.loc(),我们可以通过日期直接索引和访问所需的信息。df.loc[‘2020-01’]检索到该日期的所有数据。输出显示有513个观察值。
# import packages
import pandas as pd
# read csv file
df = pd.read_csv('covid_19.csv')
df['ObservationDate'] = pd.to_datetime(df['ObservationDate'])
df['Last Update'] = pd.to_datetime(df['Last Update'])
df = df.set_index('ObservationDate')
print(df.loc['2020-01'])
输出:
使用索引检索了2021年5月20日至5月21日的观测数据。
# import packages
import pandas as pd
# read csv file
df = pd.read_csv('covid_19.csv')
df['ObservationDate'] = pd.to_datetime(df['ObservationDate'])
df['Last Update'] = pd.to_datetime(df['Last Update'])
df = df.set_index('ObservationDate')
# observations taken from may 20th to may 21st of 2021
df.loc['2021-05-20':'2021-05-21']
输出:
在这个例子中,df.groupby()被用来根据更新日期对所有观测值进行分组,并对它们进行计数。例如,第一行说有40个观测值在’2020-01-22’。
# import packages
import pandas as pd
# read csv file
df = pd.read_csv('covid_19.csv')
df['ObservationDate'] = pd.to_datetime(df['ObservationDate'])
df['Last Update'] = pd.to_datetime(df['Last Update'])
df = df.set_index('ObservationDate')
print(df.groupby(level=0).count())
输出:
在将数据框架的索引设置为时间序列后,我们使用df.plot.line()方法,通过一个单线图将所有信息可视化。时间序列数据有助于我们做出好的结论。
# import packages and libraries
import pandas as pd
from matplotlib import pyplot as plt
import numpy as np
# reading the dataset
df = pd.read_csv('covid_19_data.csv', encoding='UTF-8')
# convert Last update column to datetime
df['Last Update'] = pd.to_datetime(df['Last Update'])
# setting index
df.set_index('Last Update', inplace=True)
# plotting figure
df.plot.line()
输出: