用Python玩转时间序列:Pandas时序分析完全指南

2025年07月16日/ 浏览 6


一、为什么时间序列如此重要?

记得刚入行数据分析时,我接到的第一个任务就是分析某电商平台的销售波动。当看到数据中那个”2023-01-01″的日期字段时,才意识到时间序列分析远不只是简单的折线图。时间戳里藏着用户行为模式、系统负载规律甚至金融市场脉搏,而Pandas正是解开这些秘密的钥匙。

二、Pandas时间序列基础操作

2.1 时间戳的创建与转换

python
import pandas as pd

从字符串创建时间戳

datestr = “2023-07-15 14:30:00”
timestamp = pd.to
datetime(date_str)
print(f”时区感知:{timestamp.tz is None}”) # 输出False表示无时区

生成时间范围

daterng = pd.daterange(start=’1/1/2023′, end=’1/08/2023′, freq=’D’)

踩坑提醒:处理国际数据时务必注意时区问题,建议先用tz_localize设置时区,再用tz_convert转换。

2.2 重采样(resample)实战

某气象站每小时采集的温度数据:

python

创建示例数据

tempdata = [20 + np.random.randn() for _ in range(168)]
time
index = pd.daterange(‘2023-01-01′, periods=168, freq=’H’)
temp
series = pd.Series(tempdata, index=timeindex)

按天计算日均温度

dailymean = tempseries.resample(‘D’).mean()

三、高级时序处理技巧

3.1 滑动窗口分析

分析股票7日移动平均线:

python

获取苹果公司股价数据

import yfinance as yf
aapl = yf.download(‘AAPL’, start=’2022-01-01′)[‘Close’]

计算滑动窗口指标

ma7 = aapl.rolling(window=7).mean()
ma30 = aapl.rolling(window=30).mean()

可视化

plt.plot(aapl, label=’Actual Price’)
plt.plot(ma7, label=’7-day MA’)
plt.plot(ma30, label=’30-day MA’)

3.2 时间偏移与周期计算

处理节假日效应的小技巧:

python
from pandas.tseries.offsets import BDay

计算下一个工作日

currentdate = pd.todatetime(‘2023-05-01’) # 劳动节假期
nextbusinessday = current_date + BDay(1)

四、真实案例:电商销售预测

4.1 数据准备

python

读取包含timestamp、product_id、sales的CSV

salesdata = pd.readcsv(‘sales.csv’,
parsedates=[‘timestamp’],
index
col=’timestamp’)

处理缺失值

salesdata = salesdata.asfreq(‘D’, method=’pad’)

4.2 季节性分解

python
from statsmodels.tsa.seasonal import seasonal_decompose

result = seasonaldecompose(salesdata[‘sales’], model=’additive’, period=7)
result.plot()

五、性能优化建议

当处理千万级时间序列数据时:

  1. 使用period替代datetime节省内存
  2. 对固定频率数据使用pd.SparseArray
  3. 并行处理:resample(...).parallel_apply()

总结:时间序列就像一本用时间编码的密码本,Pandas提供了完整的解码工具链。记得第一次成功预测出销售额走势时的兴奋感——这或许就是数据科学最迷人的地方。现在,轮到您打开Jupyter Notebook开始探索了!

picture loss