Every data science project starts the same way. You download a dataset, open a Jupyter notebook, and write the same 50+ lines of code you've written hundreds of times before:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.read_csv('data.csv')
df.head()
df.info()
df.describe()
df.isnull().sum()
For a professional data scientist, this ritual takes 45-60 minutes. For a student or junior analyst, it's easily 2-3 hours of wrestling with syntax, debugging import errors, and googling "how to plot correlation matrix in seaborn" for the 47th time.
I did this 47 times. I lost my mind.
So I built something that does it in one command.
As a data science student and ML intern, I realized the friction wasn't in the analysis—it was in the setup. Every project demanded:
This isn't "work." It's tax. A tax you pay before you can do anything interesting.
The professional paradox: senior data scientists spend less time on EDA because they have their own scripts, templates, and muscle memory. Juniors spend more time—just when they need to focus on learning the actual data science.
I was in the second group. So I optimized.
I built kaggle-prep
– a CLI tool that automates the entire EDA workflow from dataset download to production-ready notebook.
pip install kaggle-prep
kaggle-prep uciml/iris --all
kaggle-prep uciml/iris --profile
kaggle-prep uciml/iris --notebook
Here's the actual output from running kaggle-prep uciml/iris --all
:
PS D:\Projects\kaggle> kaggle-prep uciml/iris --all
No local data found in 'data'. Initiating download...
Down 'uciml/iris' via kagglehub (Zero-Config mode)...
Download complete! Files saved to: data
Loaded: Iris.csv (150 rows, 6 columns)
Dataset: uciml/iris
Shape: 150 rows x 6 columns
Memory: 0.01 MB
Duplicates: 0
Missing: 0 (0.00%)
Numeric: 5 | Categorical: 1
Within seconds, you have a complete data profile.
The tool generates:
9 EDA Visualizations (automatically generated):
Here's the actual correlation matrix generated:
Key insights from the data:
I quietly released this on PyPI without any marketing push. Here's the organic growth:
| Metric | Value |
|---|---|
| Monthly Downloads | |
| 891 | |
| Last 7 Days | |
| 282 | |
| Yesterday | |
| 216 | |
| Python Versions | |
| 3.10, 3.11, 3.12, 3.13, 3.14 | |
| Platforms | |
| Windows, macOS, Linux |
Platform Distribution:
| OS | Usage |
|---|---|
| Windows | ~45% |
| Linux | ~35% |
| macOS | ~20% |
Python Version Distribution:
| Version | Usage |
|---|---|
| Python 3.11 | ~40% |
| Python 3.12 | ~30% |
| Python 3.10 | ~15% |
| Python 3.13+ | ~10% |
User Base Demographics:
Dataset URL → Download via KaggleHub → Load & Validate →
→ Profile Generation →
→ Statistical Analysis →
→ Visualization Generation →
→ Preprocessing Script Generation →
→ Notebook Generation →
→ All Outputs Saved
kagglehub
to handle authentication automaticallyI added a --feedback
command that:
kaggle-prep --feedback
I'm actively building the Pro version based on user feedback:
| Feature | Status | Expected |
|---|---|---|
| Automated PDF Reports | In Development | October 2026 |
| Auto-ML Baseline | In Development | November 2026 |
| Competition Optimization | Planned | December 2026 |
| Custom Visualization Config | Planned | January 2027 |
pip install kaggle-prep
kaggle-prep uciml/iris --all
GitHub: [Link to your repo]
PyPI: [Link to your package]
Issues/Feature Requests: [Link to your issues page]
I built this to solve my own frustration. But the response tells me the frustration is universal.
The last month validated three things:
This is my first open-source project that actually serves a real user base. And I'm just getting started.
I'm building in public. If you want to:
pip install kaggle-prep
Built by a student, for the data science community.
891 monthly downloads and counting.
Downloads last month: 891 | Stars: [Your count] | Contributors: [Your count]
Command Output #
If this tool saved you time, please star the repo. It helps more than you know.