📅  最后修改于: 2023-12-03 15:37:25.624000             🧑  作者: Mango
当处理时序数据时,对日期进行正确的处理十分重要。本文将介绍如何在 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 的 Timestamp
或 DatetimeIndex
对象。
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 中获取和处理日期数据是进行时序数据分析的基础技能之一。本文介绍了如何获取、选择、转换和计算日期数据。希望能对大家有所帮助。