📜  熊猫 |时间序列操作基础(1)

📅  最后修改于: 2023-12-03 14:56:12.147000             🧑  作者: Mango

熊猫 | 时间序列操作基础

熊猫是一个用于数据处理和数据分析的Python库。它被广泛应用在金融、经济、统计等领域。其中,熊猫对于时间序列的分析具有很强的优势。

创建时间序列

首先,让我们导入pandas库:

import pandas as pd

接下来,我们可以使用pd.date_range函数来创建一个时间序列:

ts = pd.date_range(start='2021-01-01', end='2021-01-10', freq='D')
print(ts)

输出结果如下所示:

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')

我们可以使用pd.Timestamp函数将字符串转换为时间戳:

timestamp = pd.Timestamp('2021-01-01')
print(timestamp)

输出结果如下所示:

2021-01-01 00:00:00
索引和切片操作

在时间序列中,我们通常使用时间戳作为索引。因此,我们可以使用[]loc方法来进行索引:

data = {
    '2021-01-01': 10,
    '2021-01-02': 20,
    '2021-01-03': 30,
    '2021-01-04': 40,
    '2021-01-05': 50
}

ts = pd.Series(data)
print(ts)

# 使用[]
print(ts['2021-01-01'])

# 使用loc方法
print(ts.loc['2021-01-01':'2021-01-03'])

输出结果如下所示:

2021-01-01    10
2021-01-02    20
2021-01-03    30
2021-01-04    40
2021-01-05    50
dtype: int64

10

2021-01-01    10
2021-01-02    20
2021-01-03    30
dtype: int64
时间序列运算

在熊猫中,可以使用各种函数来进行时间序列的运算。例如:

  • 时间加法
  • 时间减法
  • 时间差
  • 时间段
# 时间加法
ts = pd.Timestamp('2021-01-01 12:00:00')
ts = ts + pd.Timedelta('1 day 2 hours')
print(ts)

# 时间减法
ts = pd.Timestamp('2021-01-01 12:00:00')
ts = ts - pd.Timedelta('1 day 2 hours')
print(ts)

# 时间差
ts1 = pd.Timestamp('2021-01-01 12:00:00')
ts2 = pd.Timestamp('2021-01-02 12:00:00')
print(ts2 - ts1)

# 时间段
ts = pd.Timestamp('2021-01-01 12:00:00')
ts = ts + pd.offsets.MonthEnd()
print(ts)

输出结果如下所示:

2021-01-02 14:00:00

2020-12-31 10:00:00

1 days 00:00:00

2021-01-31 12:00:00
重采样

在时间序列中,我们可以使用resample方法来进行重采样。例如,我们可以将日频率的时间序列转换为月频率的时间序列:

data = {
    '2021-01-01': 10,
    '2021-01-02': 20,
    '2021-01-03': 30,
    '2021-02-01': 40,
    '2021-02-02': 50,
    '2021-02-03': 60
}

ts = pd.Series(data)
ts.index = pd.to_datetime(ts.index)

# 将日频率的时间序列转换为月频率的时间序列
monthly_ts = ts.resample('M').sum()
print(monthly_ts)

输出结果如下所示:

2021-01-31    60
2021-02-28    150
Freq: M, dtype: int64
移动窗口

移动窗口是时间序列分析中常用的方法之一。在熊猫中,我们可以使用rolling方法来创建一个滑动窗口,并进行相应的操作。例如,我们可以计算一个3天滑动窗口内的均值:

data = {
    '2021-01-01': 10,
    '2021-01-02': 20,
    '2021-01-03': 30,
    '2021-01-04': 40,
    '2021-01-05': 50,
    '2021-01-06': 60,
    '2021-01-07': 70
}

ts = pd.Series(data)
ts.index = pd.to_datetime(ts.index)

# 计算一个3天滑动窗口内的均值
rolling_mean = ts.rolling(window=3).mean()
print(rolling_mean)

输出结果如下所示:

2021-01-01          NaN
2021-01-02          NaN
2021-01-03    20.000000
2021-01-04    30.000000
2021-01-05    40.000000
2021-01-06    50.000000
2021-01-07    60.000000
dtype: float64
参考资料
  1. pandas documentation: Time series / date functionality
  2. Python pandas.DataFrame.resample() Method Examples