File size: 3,135 Bytes
57c87c9
 
 
 
 
 
 
 
 
 
 
 
570845b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
57c87c9
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
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()