跳转至

时间序列数据处理

创建时间对象

在 Pandas 中关于时间序列的常见对象有 6 种,分别是

  • Timestamp(时间戳)
  • DatetimeIndex(时间戳索引)
  • Period(时间段)
  • PeriodIndex(时间段索引)
  • 以时间为元素的 Series
  • 以时间索引的 DataFrame

Timestamp

官方文档:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Timestamp.html

Timestamp 时间戳表示时间轴上的某一点,以下不同代码都可以生成相同时间戳。

创建时间为 2018 年 10 月 1 日的时间戳:

import pandas as pd

pd.Timestamp(2018, 10, 1)

也可以使创建的时间精确到时分秒:

pd.Timestamp("2018-10-1 10:00:1")

或者从 datetime 创建:

from datetime import datetime

pd.Timestamp(datetime(2018, 10, 1))

Period

官方文档:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Period.html

Period 时间段表示时间轴上的某一区间

以下代码都可以生成相同时间段:

pd.Period('2018-10')

Period('2018-10', 'M')

Period() 函数后面通常有两个参数,第二个 freq 参数决定时间段的分割长度。

创建频率为日的时间段:

pd.Period('2018-10', freq='D')

创建时间元素的 Series

官方文档:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.to_datetime.html

Pandas 中常用 to_datetime() 函数可以创建以时间为元素的 Series。

创建一个 Series,以三个时间的字符串作为元素:

df = ['2018-08-01', '2018-09-01', '2018-10-01']
pd.to_datetime(df)

可以使用多种方法创建时间元素的 Series

df = pd.Series(['Sep 30, 2018', '2018-10-1', None])
pd.to_datetime(df)

从 DataFrame

df = pd.DataFrame({'year': [2017, 2018],
                   'month': [9, 10],
                   'day': [30, 1],
                   'hour': [23, 0]})
pd.to_datetime(df)