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

使用Altair绘制Pandas原油数据图表遇问题:序列化及大数据量报错

问题解决方案

一、修复datetime序列化错误并绘制二维图表

报错源于数据预处理不彻底:设置列名后未清理冗余行,且日期/价格列未正确转换为对应数据类型,导致Altair序列化时出错。按以下步骤修正:

1. 正确读取并清洗数据

import pandas as pd

# 读取Excel文件
xls_file = pd.ExcelFile('PET_PRI_SPT_S1_D.xls')
crude_df = xls_file.parse('Data 1')

# 设置第二行为列名
crude_df.columns = crude_df.iloc[1]

# 删除前两行冗余数据(原表头行),重置索引
crude_df = crude_df.drop([0, 1]).reset_index(drop=True)

# 转换日期列为datetime类型,价格列为数值型
crude_df['Date'] = pd.to_datetime(crude_df['Date'])
price_col = 'Cushing, OK WTI Spot Price FOB (Dollars per Barrel)'
crude_df[price_col] = pd.to_numeric(crude_df[price_col], errors='coerce')

# 移除价格为空的行
crude_df = crude_df.dropna(subset=[price_col])

2. 绘制二维图表(散点图/折线图)

Altair需要明确指定数据类型(:T表示时间,:Q表示定量数值),示例如下:

散点图

import altair as alt

alt.Chart(crude_df).mark_circle(size=6).encode(
    x='Date:T',  # 指定为时间类型
    y=f'{price_col}:Q',  # 指定为定量数值类型
    tooltip=['Date:T', f'{price_col}:Q']  # 鼠标悬浮显示详情
).interactive()  # 启用缩放平移交互

时间序列折线图(更适合价格数据)

alt.Chart(crude_df).mark_line(color='#2c3e50').encode(
    x='Date:T',
    y=f'{price_col}:Q',
    tooltip=['Date:T', f'{price_col}:Q']
).interactive()

二、解决数据量超过5000条的报错

Altair默认限制5000行数据(避免浏览器性能问题),有两种解决方案:

方案1:启用大型数据处理模式

安装vegafusion扩展,支持处理十万级以上数据:

pip install vegafusion altair

启用后直接绘制全量数据:

import altair as alt

# 启用vegafusion数据转换器
alt.data_transformers.enable('vegafusion')

# 绘制全量数据折线图
alt.Chart(crude_df).mark_line().encode(
    x='Date:T',
    y=f'{price_col}:Q'
).interactive()

方案2:数据聚合/采样

如果不想安装额外库,可对数据按时间周期聚合(如周/月均值)或随机采样:

# 按周聚合取平均
weekly_avg_df = crude_df.resample('W', on='Date')[price_col].mean().reset_index()

alt.Chart(weekly_avg_df).mark_line().encode(
    x='Date:T',
    y=f'{price_col}:Q'
)

# 或随机采样1000条数据
sampled_df = crude_df.sample(n=1000, random_state=42)
alt.Chart(sampled_df).mark_circle().encode(
    x='Date:T',
    y=f'{price_col}:Q'
)

内容的提问来源于stack exchange,提问作者prashanth manohar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:20:51