#!/usr/bin/env python # coding: utf-8 # # Stock exchange – visualising page data # In[1]: import altair as alt import pandas as pd # In[2]: df = pd.read_csv("complete_page_list.csv", parse_dates=["date"]) # In[3]: df["session"].value_counts() # In[4]: df["year"] = df["date"].dt.year # In[5]: df_years = df["year"].value_counts().to_frame().reset_index() df_years.columns = ["year", "count"] # In[6]: # Pages per year alt.Chart(df_years).mark_bar().encode(x="year:N", y="count:Q") # In[7]: df_dates = pd.DataFrame(df["date"].unique()) df_dates["year"] = df_dates[0].dt.year df_years_dates = df_dates["year"].value_counts().to_frame().reset_index() df_years_dates.columns = ["year", "count"] # In[8]: # Days per year alt.Chart(df_years_dates).mark_bar().encode(x="year:N", y="count:Q") # In[9]: orders = {"M": 1, "N": 2, "A": 3, "U": 4} df_sessions = ( df.groupby(by="year")["session"] .value_counts() .to_frame() .rename(columns={"session": "count"}, level=0) .reset_index() ) df_sessions["order"] = df_sessions["session"].apply(lambda x: orders[x]) # In[10]: # Days per year alt.Chart(df_sessions).mark_bar().encode( x="year:N", y="count:Q", color="session:N", order=alt.Order( # Sort the segments of the bars by this field "order", sort="ascending", ), ) # --- # Created by [Tim Sherratt](https://timsherratt.org) for the [GLAM Workbench](https://glam-workbench.github.io/).