|
from datetime import datetime |
|
|
|
import streamlit as st |
|
import pandas as pd |
|
|
|
|
|
|
|
|
|
|
|
def main(): |
|
st.title("Hugging Face Papers KPI Dashboard") |
|
|
|
|
|
st.sidebar.title("Navigation") |
|
selection = st.sidebar.selectbox("Go to", ["Daily/weekly/monthly data", "Aggregated data"]) |
|
|
|
if selection == "Daily/weekly/monthly data": |
|
|
|
|
|
df = pd.read_csv('/Users/nielsrogge/Downloads/daily_papers_enriched (1).csv') |
|
df = df.drop(['Unnamed: 0'], axis=1) |
|
|
|
df = df.set_index('date') |
|
df.index = pd.to_datetime(df.index) |
|
df = df.sort_index() |
|
|
|
|
|
|
|
view_level = st.selectbox(label="View data per day, week or month", options=["day", "week", "month"]) |
|
|
|
if view_level == "day": |
|
|
|
day = st.date_input("Select day", value="today", format="DD/MM/YYYY") |
|
|
|
day = pd.Timestamp(day) |
|
|
|
print("Day:", day) |
|
|
|
df = df[df.index.date == day.date()] |
|
|
|
st.write(f"Showing data for {day.strftime('%d/%m/%Y')}") |
|
|
|
num_artifacts = df[(df['num_models'] > 0) | (df['num_datasets'] > 0) | (df['num_spaces'] > 0)].shape[0] |
|
|
|
st.markdown(f""" |
|
## Number of papers: {df.shape[0]} |
|
#### Number of papers with a Github link: {df['github'].notnull().sum()} |
|
#### Number of papers with at least one HF artifact: {num_artifacts} |
|
""") |
|
|
|
st.dataframe(df, |
|
hide_index=True, |
|
column_order=("paper_page", "title", "github", "num_models", "num_datasets", "num_spaces"), |
|
column_config={"github": st.column_config.LinkColumn(), |
|
"paper_page": st.column_config.LinkColumn()}, |
|
width=2000) |
|
|
|
elif view_level == "week": |
|
|
|
week = st.number_input("Select week", value=datetime.today().isocalendar()[1], min_value=1, max_value=52) |
|
|
|
df = df.loc[df['date'].dt.isocalendar().week == week.isocalendar().week] |
|
|
|
st.write(f"Showing data for {day}") |
|
st.dataframe(df) |
|
|
|
elif view_level == "month": |
|
|
|
month = st.sidebar.date_input("Select month", value=pd.Timestamp.today().month_name()) |
|
|
|
df = df.loc[df['date'].dt.month_name() == month] |
|
|
|
st.write(f"Showing data for {day}") |
|
st.dataframe(df) |
|
|
|
elif selection == "Aggregated data": |
|
st.write("Aggregated data") |
|
|
|
else: |
|
st.write("Error: selection not recognized") |
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
main() |