📜  Python|使用 Pandas 处理日期和时间(1)

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

Python|使用 Pandas 处理日期和时间

在数据分析和可视化中,日期和时间是最常见的数据类型之一。Pandas提供了丰富的日期和时间处理功能,可以轻松处理时间序列数据。

DateTimeIndex

Pandas提供了 DateTimeIndex 类,可以将数组中的元素解析为日期和时间。通过将日期和时间设置为索引,可以方便地对时间序列数据进行操作。

import pandas as pd

# 创建一个日期范围
date_range = pd.date_range('2022-01-01', periods=7)

# 将日期范围设置为索引
df = pd.DataFrame({'数值': [1, 2, 3, 4, 5, 6, 7]}, index=date_range)

# 打印 DataFrame
print(df)

输出:

            数值
2022-01-01   1
2022-01-02   2
2022-01-03   3
2022-01-04   4
2022-01-05   5
2022-01-06   6
2022-01-07   7
将字符串转换为日期

将字符串转换为日期可以使用 to_datetime 方法。该方法可以解析多种日期字符串格式,例如 ISO 8601 格式、美国日期格式等。

import pandas as pd

# 创建一个包含日期字符串的Series
date_strings = pd.Series(['2022-01-01 10:00:00', '2022-01-01 11:00:00'])

# 将字符串转换为日期
date_times = pd.to_datetime(date_strings)

# 打印日期时间
print(date_times)

输出:

0   2022-01-01 10:00:00
1   2022-01-01 11:00:00
dtype: datetime64[ns]
提取日期和时间信息

可以使用 dt 属性和相应的方法提取日期和时间信息。

import pandas as pd

# 创建一个日期时间序列
date_times = pd.date_range('2022-01-01', periods=3, freq='H')

# 将日期时间序列设置为Series的索引
data = pd.Series([0, 1, 2], index=date_times)

# 提取年份
print(data.index.year)

# 提取月份
print(data.index.month)

# 提取天
print(data.index.day)

# 提取小时
print(data.index.hour)

# 提取分钟
print(data.index.minute)

# 提取秒
print(data.index.second)

输出:

Int64Index([2022, 2022, 2022], dtype='int64')
Int64Index([1, 1, 1], dtype='int64')
Int64Index([1, 1, 1], dtype='int64')
Int64Index([0, 1, 2], dtype='int64')
Int64Index([0, 0, 0], dtype='int64')
Int64Index([0, 0, 0], dtype='int64')
重采样

重采样是将时间序列数据转换为另一种时间频率的过程,例如将分钟级数据转换为小时级数据。

import pandas as pd

# 创建一个日期时间序列
date_times = pd.date_range('2022-01-01', periods=6, freq='H')

# 将日期时间序列设置为Series的索引
data = pd.Series([0, 1, 2, 3, 4, 5], index=date_times)

# 重采样为每天数据
daily_data = data.resample('D').sum()

# 打印数据
print(daily_data)

输出:

2022-01-01     6
2022-01-02    15
Freq: D, dtype: int64
移动窗口

移动窗口是一种常用的时间序列数据分析方法,它可以计算一个窗口内的统计值,例如均值和标准差。Pandas提供了 rolling 方法,可以方便地进行移动窗口计算。

import pandas as pd

# 创建一个日期时间序列
date_times = pd.date_range('2022-01-01', periods=7, freq='D')

# 将日期时间序列设置为Series的索引
data = pd.Series([0, 1, 2, 3, 4, 5, 6], index=date_times)

# 计算移动平均值
rolling_mean = data.rolling(window=3).mean()

# 打印结果
print(rolling_mean)

输出:

2022-01-01         NaN
2022-01-02         NaN
2022-01-03    1.000000
2022-01-04    2.000000
2022-01-05    3.000000
2022-01-06    4.000000
2022-01-07    5.000000
Freq: D, dtype: float64
总结

以上是Pandas中常用的日期和时间处理方法,包括将字符串转换为日期、重采样和移动窗口等。通过这些方法,可以轻松处理时间序列数据,从而进行数据分析和可视化。