A Spring Boot web application for exploratory data analysis (EDA) of CSV files. Users can upload a CSV dataset (up to 10 MB), view comprehensive summary statistics, and generate distribution visualizations.
Provides a quick, code‑free way to perform basic EDA on CSV files:
- Automated column profiling: Detects data type, calculates min, max, mean, median, mode, standard deviation, variance, count of non‑null values, and NA counts.
- Value distributions: Identifies unique value counts and top 5 most frequent values for categorical columns.
- Interactive plots: Generates histogram and box plot for numeric columns using Plotly.js.
- Configurable limits: File upload size and server port can be adjusted via
application.properties.
Below is a sample output demonstrating how the app visualizes a column’s distribution:
- Upload CSV (≤ 10 MB) through a web form
- Summary report for each column: type, numeric stats, NA counts, unique values, top frequencies
- Column selector and interactive visualization (histogram & box plot)
- Error handling for oversized files and parsing issues
- Spring Boot DevTools for hot‑reload during development
- Java 21
- Spring Boot 3.3 (Web, Thymeleaf, DevTools)
- Apache Commons CSV 1.9.0
- Apache Commons Math3 3.6.1
- Plotly.js (loaded via CDN)
- Maven 3.6+ with Wrapper
-
Clone the repository
git clone https://github.com/emma‑lewis/explore-data-app.git cd explore-data-app -
Build the project
mvn clean package
-
Run the application
-
Using Maven:
mvn spring-boot:run
-
Or with the packaged JAR:
java -jar target/explore-data-app-0.0.1-SNAPSHOT.jar
-
-
Open in browser Navigate to
http://localhost:8080to upload your CSV and start exploring.
Modify src/main/resources/application.properties to adjust settings:
server.port=8080
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB- Change
server.portto run on a different port. - Adjust multipart limits for larger or smaller uploads.
src/main/java/com/emmalewis/explore_data_app/
├── ExploreDataAppApplication.java # Spring Boot entry point
├── controller/
│ └── DataController.java # Handles upload & visualization endpoints
├── service/
│ └── DataAnalysisService.java # CSV parsing, stats computation, script generation
└── resources/
├── templates/
│ ├── index.html # File upload page
│ ├── result.html # Summary report page
│ └── visualization.html # Plot display page
└── application.properties
pom.xml # Maven build file
mvnw, mvnw.cmd # Maven wrapper scripts
