是否可以使用transform_aggregate函数对Altair中的日期时间对象执行分组操作?我试图从Jake VDP的书“ {示例:可视化西雅图自行车计数”示例-https://jakevdp.github.io/PythonDataScienceHandbook/03.11-working-with-time-series.html
中复制一些时间序列图transform_aggregate是否允许特定于时间序列的操作,例如重采样?
答案 0 :(得分:4)
Altair使用TimeUnit transform内置了时间分组,可以通过显式转换或编码速记来使用。
这里是从本书的该部分复制一张图表的示例-请注意,当数据增长到成千上万的条目时,Vega-Lite渲染器会变慢,因此我使用altair_data_server数据并将图表限制为第一年:
# Load the data
# !curl -o FremontBridge.csv https://data.seattle.gov/api/views/65db-xm6k/rows.csv?accessType=DOWNLOAD
import pandas as pd
data = pd.read_csv('FremontBridge.csv', parse_dates=['Date'])
data.columns = ['Date', 'Total', 'East', 'West']
df = data.iloc[:24 * 365] # limit to first year of data
# Draw the chart
import altair as alt
alt.data_transformers.enable('data_server') # handle larger datasets
alt.Chart(df).mark_line().transform_fold(
['Total', 'East', 'West'],
).encode(
x='hours(Date):T',
y='sum(value):Q',
color='key:N'
)
此timeUnit语法非常灵活,可让您在单个图表中按多个日期属性进行拆分和分组;例如,这是星期几面临的趋势:
alt.Chart(df).transform_fold(
['Total', 'East', 'West']
).mark_line().encode(
x='hours(Date):T',
y='sum(value):Q',
color='key:N',
facet=alt.Facet('day(Date):O', columns=4)
).properties(width=200, height=150)