跳到主要内容

Pandas 时间基础

时间序列数据是许多数据分析任务中的核心部分,尤其是在金融、气象、物联网等领域。Pandas 提供了强大的工具来处理时间序列数据,使得时间相关的操作变得简单而高效。本文将介绍 Pandas 中时间序列的基础知识,帮助你快速上手。

什么是时间序列?

时间序列是按时间顺序排列的数据点序列。例如,股票价格、气温记录、网站访问量等都可以是时间序列数据。Pandas 提供了 TimestampDatetimeIndex 等工具来处理时间数据。

创建时间序列

在 Pandas 中,时间序列通常以 DatetimeIndex 的形式存在。我们可以使用 pd.to_datetime() 函数将字符串或数字转换为时间戳。

python
import pandas as pd

# 将字符串转换为时间戳
dates = ['2023-01-01', '2023-01-02', '2023-01-03']
timestamps = pd.to_datetime(dates)
print(timestamps)

输出:

DatetimeIndex(['2023-01-01', '2023-01-02', '2023-01-03'], dtype='datetime64[ns]', freq=None)

时间索引

在 Pandas 中,时间索引(DatetimeIndex)是处理时间序列数据的关键。我们可以将时间索引作为 DataFrame 的索引,从而方便地进行时间相关的操作。

python
# 创建一个带有时间索引的 DataFrame
data = {'value': [10, 20, 30]}
df = pd.DataFrame(data, index=timestamps)
print(df)

输出:

            value
2023-01-01 10
2023-01-02 20
2023-01-03 30

时间序列的常用操作

1. 选择特定时间范围

我们可以使用 .loc[] 来选择特定时间范围内的数据。

python
# 选择 2023-01-02 到 2023-01-03 的数据
selected_data = df.loc['2023-01-02':'2023-01-03']
print(selected_data)

输出:

            value
2023-01-02 20
2023-01-03 30

2. 重采样

重采样是时间序列分析中的一个重要操作,它允许我们将数据从一个频率转换为另一个频率。例如,将每日数据转换为每月数据。

python
# 创建一个包含更多日期的 DataFrame
dates = pd.date_range('2023-01-01', periods=10, freq='D')
data = {'value': range(10)}
df = pd.DataFrame(data, index=dates)

# 将每日数据重采样为每月数据
resampled_df = df.resample('M').mean()
print(resampled_df)

输出:

            value
2023-01-31 4.5

3. 时间差计算

我们可以使用 pd.Timedelta 来计算时间差。

python
# 计算两个时间点之间的差值
start_time = pd.Timestamp('2023-01-01')
end_time = pd.Timestamp('2023-01-03')
time_diff = end_time - start_time
print(time_diff)

输出:

2 days 00:00:00

实际案例:分析股票价格

假设我们有一组股票价格数据,我们可以使用 Pandas 来分析这些数据。

python
# 创建股票价格数据
dates = pd.date_range('2023-01-01', periods=5, freq='D')
prices = [100, 101, 102, 103, 104]
stock_df = pd.DataFrame({'price': prices}, index=dates)

# 计算每日价格变化
stock_df['price_change'] = stock_df['price'].diff()
print(stock_df)

输出:

            price  price_change
2023-01-01 100 NaN
2023-01-02 101 1.0
2023-01-03 102 1.0
2023-01-04 103 1.0
2023-01-05 104 1.0

总结

本文介绍了 Pandas 中时间序列的基础知识,包括如何创建时间序列、使用时间索引、选择特定时间范围、重采样以及计算时间差。通过这些基础操作,你可以开始处理和分析时间序列数据。

附加资源

练习

  1. 创建一个包含 2023 年 1 月 1 日到 2023 年 1 月 10 日的时间序列,并计算每日的累计和。
  2. 使用重采样将每日数据转换为每周数据,并计算每周的平均值。
  3. 分析一组模拟的销售数据,计算每月的销售总额。

通过这些练习,你将更好地掌握 Pandas 中时间序列的操作。