Python X轴上的奇怪年份值

Python X轴上的奇怪年份值,python,vega-lite,altair,Python,Vega Lite,Altair,如果我使用织女星数据集“灾难”并制作一个简单的图表,我会得到一些奇怪的年份值 在Altair中,代码是: 将altair导入为alt 从vega_数据集导入数据 dis=data.diseases() alt.Chart(dis).标记条().编码( x=alt.x(‘年份:T’), y=alt.y(“死亡”), color='Entity' ) 年整数不是标准时间值 在Vega Lite中,您可以向数据块添加“格式”:{“解析”:{“年”:“日期:'%Y''}},以指定字段“年”的自定义日

如果我使用织女星数据集“灾难”并制作一个简单的图表,我会得到一些奇怪的年份值

在Altair中,代码是:
将altair导入为alt
从vega_数据集导入数据
dis=data.diseases()
alt.Chart(dis).标记条().编码(
x=alt.x(‘年份:T’),
y=alt.y(“死亡”),
color='Entity'
)


年整数不是标准时间值

在Vega Lite中,您可以向数据块添加
“格式”:{“解析”:{“年”:“日期:'%Y''}}
,以指定字段
“年”
的自定义日期解析格式


在Altair中,您可以类似地指定*数据类(例如)的
格式
属性。

添加到@kanitw的答案中:当您将整数转换为日期时间时,该整数被视为自零日期起的纳秒。通过执行以下操作,您可以在pandas中看到这一点:

>>> pd.to_datetime(dis.Year)
0   1970-01-01 00:00:00.000001900
1   1970-01-01 00:00:00.000001901
2   1970-01-01 00:00:00.000001902
3   1970-01-01 00:00:00.000001903
4   1970-01-01 00:00:00.000001905
Name: Year, dtype: datetime64[ns]
import altair as alt
from vega_datasets import data

dis=data.disasters(parse_dates=['Year'])

alt.Chart(dis).mark_bar().encode(
    x=alt.X('year(Year):T'),
    y=alt.Y('Deaths'),
    color='Entity'
)
Altair/Vega Lite使用类似的约定

如果要在加载数据时将年份解析为日期,然后使用Altair绘制年份,可以执行以下操作:

>>> pd.to_datetime(dis.Year)
0   1970-01-01 00:00:00.000001900
1   1970-01-01 00:00:00.000001901
2   1970-01-01 00:00:00.000001902
3   1970-01-01 00:00:00.000001903
4   1970-01-01 00:00:00.000001905
Name: Year, dtype: datetime64[ns]
import altair as alt
from vega_datasets import data

dis=data.disasters(parse_dates=['Year'])

alt.Chart(dis).mark_bar().encode(
    x=alt.X('year(Year):T'),
    y=alt.Y('Deaths'),
    color='Entity'
)

首先,我们通过将适当的
pandas.read_csv
参数传递给加载函数,将year列解析为日期,然后使用
year
仅从完整的日期时间中提取年份

如果您是从CSV URL而不是熊猫数据框打印数据,Vega Lite足够智能,可以根据您在图表中指定的编码解析CSV文件,这意味着以下内容将给出相同的结果:

dis=data.disasters.url

alt.Chart(dis).mark_bar().encode(
    x=alt.X('year(Year):T'),
    y=alt.Y('Deaths:Q'),
    color='Entity:N'
)

谢谢你,杰克。感谢您的回答。谢谢@kanitw。现在完全有道理了。