Spaces:
Build error
Build error
| from datetime import datetime | |
| import streamlit as st | |
| import pandas as pd | |
| # from load_dataframe import get_data | |
| # Main Streamlit app | |
| def main(): | |
| st.title("Hugging Face Papers KPI Dashboard") | |
| # 2 tabs: one for daily data, one for weekly data | |
| st.sidebar.title("Navigation") | |
| selection = st.sidebar.selectbox("Go to", ["Daily/weekly/monthly data", "Aggregated data"]) | |
| if selection == "Daily/weekly/monthly data": | |
| # TODO use this instead | |
| # df = get_data() | |
| df = pd.read_csv('/Users/nielsrogge/Downloads/daily_papers_enriched (1).csv') | |
| df = df.drop(['Unnamed: 0'], axis=1) | |
| # Use date as index | |
| df = df.set_index('date') | |
| df.index = pd.to_datetime(df.index) | |
| df = df.sort_index() | |
| # Button to select day, month or week | |
| # Add streamlit selectbox. | |
| view_level = st.selectbox(label="View data per day, week or month", options=["day", "week", "month"]) | |
| if view_level == "day": | |
| # make a button to select the day, defaulting to today | |
| day = st.date_input("Select day", value="today", format="DD/MM/YYYY") | |
| # convert to the day of a Pandas Timestamp | |
| 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": | |
| # make a button to select the 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": | |
| # make a button to select the month, defaulting to current 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") | |
| # Display data based on aggregation level | |
| if __name__ == "__main__": | |
| main() |