DataWizard9742's picture
Update app.py
9bac701 verified
import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
# Load the cleaned dataset
@st.cache
def load_data():
try:
df = pd.read_csv('cleaned_dataset.csv')
return df
except FileNotFoundError:
st.error("The dataset file was not found. Please ensure 'cleaned_dataset.csv' is in the correct location.")
return None
# Initialize dataset
df_cleaned = load_data()
if df_cleaned is not None:
# Calculate district summary
district_summary = df_cleaned.groupby('District').sum(numeric_only=True).reset_index()
# Calculate admission rates
district_summary['Minorities Admission Rate'] = district_summary['Minorities Admitted'] / district_summary['Minorities Sanctioned']
district_summary['Non-Minorities Admission Rate'] = district_summary['Non-Minorities Admitted'] / district_summary['Non-Minorities Sanctioned']
# Function to display the initial dashboard
def show_dashboard(summary):
st.title("Telangana Colleges Admissions Dashboard")
# Display general insights
st.header("General Insights")
st.write(df_cleaned.describe())
# Filter by district
district = st.selectbox("Select District", summary['District'].unique())
filtered_summary = summary[summary['District'] == district]
st.header(f"Admission Details for {district}")
st.write(filtered_summary)
# Graph 1: Minorities - Sanctioned vs Admitted
st.header('Minorities: Sanctioned vs Admitted')
fig, ax = plt.subplots()
ax.bar(summary['District'], summary['Minorities Sanctioned'], label='Sanctioned', color='blue')
ax.bar(summary['District'], summary['Minorities Admitted'], label='Admitted', color='green')
ax.set_ylabel('Number of Seats')
ax.set_xlabel('District')
ax.set_title('Minorities: Sanctioned vs Admitted')
ax.legend()
plt.xticks(rotation=90)
st.pyplot(fig)
# Graph 2: Non-Minorities - Sanctioned vs Admitted
st.header('Non-Minorities: Sanctioned vs Admitted')
fig, ax = plt.subplots()
ax.bar(summary['District'], summary['Non-Minorities Sanctioned'], label='Sanctioned', color='blue')
ax.bar(summary['District'], summary['Non-Minorities Admitted'], label='Admitted', color='green')
ax.set_ylabel('Number of Seats')
ax.set_xlabel('District')
ax.set_title('Non-Minorities: Sanctioned vs Admitted')
ax.legend()
plt.xticks(rotation=90)
st.pyplot(fig)
# Graph 3: Grand Total - Sanctioned vs Admitted
st.header('Grand Total: Sanctioned vs Admitted')
fig, ax = plt.subplots()
ax.bar(summary['District'], summary['Grand Total Sanctioned'], label='Sanctioned', color='blue')
ax.bar(summary['District'], summary['Grand Total Admitted'], label='Admitted', color='green')
ax.set_ylabel('Number of Seats')
ax.set_xlabel('District')
ax.set_title('Grand Total: Sanctioned vs Admitted')
ax.legend()
plt.xticks(rotation=90)
st.pyplot(fig)
# Graph 4: Minorities - Vacancies
st.header('Minorities: Vacancies')
fig, ax = plt.subplots()
ax.bar(summary['District'], summary['Minorities Vacancies'], label='Vacancies', color='red')
ax.set_ylabel('Number of Seats')
ax.set_xlabel('District')
ax.set_title('Minorities: Vacancies')
ax.legend()
plt.xticks(rotation=90)
st.pyplot(fig)
# Graph 5: Non-Minorities - Vacancies
st.header('Non-Minorities: Vacancies')
fig, ax = plt.subplots()
ax.bar(summary['District'], summary['Non-Minorities Vacancies'], label='Vacancies', color='red')
ax.set_ylabel('Number of Seats')
ax.set_xlabel('District')
ax.set_title('Non-Minorities: Vacancies')
ax.legend()
plt.xticks(rotation=90)
st.pyplot(fig)
# Graph 6: Grand Total - Vacancies
st.header('Grand Total: Vacancies')
fig, ax = plt.subplots()
ax.bar(summary['District'], summary['Grand Total Vacancies'], label='Vacancies', color='red')
ax.set_ylabel('Number of Seats')
ax.set_xlabel('District')
ax.set_title('Grand Total: Vacancies')
ax.legend()
plt.xticks(rotation=90)
st.pyplot(fig)
# Graph 7: Minorities Admission Rate
st.header('Minorities Admission Rate')
fig, ax = plt.subplots()
ax.bar(summary['District'], summary['Minorities Admission Rate'], label='Admission Rate', color='purple')
ax.set_ylabel('Admission Rate')
ax.set_xlabel('District')
ax.set_title('Minorities Admission Rate')
ax.legend()
plt.xticks(rotation=90)
st.pyplot(fig)
# Graph 8: Non-Minorities Admission Rate
st.header('Non-Minorities Admission Rate')
fig, ax = plt.subplots()
ax.bar(summary['District'], summary['Non-Minorities Admission Rate'], label='Admission Rate', color='orange')
ax.set_ylabel('Admission Rate')
ax.set_xlabel('District')
ax.set_title('Non-Minorities Admission Rate')
ax.legend()
plt.xticks(rotation=90)
st.pyplot(fig)
# Graph 9: Total Sanctioned Seats (Minorities + Non-Minorities)
st.header('Total Sanctioned Seats')
total_sanctioned = summary['Minorities Sanctioned'] + summary['Non-Minorities Sanctioned']
fig, ax = plt.subplots()
ax.bar(summary['District'], total_sanctioned, label='Total Sanctioned', color='blue')
ax.set_ylabel('Number of Seats')
ax.set_xlabel('District')
ax.set_title('Total Sanctioned Seats')
ax.legend()
plt.xticks(rotation=90)
st.pyplot(fig)
# Graph 10: Total Admitted Students (Minorities + Non-Minorities)
st.header('Total Admitted Students')
total_admitted = summary['Minorities Admitted'] + summary['Non-Minorities Admitted']
fig, ax = plt.subplots()
ax.bar(summary['District'], total_admitted, label='Total Admitted', color='green')
ax.set_ylabel('Number of Students')
ax.set_xlabel('District')
ax.set_title('Total Admitted Students')
ax.legend()
plt.xticks(rotation=90)
st.pyplot(fig)
# Main Streamlit app
def main():
st.sidebar.title("Navigation")
page = st.sidebar.radio("Go to", ["Dashboard"])
if page == "Dashboard":
show_dashboard(district_summary)
if __name__ == "__main__":
main()