A comprehensive application for Exploratory Data Analysis (EDA) and Data Preprocessing. Features both a Django web interface and a standalone Electron desktop application with REST API backend.
- File Upload: Drag & drop CSV upload with validation (10MB limit)
- Interactive Charts: 8 chart types using Plotly.js (Bar, Line, Histogram, Pie, Scatter, Box, Heatmap, Area)
- Data Analysis: Missing values, duplicates, outliers, data types, column statistics
- Data Preprocessing: Column selection/dropping, value replacement, filtering, cleaning
- Export Functionality: CSV, JSON, Excel export formats
- Session Management: Persistent DataFrame storage across pages
- Responsive Design: Dark theme matching original Streamlit interface
- Column Operations: Select/drop columns, replace values
- Data Cleaning: Remove duplicates, handle missing values (drop/fill)
- Data Filtering: Complex multi-column filtering with operators
- Export & Reset: Download processed data, reset to original
- Statistical Analysis: Comprehensive data profiling and insights
- Interactive Charts: Real-time chart generation with column selection
- Data Quality Assessment: Missing values, duplicates, outliers detection
- Performance Optimized: Efficient handling of large datasets
- Backend: Django 4.2.16, Python 3.13, Django REST Framework
- Web Frontend: Bootstrap 5, Plotly.js, jQuery
- Desktop App: Electron with native UI
- Data Processing: Pandas, NumPy
- API: RESTful endpoints with JWT authentication
- Session Storage: Pickle-based DataFrame serialization
- Database: SQLite (default), configurable for PostgreSQL
django_eda_app/
βββ eda_project/ # Django settings and configuration
βββ home/ # File upload and landing page
βββ eda/ # Exploratory data analysis features
βββ preprocessing/ # Data preprocessing and cleaning
βββ feedback/ # Contact form and feedback system
βββ templates/ # HTML templates with Bootstrap 5
βββ static/ # CSS, JavaScript, and assets
βββ utils.py # DataFrame utility functions
βββ manage.py # Django management commands
βββ requirements.txt # Python dependencies
βββ PROJECT_PLAN.md # Detailed project documentation
- Python 3.8+
- pip package manager
# Clone or download the project
cd django_eda_app
# Create and activate virtual environment
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Run database migrations
python manage.py migrate
# Start development server
python manage.py runserverOpen your browser and navigate to: http://localhost:8000
- Go to the Home page
- Upload a CSV file (drag & drop or file picker)
- File validation ensures CSV format and 10MB size limit
- Dataset information is displayed upon successful upload
- Navigate to the EDA page
- Use the sidebar to generate charts:
- Charts: Bar, Line, Histogram, Pie, Scatter, Box, Heatmap, Area
- Analysis: View data, missing values, duplicates, outliers, data types
- Interactive chart configuration with column selection
- Real-time results display without page refresh
- Go to the Preprocessing page
- Available operations:
- Column Operations: Select/drop columns, replace values
- Data Cleaning: Remove duplicates, handle missing values
- Filtering: Apply complex filters with multiple conditions
- Real-time dataset info updates after each operation
- Export processed data in CSV, JSON, or Excel format
- Uploaded datasets persist across browser sessions
- Original data is preserved for reset functionality
- Session indicator shows current upload status
- Dark Theme: Consistent with original Streamlit design
- Responsive Layout: Works on desktop, tablet, and mobile
- Interactive Elements: Modal dialogs, loading states, progress indicators
- Accessibility: ARIA labels, keyboard navigation, screen reader support
- Sidebar Navigation: Quick access to all operations
- Breadcrumbs: Current page and session status
- Smart Routing: Automatic redirects for missing data
# File upload limits
FILE_UPLOAD_MAX_MEMORY_SIZE = 10 * 1024 * 1024 # 10MB
DATA_UPLOAD_MAX_MEMORY_SIZE = 10 * 1024 * 1024 # 10MB
# Session configuration
SESSION_COOKIE_AGE = 86400 # 24 hours
SESSION_SAVE_EVERY_REQUEST = True
SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'# Optional configuration
DJANGO_SECRET_KEY=your-secret-key
DEBUG=True
DATABASE_URL=postgresql://user:pass@localhost/dbname- Memory Efficient: Pickle-based DataFrame serialization
- Fast Processing: Optimized pandas operations
- Lazy Loading: On-demand chart generation
- Client-side Caching: Reduced server requests
- File Size: 10MB CSV file limit (configurable)
- Memory Usage: Large datasets may require server optimization
- Session Storage: Limited by server session storage capacity
# Start test server
python manage.py runserver
# Test with sample CSV files
# Navigate through all features
# Verify responsive design- Use any CSV file for testing
- Sample datasets available in test data directory
- Verify with different data types and sizes
POST /home/upload/ # Upload CSV file
POST /eda/generate-chart/ # Generate interactive charts
POST /eda/analyze/ # Perform data analysis
POST /preprocessing/apply/ # Apply preprocessing operation
POST /preprocessing/get-column-values/ # Get unique column values
POST /preprocessing/preview/ # Preview operation results
GET /preprocessing/export/<format>/ # Export processed data
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
- Follow Django best practices
- Use Python PEP 8 style guide
- Add docstrings to functions
- Write meaningful commit messages
- β Phase 1: Foundation Setup (100%)
- β Phase 2: Core Features (100%)
- β³ Phase 3: Enhancement & Polish (60%)
- β³ Phase 4: Testing & Deployment (40%)
- Complete preprocessing functionality implementation
- Interactive chart generation with 8 chart types
- Comprehensive data analysis tools
- Export functionality for multiple formats
- Responsive UI with Bootstrap 5 dark theme
- Enhanced feedback system
- Advanced performance optimizations
- Comprehensive test suite
- Production deployment configuration
For questions, issues, or contributions:
- Documentation: See PROJECT_PLAN.md for detailed information
- Issues: Report bugs or request features via GitHub issues
- Contact: thriloke96@gmail.com
This project is open source and available under the MIT License.
Built with β€οΈ using Django, Bootstrap, and Plotly.js
Migration from Streamlit to Django - Enhancing user experience with modern web technologies