📅  最后修改于: 2023-12-03 14:45:04.308000             🧑  作者: Mango
Pandas 是一个数据处理工具,其中包含了用于处理日期和时间序列的功能。Pandas 将日期和时间序列作为第一类数据类型进行处理,因此可以轻松地对它们进行操作和分析。 Pandas 中的日期和时间操作通常在时序数据操作中使用,比如金融、经济和科学等领域里的数据分析。
Pandas 中有三个特殊的类可用于表示日期和时间序列:Timestamp、DatetimeIndex 和 Period。
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 是一个保存了 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 表示时间跨度。可以使用 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 的日期和时间类,可以在数据分析中进行更为灵活和全面的分析。