使用Altair从CSV生成直方图遇错:属性缺失与Series不可调用
解决Altair直方图的两个错误
针对
'DataFrame' object has no attribute 'total_mass'错误:
这是字段名写错了——你要绘制的是total_mass_source,但代码里误写为total_mass(比如写了df.total_mass)。直接把字段名修正为total_mass_source即可,比如用df['total_mass_source']或者df.total_mass_source(字段名无特殊字符时可用)。针对把Series当作函数调用的
TypeError:
大概率是你调用数据列时多写了括号,比如写成df['total_mass_source'](),这会把Series对象当成函数执行。删掉多余的括号,改成df['total_mass_source']就能解决。
关于你疑惑的NaN值问题:
Altair绘制直方图时会自动忽略空值,所以NaN不是这两个错误的原因。如果后续需要处理空值,可以用以下方式:
- 删除含空值的行:
df = df.dropna(subset=['total_mass_source']) - 填充空值:
df['total_mass_source'] = df['total_mass_source'].fillna(0)(0可替换为合理的填充值)
附正确示例代码:
import altair as alt import pandas as pd # 读取CSV数据 df = pd.read_csv('your_data.csv') # 可选:清理空值 df_clean = df.dropna(subset=['total_mass_source']) # 绘制直方图 histogram = alt.Chart(df_clean).mark_bar().encode( x=alt.X('total_mass_source', bin=True, title='总质量'), y=alt.Y('count()', title='数量') ) histogram.show()
内容的提问来源于stack exchange,提问作者chris trejo
相关产品推荐
相关产品推荐

