Altair:指定的编码字段没有类型

Altair: encoding field is specified without a type

嗨,我漂亮的网上朋友, 我有一个关于如何在 Altair 中绘制图表的问题。

我从昨天开始就一直在为这个错误而苦苦挣扎,但仍然没有成功绘制。

我先导入了一些模块和数据,

import pandas as pd
import altair as alt
import numpy as np

url = "https://github.com/byuidatascience/data4missing/raw/master/data-raw/flights_missing/flights_missing.json"
flights = pd.read_json(url)
flights.head()

然后,我使用 groupby() 将每个 airport_code 的所有 num_of_total_flights 相加。

ttl = flights.groupby('airport_code')['num_of_flights_total'].sum()
ttl

我检查了ttl没问题后,我想绘制图表。

alt.Chart(ttl).mark_bar().encode(
    y="airport_code",
    x="num_of_flights_total",
)

然后我得到这个错误信息:num_of_flights_total编码字段没有指定类型;无法自动推断类型,因为数据未指定为 pandas.DataFrame.

有人知道怎么解决吗?? 提前感谢您的宝贵时间。

你好,有魅力的陌生人,我可以回答你的问题。在这种情况下,错误消息具有误导性(很可能是 improved in the nearish future)。因为.groupby().sum() returns as series,需要重新设置索引才能得到airport_code作为列名:

ttl = flights.groupby('airport_code')['num_of_flights_total'].sum().reset_index()

alt.Chart(ttl).mark_bar().encode(
    y="airport_code",
    x="num_of_flights_total",
)