📜  如何在 pandas 中使用时间序列?

📅  最后修改于: 2022-05-13 01:55:40.817000             🧑  作者: Mango

如何在 pandas 中使用时间序列?

在均匀间隔的时间段内,变量的有序值流称为时间序列。时间序列可用于识别导致观察数据的潜在因素和结构,并且在您拟合模型后,可以继续进行预测和监控。时间序列的一些应用是股票市场分析、估计收益率、研究 COVID19 等疾病的传播等。我们可以根据特定条件对特定数据使用时间序列。在本文中,让我们演示如何使用时间序列数据。

单击此处查看和下载数据集。

在 Pandas 中使用时间序列

所有示例均基于 covid_19 数据。导入 CSV 文件后,“ObservationDate”和“Last Update”日期使用 pd.to_datetime() 方法转换为日期时间。

Python3
# 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)


Python3
df[df['ObservationDate']<='2021']


Python3
df[df['ObservationDate'] == '2020-06']


Python3
df[df['Deaths'] == max(df['Deaths'])]


Python3
sum(df[df['ObservationDate'] == '2021-05-20']['Deaths'])


Python3
# 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'])


Python3
# 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']


Python3
# 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())


Python3
# 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()


输出:

提取 2021 年之前的所有观测值。检索到 192466 行。

Python3

df[df['ObservationDate']<='2021']

输出:

检索特定日期的观察结果。在此示例中,我们将日期设置为“2020-06”。

Python3

df[df['ObservationDate'] == '2020-06']

输出:

检索最大死亡人数最高的日期。根据我们的数据,英国在 2021 年 5 月 29 日记录了最大死亡人数。

Python3

df[df['Deaths'] == max(df['Deaths'])]

输出:

输出

“2021-05-20”所有死亡人数的总和。

Python3

sum(df[df['ObservationDate'] == '2021-05-20']['Deaths'])

输出:

3430539.0

我们可以将时间序列列设置为 datetime 并将它们设置为数据帧的索引,以便轻松检索我们需要的信息,而不是努力检索数据。在此示例中,ObservationDate 设置为数据帧的索引。通过使用 df.loc() 我们可以直接按日期索引和访问所需的信息。 df.loc['2020-01'] 检索该日期的所有数据。输出显示有 513 个观测值。

Python3

# 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 日的观察结果。

Python3

# 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() 用于根据更新日期对所有观察结果进行分组并对其进行计数。例如,第一行表示“2020-01-22”有 40 个观察值。

Python3

# 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() 方法通过单线图可视化所有信息。时间序列数据可以帮助我们做出好的结论。

Python3

# 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()

输出: