首页 > 解决方案 > 当 matplotlib 不支持时,altair 输出“输入类型不支持 ufunc 'isinf'”错误

问题描述

我有这样一个熊猫数据框:

RangeIndex: 4478 entries, 0 to 4477
Data columns (total 11 columns):
 #   Column                          Non-Null Count  Dtype         
---  ------                          --------------  -----         
 0   timestamp                       4478 non-null   datetime64[ns]
 1   user                            4478 non-null   object        
 2   Active_energy_exported_kWh      2466 non-null   float64       
 3   Active_energy_imported_kWh      4473 non-null   float64       
 4   Reactive_energy_imported_kVARh  3822 non-null   float64       
 5   Reactive_energy_imported_kVARh  3822 non-null   float64       
 6   Active_power_imported_kW        4449 non-null   float64       
 7   Reactive_power_imported_kVAR    4471 non-null   float64       
 8   Apparent_power_imported_kVA     4471 non-null   float64       
 9   Power_factor                    4449 non-null   float64       
 10  Supply_frequency_Hz             4449 non-null   float64       
dtypes: datetime64[ns](1), float64(9), object(1)
memory usage: 385.0+ KB

现在,如果我尝试用altair这种方式绘制它:

ttChart = alt.Chart(mlogs).mark_line().encode(
    alt.X('timestamp:T', title=None),
    alt.Y('Supply_frequency_Hz:Q', title=None),
)

我明白了TypeError: ufunc 'isinf' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''

但是当我这样做时

mlogs.plot(x="timestamp", y="Supply_frequency_Hz")

我可以看到我的期望。

据我所知,类型是正确的,我看不到发生了什么。

标签: python-3.xpandasmatplotlibaltair

解决方案


我得到了同样的错误信息。事实证明,我的 DataFrame 中的 2 列具有相同的名称。修复它,解决了问题。

您的示例中的两列名为“Reactive_energy_imported_kVARh”。也许这就是错误的原因。


推荐阅读