Spaces:
Sleeping
Sleeping
import streamlit as st | |
import pandas as pd | |
import matplotlib.pyplot as plt | |
#Huggingface | |
from datasets import load_dataset | |
from huggingface_hub import login | |
import os | |
st.set_page_config( | |
page_title="Daftar Nilai Assesmen 1", | |
page_icon="chart_with_upwards_trend", | |
layout="wide", | |
) | |
login(token = os.environ['hf_token']) | |
dataset = load_dataset("irfantea/collections", data_files='Kombinasi.csv', split='train') | |
df = dataset.to_pandas() | |
#@st.cache_data | |
def load_data(): | |
df["First name"] = df["First name"].astype("string") | |
df["Grade/100.00 (Simulasi)"] = df["Grade/100.00 (Simulasi)"].astype(float) | |
df["Grade/100.00 (Ujian 1)"] = df["Grade/100.00 (Ujian 1)"].astype(float) | |
df["Grade/100.00 (Ujian 2)"] = df["Grade/100.00 (Ujian 2)"].astype(float) | |
df["Ujian 1 (15%)"] = (df["Grade/100.00 (Ujian 1)"].astype(float) * 0.15).round(2) | |
df["Ujian 2 (30%)"] = (df["Grade/100.00 (Ujian 2)"].astype(float) * 0.30).round(2) | |
return df | |
df = load_data() | |
def cari_npm(npm): | |
df_cari = df[df["First name"] == npm] | |
return df_cari | |
def susun_data(data_npm): | |
columns_to_display = ["Surname", "First name", "Grade/100.00 (Ujian 1)", "Ujian 1 (15%)", "Grade/100.00 (Ujian 2)", "Ujian 2 (30%)"] | |
st.table(data_npm[columns_to_display]) | |
colors = ['red', 'green', 'blue'] | |
st.title("Grafik Batang Nilai Ujian Assesmen 1 Seluruh Mahasiswa") | |
kolom1, kolom2, kolom3 = st.columns(3) | |
with kolom1: | |
grades = df["Grade/100.00 (Ujian 1)"] | |
count_below_50 = (grades < 50).sum() | |
count_50_to_68 = ((grades >= 50) & (grades <= 68)).sum() | |
count_above_68 = (grades > 68).sum() | |
data = { | |
'Category': ['Below 50', '50 - 68', 'Above 68'], | |
'Count': [count_below_50, count_50_to_68, count_above_68] | |
} | |
df_counts = pd.DataFrame(data) | |
st.write("Ujian 1") | |
plt.clf() # Clear the current figure | |
plt.bar(df_counts['Category'], df_counts['Count'], color=colors) | |
plt.xlabel('Rentang') | |
plt.ylabel('Jumlah Mahasiswa') | |
st.pyplot(plt) | |
average = df["Grade/100.00 (Ujian 1)"].mean() | |
median = df["Grade/100.00 (Ujian 1)"].median() | |
stdev = df["Grade/100.00 (Ujian 1)"].std() | |
st.info("Mean: " + str(average)) | |
st.info("Median: " + str(median)) | |
st.info("STDev: " + str(stdev)) | |
with kolom2: | |
grades = df["Grade/100.00 (Ujian 2)"] | |
count_below_50 = (grades < 50).sum() | |
count_50_to_68 = ((grades >= 50) & (grades <= 68)).sum() | |
count_above_68 = (grades > 68).sum() | |
data = { | |
'Category': ['Below 50', '50 - 68', 'Above 68'], | |
'Count': [count_below_50, count_50_to_68, count_above_68] | |
} | |
df_counts = pd.DataFrame(data) | |
st.write("Ujian 2") | |
plt.clf() # Clear the current figure | |
plt.bar(df_counts['Category'], df_counts['Count'], color=colors) | |
plt.xlabel('Rentang') | |
plt.ylabel('Jumlah Mahasiswa') | |
st.pyplot(plt) | |
average = df["Grade/100.00 (Ujian 2)"].mean() | |
median = df["Grade/100.00 (Ujian 2)"].median() | |
stdev = df["Grade/100.00 (Ujian 2)"].std() | |
st.info("Mean: " + str(average)) | |
st.info("Median: " + str(median)) | |
st.info("STDev: " + str(stdev)) | |
with kolom3: | |
st.write("Ujian Final") | |
st.sidebar.info("Masukkan NPM Lengkap!") | |
st.title("Nilai Per Mahasiswa") | |
npm = st.sidebar.text_input("NPM") | |
if st.sidebar.button(label="Cari"): | |
data_npm = cari_npm(npm) | |
susun_data(data_npm) |