Metadata-Version: 2.4
Name: result-analysis
Version: 0.1.0
Summary: A CLI tool for managing student results from Excel sheets.
Author: Utkarsh Tiwari
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Requires-Dist: pandas>=1.3.0
Requires-Dist: matplotlib>=3.4.0
Requires-Dist: numpy>=1.20.0
Requires-Dist: openpyxl>=3.0.0
Requires-Dist: thefuzz>=0.18.0
Requires-Dist: python-Levenshtein>=0.12.2
Dynamic: author
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# Result Analysis (Class 12th CS Project)

A comprehensive Python application designed to analyze, manage, and visualize student examination results from Excel sheets. This project parses raw result data, organizes it, and provides tools for statistical analysis and graphical representation.

> Idea Given By Mam

## Features

- **📂 Excel Data Import:** Seamless parsing of result sheets with automatic detection of subjects, marks, and student details. Supports fuzzy search to quickly find Excel files in the directory.
- **📊 Data Visualization:** Generate insights using Bar Charts, Line Charts, and Scatter Plots to analyze class performance.
- **📈 Statistical Analysis:** Automatically calculates percentages and totals. Groups students based on custom or default percentage thresholds.
- **💾 Organized Storage:** Keeps processed data structured by Class and Exam name in a local `user-data` database (CSV format).
- **🖥️ Interactive Interface:** Features a user-friendly CLI menu with support for keyboard navigation (using `curses`) and a compatibility mode for standard terminals.
- **🗑️ Data Management:** Built-in tools to view and safely delete old class or exam records.

## Requirements

Ensure you have Python installed. The project relies on the following external libraries:

- `pandas` (Data manipulation)
- `numpy` (Numerical operations)
- `matplotlib` (Plotting graphs)
- `thefuzz` (Fuzzy string matching for file search)
- `openpyxl` (Excel file reading backend)

## Installation

You can install the package directly from the source code.

1. Clone this repository or download the source code.
2. Navigate to the project directory.
3. Install using pip:

   ```bash
   pip install .
   ```

   For development (editable mode), use:
   ```bash
   pip install -e .
   ```

   *Note: Windows users might need `windows-curses` for the full UI experience.*

## Usage

Once installed, you can run the application from anywhere using the main command or its shortcuts (`rsa`, `rta`):

```bash
result-analysis
# OR
rsa
# OR
rta
```

### Download Samples
To download sample Excel files for testing:
```bash
rsa download samples
```
This will create a `samples/` folder in your current working directory containing test data (`IIIA.xlsx`, etc.).

### Running the App
Alternatively, you can run it as a Python module:

```bash
python -m main
```

1. Place your raw Result Excel files (`.xlsx`) in the directory where you are running the command.
2. Follow the on-screen menu to:
   - **Upload:** Select and process an Excel file.
   - **Group:** Create summary statistics based on percentage ranges.
   - **View:** Display result tables in the terminal.
   - **Plot:** Visualize the data.
   - **Delete:** Remove unwanted data.

## Project Structure

- `main.py`: Entry point.
- `data/`: Data parsing and handling logic.
- `ui/`: User interface components.
- `graphs/`: Plotting and visualization logic.
- `group/`: Grouping logic.
- `user-data/`: Automatically generated directory where processed CSV files are stored, organized by Class and Exam.
