EduMetrics is a comprehensive Python-based data analysis tool designed for educational institutions. Originally built for general student grading, it has been upgraded to support B.Tech (Computer Science) curriculums, multi-class management, and interactive visualizations.
It automates the processing of exam scores, calculates grades, generates PDF report cards, and allows for interactive data exploration via a web GUI.
- ⚡ Automated Grading: Instantly calculates Total, Percentage, and Grades (A+, A, B, C, F) using NumPy vectorization.
- 📄 PDF Report Cards: Generates professional, printable PDF result sheets for every student.
- 📊 Advanced Visualizations:
- Bar Chart: Subject-wise class averages.
- Pie Chart: Overall class grade distribution.
- 🏆 Leaderboard: Automatically identifies top performers in the batch.
- 🖥️ Interactive GUI: A user-friendly web dashboard built with Streamlit to filter data and view charts dynamically.
- 📧 Email Automation: Automatically sends PDF report cards to parents/students via SMTP (Gmail).
- 🏫 Multi-Class Support: Groups data by Section/Class (e.g., "CS-A", "CS-B") and generates separate reports for each.
- 🎓 B.Tech CS Curriculum: Pre-configured for subjects like Data Structures, DBMS, OS, and Algorithms.
- Language: Python 3.x
- Data Analysis: Pandas, NumPy
- Visualization: Matplotlib, Streamlit (GUI)
- Report Generation: FPDF
- Automation: smtplib (Email), OS
EduMetrics/
│
├── dashboard.py # Legacy CLI application source code
├── app.py # NEW: Streamlit GUI application
├── student_marks.csv # Input data file (B.Tech CS format)
├── summary_report_CS-A.csv # Output: Processed data for Class A
├── summary_report_CS-B.csv # Output: Processed data for Class B
│
├── student_reports/ # Generated PDF Report Cards stored here
│ ├── Aryan Khanna_Sem3_Report.pdf
│ └── ...
│
├── subject_performance_bar.png # Generated Bar Chart
├── grade_distribution_pie.png # Generated Pie Chart
└── README.md # Project Documentation
- Clone this repository.
- Install the required Python libraries:
pip install pandas numpy matplotlib fpdf openpyxl streamlitLaunch the web dashboard to visualize data and filter by grades.
streamlit run app.pyRun the script to process data, generate PDFs, and send emails in the background.
python dashboard.pyNote: Ensure you have configured your Email credentials in dashboard.py before running the email function.
The input CSV must now include a Class column and the relevant B.Tech subjects.
Structure:
Student_ID,Name,Class,Semester,DataStructures,DBMS,OperatingSystems,ComputerNetworks,Algorithms
201,Aryan Khanna,CS-A,3,85,88,82,78,90
202,Ishita Verma,CS-A,3,92,95,90,88,94
...
To adapt this tool for other streams (e.g., Mechanical, Commerce), update the SUBJECTS list in both dashboard.py and app.py:
SUBJECTS = ['Math', 'Physics', 'Chemistry'] # ExampleTo enable email features, update the send_email_reports function in dashboard.py:
- SENDER_EMAIL: Your Gmail address.
- SENDER_PASSWORD: Your Gmail App Password (not your login password).
Created by Dharm Patel