У меня есть набор данных полной формы со столбцами type
и date
. type
имеет две категории gold
и silver
. Я хотел бы построить соотношение двух по дате. Для этого должна произойти серия преобразований. Они выглядят так в pandas
mock_df = df.groupby(["date"])["type"].value_counts().unstack()
mock_df["gs_ratio"] = mock_df["gold"]/mock_df["silver"]
mock_df
Данные
import pandas
df = pd.DataFrame.from_records([
{"date": "2020-04-20", "type": "gold"},
{"date": "2020-04-20", "type": "silver"},
{"date": "2020-04-20", "type": "silver"},
{"date": "2020-04-21", "type": "gold"},
{"date": "2020-04-21", "type": "gold"},
{"date": "2020-04-21", "type": "silver"},
{"date": "2020-04-22", "type": "gold"},
{"date": "2020-04-22", "type": "silver"},
{"date": "2020-04-22", "type": "silver"},
{"date": "2020-04-22", "type": "silver"}
])
df
Код пробовал:
alt.Chart(df).transform_joinaggregate(
gs_count='count(type)',
groupby=["date:T"]
).transform_pivot(
'type',
groupby=['date:T'],
value='gs_count'
).transform_calculate(
gs_ratio="datum.gold/datum.silver"
).mark_line().encode(
x='date:T',
y="gs_ratio:Q"
)