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

使用Tigramite绘图时遇'DataFrame无N属性'错误的疑惑

关于Tigramite调用plot_scatterplots报错的问题解析

问题描述

用pandas读取Excel文件得到DataFrame:

dataframe= pd.read_excel(
    self.INPUT_FILE,
    sheet_name="output",
    skiprows=1,
    index_col="times",
    nrows=1500,
)

调用Tigramite的绘图函数时:

from tigramite import plotting as tp

tp.plot_scatterplots(
    name="plot_scatterplots",
    dataframe=self.dataframe,
    add_scatterplot_args={"matrix_lags": matrix_lags},
)

出现报错:'DataFrame' object has no attribute 'N'。尝试用self.dataframe.to_numpy()直接传入,又报错:'numpy.ndarray' object has no attribute 'N'。但通过self.dataframe = pp.DataFrame(self.dataframe.to_numpy())转换后问题解决,CSV数据集也存在同样情况,数据头部示例:

engine_temperatures  motor_p0_speeds  engine_powers_out  co2_emissions  fuel_consumptions_liters_value
times
0                25.000000      2477.816545           0.075606       0.557940                        0.000000
1                25.046077      2477.816545           0.075606       0.557563                        0.000212

错误原因

Tigramite的plot_scatterplots函数不兼容普通的pandas DataFrame或numpy数组,它要求传入的是Tigramite自身封装的pp.DataFrame类实例。这个类是Tigramite数据处理模块的专用数据结构,自带N(样本数量)等属性;而pandas的DataFrame和numpy数组都没有这个内置属性,所以调用时会触发属性不存在的报错。

直接传numpy数组不行的原因是:pp.DataFrame不仅包裹了数值数据,还附带了变量名、样本数等元数据,numpy数组只是纯数值集合,缺少这些Tigramite绘图函数需要的元信息。

正确解决方式

  1. 首先导入Tigramite的数据处理模块:
from tigramite import data_processing as pp
  1. 将pandas DataFrame转换为Tigramite的pp.DataFrame,同时保留原数据的列名(确保绘图时能正确显示变量名称):
self.dataframe = pp.DataFrame(
    data=self.dataframe.to_numpy(),
    var_names=self.dataframe.columns.tolist()
)
  1. 之后再调用tp.plot_scatterplots函数即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 03:00:07