Spaces:
Sleeping
Sleeping
import streamlit as st | |
import pandas as pd | |
import matplotlib.pyplot as plt | |
st.set_page_config( | |
page_title="Daftar Nilai Assesmen 1", | |
page_icon="chart_with_upwards_trend", | |
layout="wide", | |
) | |
def load_data(): | |
df = pd.read_csv("Kombinasi.csv") | |
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["Persentase Ujian 1 (15%)"] = (df["Grade/100.00 (Ujian 1)"].astype(float) * 0.15).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)", "Persentase Ujian 1 (15%)"] | |
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 | |
time.sleep(0.2) | |
plt.bar(df_counts['Category'], df_counts['Count'], color=colors) | |
plt.xlabel('Rentang') | |
plt.ylabel('Jumlah Mahasiswa') | |
st.pyplot(plt) | |
with kolom2: | |
st.write("Ujian 2") | |
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) |