You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Altair中可视化列名为变量的时间序列DataFrame?

宽格式DataFrame绘制时间序列图解决方案

你当前的DataFrame属于宽格式结构,时间单独为一列、其他指标均作为表头存储,只需先将其转换为适合绘图的长格式即可快速完成可视化。

1. 数据格式转换(宽表转长表)

使用pandas的melt方法完成格式转换,示例代码如下(请根据实际列名调整参数):

import pandas as pd

# 假设你的原始DataFrame名为df,时间列的列名为`date`
long_df = df.melt(
    id_vars="date", # 指定保留不参与融合的时间列
    var_name="指标类别", # 原表头内容会存入该列
    value_name="指标数值" # 原表格中的对应值存入该列
)

# 转换时间列为标准日期格式,避免绘图时间轴异常
long_df["date"] = pd.to_datetime(long_df["date"])

如果你的时间数据是存储在索引中,可直接使用stack方法转换:

long_df = df.stack().reset_index()
long_df.columns = ["date", "指标类别", "指标数值"]
long_df["date"] = pd.to_datetime(long_df["date"])

2. 时间序列可视化

转换完成后可直接用seaborn或matplotlib绘图,以下是多指标同时绘制的示例代码:

import seaborn as sns
import matplotlib.pyplot as plt

# 解决中文显示异常问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 绘制多指标时间序列,不同指标自动区分颜色
sns.lineplot(data=long_df, x="date", y="指标数值", hue="指标类别")

plt.title("多指标时间序列走势")
plt.xticks(rotation=45) # 旋转x轴标签避免重叠
plt.tight_layout()
plt.show()

如果仅需要绘制单个指标,筛选长表数据即可:

# 示例:仅绘制指标为“销售额”的时间序列
target_df = long_df[long_df["指标类别"] == "销售额"]
sns.lineplot(data=target_df, x="date", y="指标数值")
plt.show()

内容的提问来源于stack exchange,提问作者Jay Ballesteros C.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 17:36:04