📜  在 Pandas 中获取日期 - Python(1)

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

在 Pandas 中获取日期 - Python

当处理时序数据时,对日期进行正确的处理十分重要。本文将介绍如何在 Pandas 中获取和处理日期数据。

获取日期

Pandas 提供了多种方法来获取日期数据,这些方法都以 pd.to_datetime() 函数为核心。我们可以传入多种不同的参数类型:

import pandas as pd

# 传入一个字符串
date_str = '2021-06-01'
date = pd.to_datetime(date_str)
print(date)

# 传入多个参数
date = pd.to_datetime(2021, 6, 1)
print(date)

# 传入一个列表
date_list = ['2021-06-01', '2021-06-02', '2021-06-03']
dates = pd.to_datetime(date_list)
print(dates)

# 传入一个 Series
date_series = pd.Series(['2021-06-01', '2021-06-02', '2021-06-03'])
dates = pd.to_datetime(date_series)
print(dates)

输出:

2021-06-01 00:00:00
2021-06-01 00:00:00
DatetimeIndex(['2021-06-01', '2021-06-02', '2021-06-03'], dtype='datetime64[ns]', freq=None)
0   2021-06-01
1   2021-06-02
2   2021-06-03
dtype: datetime64[ns]

在这里,我们使用了不同的参数类型来获取日期数据,包括字符串、整数、列表和 Series。pd.to_datetime() 函数会根据输入的参数类型自动分析并转换为 Pandas 的 TimestampDatetimeIndex 对象。

处理日期数据

Pandas 提供了丰富的方法来处理日期数据,包括日期选择、日期转换、日期计算等等。以下是一些常用的日期操作:

日期选择

我们可以使用 Pandas 的切片和索引方法来选择时间序列中的一段时间:

import pandas as pd

# 创建时间序列
dates = pd.date_range('2021-06-01', periods=10, freq='D')
df = pd.DataFrame({'date': dates, 'value': range(10)})

# 选择 2021-06-03 至 2021-06-05 的数据
df_slice = df[(df['date'] >= '2021-06-03') & (df['date'] <= '2021-06-05')]
print(df_slice)

# 选择 2021 年的数据
df_year = df[df['date'].dt.year == 2021]
print(df_year)

输出:

        date  value
2 2021-06-03      2
3 2021-06-04      3
4 2021-06-05      4
        date  value
0 2021-06-01      0
1 2021-06-02      1
2 2021-06-03      2
3 2021-06-04      3
4 2021-06-05      4
5 2021-06-06      5
6 2021-06-07      6
7 2021-06-08      7
8 2021-06-09      8
9 2021-06-10      9
日期转换

我们可以使用 pd.to_datetime() 函数来将日期数据转换为其他格式。例如,我们可以将日期数据转换为 Unix 时间戳、ISO 8601 格式等:

import pandas as pd

# 创建时间序列
dates = pd.date_range('2021-06-01', periods=3, freq='D')
df = pd.DataFrame({'date': dates})

# 将日期数据转换为 Unix 时间戳
df['timestamp'] = df['date'].astype(int) // 10 ** 9
print(df)

# 将日期数据转换为 ISO 8601 格式
df['iso_time'] = df['date'].dt.strftime('%Y-%m-%dT%H:%M:%S.%fZ')
print(df)

输出:

        date   timestamp
0 2021-06-01  1622505600
1 2021-06-02  1622592000
2 2021-06-03  1622678400
        date   timestamp                 iso_time
0 2021-06-01  1622505600  2021-06-01T00:00:00.000Z
1 2021-06-02  1622592000  2021-06-02T00:00:00.000Z
2 2021-06-03  1622678400  2021-06-03T00:00:00.000Z
日期计算

我们可以对日期数据进行简单的计算,例如加减天数、月数、年数等:

import pandas as pd

# 创建时间序列
dates = pd.date_range('2021-06-01', periods=3, freq='D')
df = pd.DataFrame({'date': dates})

# 增加一天
df['next_day'] = df['date'] + pd.Timedelta(days=1)
print(df)

# 增加一个月
df['next_month'] = df['date'] + pd.offsets.MonthEnd(1)
print(df)

# 增加一年
df['next_year'] = df['date'] + pd.Timedelta(days=365)
print(df)

输出:

        date   next_day next_month  next_year
0 2021-06-01 2021-06-02 2021-06-30 2022-06-01
1 2021-06-02 2021-06-03 2021-06-30 2022-06-02
2 2021-06-03 2021-06-04 2021-06-30 2022-06-03
总结

在 Pandas 中获取和处理日期数据是进行时序数据分析的基础技能之一。本文介绍了如何获取、选择、转换和计算日期数据。希望能对大家有所帮助。