Python Pandas – 使用DateTimeIndex创建日期时间
在数据分析和机器学习领域,日期和时间是非常重要的因素,因此要能够轻松地将日期和时间转换为 Pandas DataFrame 中的特定格式,就要使用 Pandas 的 DateTimeIndex。
DateTimeIndex 是什么?
DateTimeIndex 是 Pandas 中最常用的时间序列数据类型,它允许我们在数据帧或系列中指定日期和时间索引。
在 DateTimeIndex 中,索引的值以日期时间格式存储,这使得时间序列处理和分析变得更加简单和灵活。
如何创建 DateTimeIndex?
我们可以使用 Pandas 中的 to_datetime 这个函数从日期时间字符串、列表或 Python datetime 对象中创建 DateTimeIndex。
下面是一个例子,我们创建一个包含日期范围为 2022-01-01 至 2022-02-28 的 DateTimeIndex:
import pandas as pd
# 创建日期范围为 2022-01-01 至 2022-02-28 的 DateTimeIndex
dti = pd.date_range(start='2022-01-01', end='2022-02-28', freq='D')
# 将 DateTimeIndex 转换为 DataFrame
df = pd.DataFrame(index=dti)
print(df.head())
输出结果:
Empty DataFrame
Columns: []
Index: [2022-01-01 00:00:00, 2022-01-02 00:00:00, 2022-01-03 00:00:00, 2022-01-04 00:00:00, 2022-01-05 00:00:00]
在上面的例子中,我们使用 date_range 函数创建了一个包含 2022-01-01 至 2022-02-28 日期范围的 DateTimeIndex,频率为 D,即每天一个日期。然后,我们将 DateTimeIndex 转换为 DataFrame。
DateTimeIndex 还支持其它频率,例如每小时、每周、每月等等。通过 freq 参数即可指定频率。下面是一个例子:
# 创建日期范围为 2022-01-01 至 2022-02-28 的 DateTimeIndex,频率为 H,即每小时一个日期时间
dti = pd.date_range(start='2022-01-01', end='2022-02-28', freq='H')
# 将 DateTimeIndex 转换为 DataFrame
df = pd.DataFrame(index=dti)
print(df.head())
输出结果:
Empty DataFrame
Columns: []
Index: [2022-01-01 00:00:00, 2022-01-01 01:00:00, 2022-01-01 02:00:00, 2022-01-01 03:00:00, 2022-01-01 04:00:00]
在上面的例子中,我们将频率设置为 H,即每小时一个日期时间。
使用 Python datetime 创建 DateTimeIndex
除了使用 Pandas 中的 to_datetime 函数外,我们还可以使用 Python datetime 对象来创建 DateTimeIndex。
下面是一个例子,在 Python 中手动创建日期时间并将其转换为 DateTimeIndex:
import datetime
# 创建一个 datetime 对象
dt = datetime.datetime(2020, 1, 1)
# 将该 datetime 对象转换为 DatetimeIndex
dti = pd.DatetimeIndex([dt])
print(dti)
输出结果:
DatetimeIndex(['2020-01-01'], dtype='datetime64[ns]', freq=None)
在上面的例子中,我们创建了一个 datetime 对象,并将其转换为 DatetimeIndex。
使用 Pandas 转换日期时间格式
在数据分析和机器学习任务中,很多时候我们需要将数据中的日期时间格式进行转换,使其符合分析和建模的需求。
下面是一个例子,我们使用 Pandas 来转换日期时间格式:
import pandas as pd
# 创建包含日期时间的 DataFrame
df = pd.DataFrame({'日期': ['2022-01-01 10:30:00', '2022-01-02 12:00:00', '2022-01-03 15:45:00']})
# 查看原始日期时间格式
print(df['日期'])
# 将日期时间格式转换为 Pandas 的 datetime 类型
df['日期'] = pd.to_datetime(df['日期'])
# 查看转换后的日期时间格式
print(df['日期'])
输出结果:
0 2022-01-01 10:30:00
1 2022-01-02 12:00:00
2 2022-01-03 15:45:00
Name: 日期, dtype: object
0 2022-01-01 10:30:00
1 2022-01-02 12:00:00
2 2022-01-03 15:45:00
Name: 日期, dtype: datetime64[ns]
在上面的例子中,我们创建了一个包含日期时间的 DataFrame,并查看了原始的日期时间格式。然后,使用 Pandas 的 to_datetime 函数将日期时间格式转换为 Pandas 的 datetime 类型,并查看了转换后的日期时间格式。
Pandas 的 datetime 类型可以让我们方便地进行日期时间操作和计算,例如获取年、月、日、小时、分钟、秒等等,下面是一个例子:
# 创建包含日期时间的 DataFrame
df = pd.DataFrame({'日期': ['2022-01-01 10:30:00', '2022-01-02 12:00:00', '2022-01-03 15:45:00']})
# 将日期时间格式转换为 Pandas 的 datetime 类型
df['日期'] = pd.to_datetime(df['日期'])
# 获取年份
df['年份'] = df['日期'].dt.year
# 获取月份
df['月份'] = df['日期'].dt.month
# 获取日期
df['日'] = df['日期'].dt.day
# 获取小时数
df['小时数'] = df['日期'].dt.hour
# 获取分钟数
df['分钟数'] = df['日期'].dt.minute
# 获取秒数
df['秒数'] = df['日期'].dt.second
# 查看 DataFrame
print(df)
输出结果:
日期 年份 月份 日 小时数 分钟数 秒数
0 2022-01-01 10:30:00 2022 1 1 10 30 0
1 2022-01-02 12:00:00 2022 1 2 12 0 0
2 2022-01-03 15:45:00 2022 1 3 15 45 0
在上面的例子中,我们获取了日期时间中的年份、月份、日期、小时数、分钟数和秒数,并将其添加到 DataFrame 中。
结论
DateTimeIndex 是 Pandas 中最常用的时间序列数据类型之一,它允许我们以日期时间格式指定数据帧或系列的索引值。我们可以使用 Pandas 的 to_datetime 函数或 Python datetime 对象来创建 DateTimeIndex,并使用 Pandas 的 datetime 类型来进行日期时间格式的操作和计算。
极客笔记