用 pandas 处理时间序列 是非常常见的任务,下面从「基础 → 常用操作 → 实战示例」系统讲一下。
import pandas as pd
df = pd.read_csv("data.csv", parse_dates=["time"])
df["time"] = pd.to_datetime(df["time"])
df = df.set_index("time")
✅ 时间索引是 pandas 时间序列分析的基础
# 按天
pd.date_range("2024-01-01", periods=10, freq="D")
# 按小时
pd.date_range("2024-01-01", periods=10, freq="H")
# 按月
pd.date_range("2024-01", periods=6, freq="M")
常用频率:
D 天H 小时T 分钟W 周M 月末MS 月初df["2024"] # 2024年
df["2024-01"] # 2024年1月
df["2024-01-01":"2024-01-10"]
df[df.index.hour == 9]
# 每天数据 → 每月均值
df.resample("M").mean()
df.resample("H").ffill()
常用方法:
mean()sum()max() / min()count()df["value"].rolling(window=7).mean()
df["value"].expanding().mean()
df["year"] = df.index.year
df["month"] = df.index.month
df["weekday"] = df.index.weekday
df["hour"] = df.index.hour
df = df.resample("D").asfreq()
df.fillna(method="ffill")
df.interpolate()
df = df.tz_localize("UTC")
df = df.tz_convert("Asia/Shanghai")
import pandas as pd
import numpy as np
# 生成时间序列
idx = pd.date_range("2024-01-01", periods=100, freq="D")
data = pd.DataFrame({"value": np.random.randn(100)}, index=idx)
# 月度均值
monthly = data.resample("M").mean()
# 7天滚动均值
data["rolling_mean"] = data["value"].rolling(7).mean()
# 提取特征
data["month"] = data.index.month
datetime 类型resample 只能用于 DatetimeIndex如果你有具体场景(比如股票、日志、IoT、销售数据),我可以给你更针对性的代码模板。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。