📜  Pandas 日期时间(1)

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

Pandas 日期时间

介绍

Pandas 是一个数据处理工具,其中包含了用于处理日期和时间序列的功能。Pandas 将日期和时间序列作为第一类数据类型进行处理,因此可以轻松地对它们进行操作和分析。 Pandas 中的日期和时间操作通常在时序数据操作中使用,比如金融、经济和科学等领域里的数据分析。

日期时间类

Pandas 中有三个特殊的类可用于表示日期和时间序列:Timestamp、DatetimeIndex 和 Period。

Timestamp 类

Timestamp是表示日期时间的 Pandas 类。它使用datetime模块中的datetime对象进行初始化。Timestamp 对象可以使用各种参数和格式进行创建。下面是一些示例:

import pandas as pd

# 通过字符串创建 Timestamp 对象
ts = pd.Timestamp("2020-10-01")

# 通过整数创建 Timestamp 对象
ts = pd.Timestamp(2020, 10, 1)

# 通过 datetime 对象创建 Timestamp 对象
from datetime import datetime
dt = datetime(2020, 10, 1)
ts = pd.Timestamp(dt)

print(ts)

输出:

2020-10-01 00:00:00
DatetimeIndex 类

DatetimeIndex 是一个保存了 Timestamp的一维索引数组。可以将 DatetimeIndex 用作 Pandas DataFrame 或 Series 的索引。DatetimeIndex 可以通过多种方式进行创建,例如,使用 pd.date_range() 函数创建日期范围。下面是一个示例:

import pandas as pd

# 创建 DatetimeIndex 对象
dti = pd.date_range(start="2020-01-01", end="2020-01-10", freq="D")

print(dti)

输出:

DatetimeIndex(['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-04',
               '2020-01-05', '2020-01-06', '2020-01-07', '2020-01-08',
               '2020-01-09', '2020-01-10'],
              dtype='datetime64[ns]', freq='D')
Period 类

Period 表示时间跨度。可以使用 various offset aliases 创建 Period。PeriodIndex 则是存储 Period 的索引。可以使用 pd.period_range() 函数创建 Period 范围。下面是一个示例:

import pandas as pd

# 创建 PeriodIndex 对象
pi = pd.period_range(start="2020-01-01", end="2020-01-10", freq="D")

print(pi)

输出:

PeriodIndex(['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-04',
             '2020-01-05', '2020-01-06', '2020-01-07', '2020-01-08',
             '2020-01-09', '2020-01-10'],
            dtype='period[D]', freq='D')
日期时间操作

Pandas 提供了多种函数来操作日期和时间序列。

日期时间截取

Pandas 中的 Timestamp 对象可以使用 year、month、day、hour、minute、second 和 microsecond 等属性进行截取。下面是一个示例:

import pandas as pd

# 创建 Timestamp 对象
ts = pd.Timestamp("2020-10-01 12:34:56")

print("年份:", ts.year)
print("月份:", ts.month)
print("日期:", ts.day)
print("小时:", ts.hour)
print("分钟:", ts.minute)
print("秒数:", ts.second)
print("微秒:", ts.microsecond)

输出:

年份: 2020
月份: 10
日期: 1
小时: 12
分钟: 34
秒数: 56
微秒: 0
日期时间运算

在Pandas中,时间戳和时间跨度可以进行加、减、乘和除等运算。下面是一些示例:

import pandas as pd

# 创建 Timestamp 对象
ts1 = pd.Timestamp("2020-10-01")
ts2 = pd.Timestamp("2020-11-01")

# 进行加、减、乘和除等运算
print(ts2 - ts1)
print(ts1 + pd.Timedelta(hours=2))
print(ts2 * 2)
print(ts2 / 2)

输出:

31 days 00:00:00
2020-10-01 02:00:00
2020-11-02 00:00:00
2020-10-16 12:00:00
日期时间排序

使用 .sort_values() 函数对日期和时间序列排序。下面是一个示例:

import pandas as pd

# 创建 DataFrame
df = pd.DataFrame({
    "date": pd.date_range("2020-01-01", periods=5),
    "value": [5, 2, 3, 1, 4]
})

# 对 DataFrame 按日期排序
df.sort_values("date", inplace=True)

print(df)

输出:

        date  value
0 2020-01-01      5
1 2020-01-02      2
2 2020-01-03      3
3 2020-01-04      1
4 2020-01-05      4
结论

Pandas 提供了许多功能强大的函数来操作日期和时间序列,使得对于时序数据的操作变得更加方便和高效。通过使用Pandas 的日期和时间类,可以在数据分析中进行更为灵活和全面的分析。