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()