📅  最后修改于: 2023-12-03 15:08:43.994000             🧑  作者: Mango
Pandas 是 Python 中一个非常流行的数据分析库。Pandas 让数据分析和数据操作变得简单而高效。在 Pandas 中,时间序列数据有着重要的作用。在本文中,我们将介绍如何在 Pandas 中利用时间序列数据。
时间序列是一种按照时间顺序排列的数据序列。在 Pandas 中,时间序列数据可以使用 datetime64
类型的数据来表示时间。
创建一个时间序列非常简单。我们可以使用 Pandas 中的 date_range()
方法来创建一个指定时间范围的时间序列。
import pandas as pd
# 创建一个时间序列,从 2021-01-01 开始,持续 10 天
date_rng = pd.date_range(start='2021-01-01', end='2021-01-10', freq='D')
# 输出时间序列
print(date_rng)
输出结果:
DatetimeIndex(['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04',
'2021-01-05', '2021-01-06', '2021-01-07', '2021-01-08',
'2021-01-09', '2021-01-10'],
dtype='datetime64[ns]', freq='D')
在 Pandas 中,时间序列数据可以作为 DataFrame 或 Series 的索引。我们可以使用 set_index()
方法将时间序列数据设置为 DataFrame 或 Series 的索引。
import pandas as pd
# 创建一个 DataFrame
data = {'value': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}
df = pd.DataFrame(data)
# 创建一个时间序列,从 2021-01-01 开始,持续 10 天
date_rng = pd.date_range(start='2021-01-01', end='2021-01-10', freq='D')
# 将时间序列设置为 DataFrame 的索引
df = df.set_index(date_rng)
# 输出 DataFrame
print(df)
输出结果:
value
2021-01-01 1
2021-01-02 2
2021-01-03 3
2021-01-04 4
2021-01-05 5
2021-01-06 6
2021-01-07 7
2021-01-08 8
2021-01-09 9
2021-01-10 10
在 Pandas 中,我们可以使用时间序列数据进行切片。通过切片,我们可以选择一段时间范围内的数据。
import pandas as pd
# 创建一个 DataFrame
data = {'value': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}
df = pd.DataFrame(data)
# 创建一个时间序列,从 2021-01-01 开始,持续 10 天
date_rng = pd.date_range(start='2021-01-01', end='2021-01-10', freq='D')
# 将时间序列设置为 DataFrame 的索引
df = df.set_index(date_rng)
# 切片时间序列,选择 2021-01-03 到 2021-01-07 的数据
df_slice = df.loc['2021-01-03':'2021-01-07']
# 输出切片后的 DataFrame
print(df_slice)
输出结果:
value
2021-01-03 3
2021-01-04 4
2021-01-05 5
2021-01-06 6
2021-01-07 7
时间序列可以帮助我们进行许多有趣的应用。接下来,我们将介绍如何在 Pandas 中利用时间序列进行更加高级的操作。
在 Pandas 中,我们可以使用 resample()
方法将时间序列数据进行重采样。重采样是指将时间序列数据从一个频率转换为另一个频率的过程。例如,我们可以将每日的数据转换为每小时的数据。
import pandas as pd
# 创建一个 DataFrame,包含从 2021-01-01 开始的 24 小时内的数据
data = {'value': [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200, 210, 220, 230, 240]}
df = pd.DataFrame(data)
# 创建一个时间序列,从 2021-01-01 00:00:00 开始,每小时采集一次数据
date_rng = pd.date_range(start='2021-01-01', end='2021-01-01 23:00:00', freq='H')
# 将时间序列设置为 DataFrame 的索引
df = df.set_index(date_rng)
# 将数据重采样为每 3 小时的数据
df_resampled = df.resample('3H').mean()
# 输出重采样后的 DataFrame
print(df_resampled)
输出结果:
value
2021-01-01 00:00:00 20.000000
2021-01-01 03:00:00 50.000000
2021-01-01 06:00:00 80.000000
2021-01-01 09:00:00 110.000000
2021-01-01 12:00:00 140.000000
2021-01-01 15:00:00 170.000000
2021-01-01 18:00:00 200.000000
2021-01-01 21:00:00 230.000000
在 Pandas 中,我们可以使用 rolling()
方法对时间序列数据进行移动窗口操作。移动窗口操作是指对时间序列数据进行滑动计算的过程。例如,我们可以对时间序列数据进行滑动平均操作。
import pandas as pd
# 创建一个 DataFrame,包含从 2021-01-01 开始的 24 小时内的数据
data = {'value': [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200, 210, 220, 230, 240]}
df = pd.DataFrame(data)
# 创建一个时间序列,从 2021-01-01 00:00:00 开始,每小时采集一次数据
date_rng = pd.date_range(start='2021-01-01', end='2021-01-01 23:00:00', freq='H')
# 将时间序列设置为 DataFrame 的索引
df = df.set_index(date_rng)
# 对数据进行滑动平均操作,窗口大小为 3
df_rolling = df.rolling(window=3).mean()
# 输出滑动平均后的 DataFrame
print(df_rolling)
输出结果:
value
2021-01-01 00:00:00 NaN
2021-01-01 01:00:00 NaN
2021-01-01 02:00:00 20.000000
2021-01-01 03:00:00 30.000000
2021-01-01 04:00:00 40.000000
2021-01-01 05:00:00 50.000000
2021-01-01 06:00:00 60.000000
2021-01-01 07:00:00 70.000000
2021-01-01 08:00:00 80.000000
2021-01-01 09:00:00 90.000000
2021-01-01 10:00:00 100.000000
2021-01-01 11:00:00 110.000000
2021-01-01 12:00:00 120.000000
2021-01-01 13:00:00 130.000000
2021-01-01 14:00:00 140.000000
2021-01-01 15:00:00 150.000000
2021-01-01 16:00:00 160.000000
2021-01-01 17:00:00 170.000000
2021-01-01 18:00:00 180.000000
2021-01-01 19:00:00 190.000000
2021-01-01 20:00:00 200.000000
2021-01-01 21:00:00 210.000000
2021-01-01 22:00:00 220.000000
2021-01-01 23:00:00 230.000000
在 Pandas 中,时间序列数据有着重要的作用。本文介绍了如何在 Pandas 中利用时间序列进行数据操作。我们学习了如何创建时间序列、将时间序列数据作为 DataFrame 或 Series 的索引、对时间序列数据进行切片、重采样和移动窗口操作。这些技能将有助于我们在使用 Pandas 进行数据分析和操作时更加高效和便捷。