📜  从 pandas 中获取时间信息 - Python (1)

📅  最后修改于: 2023-12-03 15:36:14.656000             🧑  作者: Mango

从 pandas 中获取时间信息 - Python

Pandas 是 Python 中一个强大的数据处理库。它不仅支持数据处理和数据分析,还提供了许多操作时间数据的方法。这使得 Pandas 成为时间序列数据的理想选择。在本文中,我们将介绍如何使用 Pandas 中的工具来处理时间数据。

注册时间数据

在 Pandas 中,我们可以使用 to_datetime() 方法将字符串转换为时间数据。它可以自动将日期转换为日期时间格式,或将时间戳转换为日期时间格式。以下是一个示例:

import pandas as pd

date_string = "2019-11-28"
date = pd.to_datetime(date_string)

print(date)

输出:

2019-11-28 00:00:00
时间戳

Pandas 支持大多数流行的时间戳格式,包括 Unix 时间戳。以下是一个示例:

import pandas as pd

timestamp = 1574924810
date = pd.to_datetime(timestamp, unit='s')

print(date)

输出:

2019-11-28 10:13:30

在此示例中,我们指定了 unit='s',表示我们提供的是 Unix 时间戳,以秒为单位。如果我们提供的是毫秒级别的 Unix 时间戳,我们应该使用 unit='ms'

我们还可以使用 Timestamp 对象获取其年、月、日、小时、分钟和秒:

import pandas as pd

timestamp = 1574924810
date = pd.to_datetime(timestamp, unit='s')

print(date.year)
print(date.month)
print(date.day)
print(date.hour)
print(date.minute)
print(date.second)

输出:

2019
11
28
10
13
30
时间序列

Pandas 中的最基本的时间序列是 DatetimeIndex 类型。 以下是一个示例:

import pandas as pd

dates = [
    "2019-01-01",
    "2019-01-02",
    "2019-01-03",
    "2019-01-04",
    "2019-01-05",
]

datetime_index = pd.to_datetime(dates)
print(datetime_index)

输出:

DatetimeIndex(['2019-01-01', '2019-01-02', '2019-01-03', '2019-01-04',
               '2019-01-05'],
              dtype='datetime64[ns]', freq=None)

在此示例中,我们使用 pd.to_datetime() 方法将日期列表转换为 DatetimeIndex 时间序列。请注意,这个序列没有任何频率,即 freq=None

时间序列偏移

DatetimeIndex 提供了许多功能,使我们能够对时间数据进行更深入的处理。例如,我们可以使用 pd.date_range() 方法生成一定范围内的日期序列。以下是一个示例,它演示如何生成从 2019 年 1 月 1 日开始的一个月的每一天的日期序列:

import pandas as pd

date_range = pd.date_range(
    start="2019-01-01",
    end="2019-01-31",
    freq="D",
    tz="Asia/Shanghai",
)

print(date_range)

输出:

DatetimeIndex(['2019-01-01 00:00:00+08:00', '2019-01-02 00:00:00+08:00',
               '2019-01-03 00:00:00+08:00', '2019-01-04 00:00:00+08:00',
               '2019-01-05 00:00:00+08:00', '2019-01-06 00:00:00+08:00',
               '2019-01-07 00:00:00+08:00', '2019-01-08 00:00:00+08:00',
               '2019-01-09 00:00:00+08:00', '2019-01-10 00:00:00+08:00',
               '2019-01-11 00:00:00+08:00', '2019-01-12 00:00:00+08:00',
               '2019-01-13 00:00:00+08:00', '2019-01-14 00:00:00+08:00',
               '2019-01-15 00:00:00+08:00', '2019-01-16 00:00:00+08:00',
               '2019-01-17 00:00:00+08:00', '2019-01-18 00:00:00+08:00',
               '2019-01-19 00:00:00+08:00', '2019-01-20 00:00:00+08:00',
               '2019-01-21 00:00:00+08:00', '2019-01-22 00:00:00+08:00',
               '2019-01-23 00:00:00+08:00', '2019-01-24 00:00:00+08:00',
               '2019-01-25 00:00:00+08:00', '2019-01-26 00:00:00+08:00',
               '2019-01-27 00:00:00+08:00', '2019-01-28 00:00:00+08:00',
               '2019-01-29 00:00:00+08:00', '2019-01-30 00:00:00+08:00',
               '2019-01-31 00:00:00+08:00'],
              dtype='datetime64[ns, Asia/Shanghai]', freq='D')

在此示例中,我们使用了 freq='D',这表示我们要在日期之间使用日偏移量。

我们还可以使用 pd.to_timedelta() 方法来创建一个时间偏移量,例如 pd.to_timedelta('1H') 则表示一个小时。我们可以使用 datetime_index + pd.to_timedelta('1H') 来将时间序列中的每个值向前移动一个小时。

总结

在本文中,我们介绍了使用 Pandas 在 Python 中处理时间数据的一些方法。我们看到了如何将字符串和时间戳转换为时间数据,如何创建时间序列,并了解了时间偏移量的概念。希望本文能够帮助你更好地理解 Pandas 中的时间数据处理。