<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: SUMIT GAVALI</title>
    <description>The latest articles on DEV Community by SUMIT GAVALI (@sumit_gavali_947a37c8a795).</description>
    <link>https://dev.to/sumit_gavali_947a37c8a795</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4105348%2Fffa12bf4-67da-44f0-99a2-ae0713f06386.jpeg</url>
      <title>DEV Community: SUMIT GAVALI</title>
      <link>https://dev.to/sumit_gavali_947a37c8a795</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sumit_gavali_947a37c8a795"/>
    <language>en</language>
    <item>
      <title>CLI tool for data-science: 891 downloads in 7dy.</title>
      <dc:creator>SUMIT GAVALI</dc:creator>
      <pubDate>Wed, 02 Sep 2026 04:53:58 +0000</pubDate>
      <link>https://dev.to/sumit_gavali_947a37c8a795/cli-tool-for-data-science-891-downloads-in-7dy-1lif</link>
      <guid>https://dev.to/sumit_gavali_947a37c8a795/cli-tool-for-data-science-891-downloads-in-7dy-1lif</guid>
      <description>&lt;h2&gt;
  
  
  The Hidden Cost of "Simple" EDA
&lt;/h2&gt;

&lt;p&gt;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:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;pandas&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;matplotlib.pyplot&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;plt&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;seaborn&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;sns&lt;/span&gt;

&lt;span class="n"&gt;df&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read_csv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;data.csv&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;head&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;info&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;describe&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;isnull&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="c1"&gt;# ... 30 more lines of boilerplate
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For a professional data scientist, this ritual takes &lt;strong&gt;45-60 minutes&lt;/strong&gt;. For a student or junior analyst, it's easily &lt;strong&gt;2-3 hours&lt;/strong&gt; of wrestling with syntax, debugging import errors, and googling "how to plot correlation matrix in seaborn" for the 47th time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I did this 47 times. I lost my mind.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So I built something that does it in &lt;strong&gt;one command&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem I Was Solving
&lt;/h2&gt;

&lt;p&gt;As a data science student and ML intern, I realized the friction wasn't in the &lt;em&gt;analysis&lt;/em&gt;—it was in the &lt;strong&gt;setup&lt;/strong&gt;. Every project demanded:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Dataset discovery&lt;/strong&gt; – finding and downloading the right data&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data loading&lt;/strong&gt; – handling different formats and paths&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Profiling&lt;/strong&gt; – understanding structure, types, missing values&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visualization&lt;/strong&gt; – creating 5-10 standard plots&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Preprocessing&lt;/strong&gt; – writing boilerplate for scaling, encoding&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Notebook setup&lt;/strong&gt; – creating the analysis environment&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This isn't "work." It's &lt;strong&gt;tax&lt;/strong&gt;. A tax you pay before you can do anything interesting.&lt;/p&gt;

&lt;p&gt;The professional paradox: senior data scientists spend &lt;em&gt;less&lt;/em&gt; time on EDA because they have their own scripts, templates, and muscle memory. Juniors spend &lt;em&gt;more&lt;/em&gt; time—just when they need to focus on learning the actual data science.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I was in the second group. So I optimized.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Solution: One Command, Zero Friction
&lt;/h2&gt;

&lt;p&gt;I built &lt;code&gt;kaggle-prep&lt;/code&gt; – a CLI tool that automates the entire EDA workflow from dataset download to production-ready notebook.&lt;/p&gt;

&lt;h3&gt;
  
  
  Installation
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;kaggle-prep
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Basic Usage
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Full EDA pipeline&lt;/span&gt;
kaggle-prep uciml/iris &lt;span class="nt"&gt;--all&lt;/span&gt;

&lt;span class="c"&gt;# Quick profile only&lt;/span&gt;
kaggle-prep uciml/iris &lt;span class="nt"&gt;--profile&lt;/span&gt;

&lt;span class="c"&gt;# Generate starter notebook&lt;/span&gt;
kaggle-prep uciml/iris &lt;span class="nt"&gt;--notebook&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  What Happens When You Run It
&lt;/h3&gt;

&lt;p&gt;Here's the actual output from running &lt;code&gt;kaggle-prep uciml/iris --all&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="gp"&gt;PS D:\Projects\kaggle&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;kaggle-prep uciml/iris &lt;span class="nt"&gt;--all&lt;/span&gt;
&lt;span class="go"&gt;No local data found in 'data'. Initiating download...
Downloading 'uciml/iris' via kagglehub (Zero-Config mode)...
Download complete! Files saved to: data
Loaded: Iris.csv (150 rows, 6 columns)

===========================================================
DATA PROFILE SUMMARY
===========================================================

Dataset: uciml/iris
Shape: 150 rows x 6 columns
Memory: 0.01 MB
Duplicates: 0
Missing: 0 (0.00%)
Numeric: 5 | Categorical: 1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Within seconds, you have a complete data profile.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Output Pipeline
&lt;/h3&gt;

&lt;p&gt;The tool generates:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh46bli5gevj1agnau4tr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh46bli5gevj1agnau4tr.png" alt=" " width="626" height="454"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fprfu4iakb66eojr2tsze.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fprfu4iakb66eojr2tsze.png" alt=" " width="793" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;9 EDA Visualizations&lt;/strong&gt; (automatically generated):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Distributions (histograms + KDE)&lt;/li&gt;
&lt;li&gt;Skewness analysis&lt;/li&gt;
&lt;li&gt;Q-Q plots for normality testing&lt;/li&gt;
&lt;li&gt;Violin plots&lt;/li&gt;
&lt;li&gt;Outlier summary&lt;/li&gt;
&lt;li&gt;Correlation matrix&lt;/li&gt;
&lt;li&gt;Cardinality analysis&lt;/li&gt;
&lt;li&gt;Categorical bar charts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Here's the actual correlation matrix generated:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsoerp9omaoena8swjebq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsoerp9omaoena8swjebq.png" alt=" " width="799" height="354"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key insights from the data:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PetalLengthCm and PetalWidthCm have a near-perfect correlation (0.96)&lt;/li&gt;
&lt;li&gt;Id shows unexpected correlation with Petal features (0.88-0.90) – indicating potential data ordering bias&lt;/li&gt;
&lt;li&gt;SepalWidthCm is negatively correlated with other features – a classic Iris dataset pattern&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Skewness Analysis&lt;/strong&gt; (automatically calculated):&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhdf18l1hfq82j8bzatrp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhdf18l1hfq82j8bzatrp.png" alt=" " width="800" height="259"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Preprocessing Pipeline Code&lt;/strong&gt; (auto-generated):
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;   &lt;span class="c1"&gt;# A complete, production-ready preprocessing script
&lt;/span&gt;   &lt;span class="c1"&gt;# Includes scaling, encoding, and split logic
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Starter Jupyter Notebook&lt;/strong&gt; (ready to run):

&lt;ul&gt;
&lt;li&gt;All imports pre-configured&lt;/li&gt;
&lt;li&gt;Data already loaded&lt;/li&gt;
&lt;li&gt;Visualization code pre-written&lt;/li&gt;
&lt;li&gt;Modeling boilerplate ready&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  The Traction: Numbers Don't Lie
&lt;/h2&gt;

&lt;p&gt;I quietly released this on PyPI without any marketing push. Here's the organic growth:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Monthly Downloads&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;891&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Last 7 Days&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;282&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Yesterday&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;216&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Python Versions&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;3.10, 3.11, 3.12, 3.13, 3.14&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Platforms&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Windows, macOS, Linux&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Platform Distribution:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;OS&lt;/th&gt;
&lt;th&gt;Usage&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Windows&lt;/td&gt;
&lt;td&gt;~45%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Linux&lt;/td&gt;
&lt;td&gt;~35%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;macOS&lt;/td&gt;
&lt;td&gt;~20%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Python Version Distribution:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Version&lt;/th&gt;
&lt;th&gt;Usage&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Python 3.11&lt;/td&gt;
&lt;td&gt;~40%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Python 3.12&lt;/td&gt;
&lt;td&gt;~30%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Python 3.10&lt;/td&gt;
&lt;td&gt;~15%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Python 3.13+&lt;/td&gt;
&lt;td&gt;~10%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;User Base Demographics:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Windows users&lt;/strong&gt; are the largest segment (likely students and corporate data scientists)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Linux users&lt;/strong&gt; follow closely (Kaggle competitions, cloud environments)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;macOS&lt;/strong&gt; has a significant presence (data science community preference)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Technical Architecture: How It Works
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The Pipeline
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Dataset URL → Download via KaggleHub → Load &amp;amp; Validate → 
  → Profile Generation →
    → Statistical Analysis →
      → Visualization Generation →
        → Preprocessing Script Generation →
          → Notebook Generation →
            → All Outputs Saved
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Key Technical Decisions
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Zero-Config Download&lt;/strong&gt;: Uses &lt;code&gt;kagglehub&lt;/code&gt; to handle authentication automatically&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smart Profiling&lt;/strong&gt;: Detects data types, calculates statistics, identifies outliers using IQR method&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visualization Engine&lt;/strong&gt;: Generates 9 standardized plots using matplotlib + seaborn&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Format Output&lt;/strong&gt;: JSON profile, HTML report, PNG plots, Python script, Jupyter notebook&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  The Feedback Loop
&lt;/h3&gt;

&lt;p&gt;I added a &lt;code&gt;--feedback&lt;/code&gt; command that:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Opens a Google Form for structured feedback&lt;/li&gt;
&lt;li&gt;Logs usage patterns anonymously&lt;/li&gt;
&lt;li&gt;Helps prioritize the next features
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kaggle-prep &lt;span class="nt"&gt;--feedback&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Why This Matters (Not Just for Me)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  For Students
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Time saved&lt;/strong&gt;: 2+ hours per project → more time to learn actual ML&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consistency&lt;/strong&gt;: Your EDA quality is high from day one&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Portfolio-ready&lt;/strong&gt;: Auto-generated notebooks are production-quality&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  For Professionals
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Scale&lt;/strong&gt;: Run the same pipeline across 10+ datasets in minutes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Standardization&lt;/strong&gt;: Consistent profiling across projects&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Collaboration&lt;/strong&gt;: Share the generated reports and notebooks&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  For Kagglers
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fast iteration&lt;/strong&gt;: Test hypotheses faster with instant profiling&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reproducibility&lt;/strong&gt;: Consistent starter code across competitions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Focus on modeling&lt;/strong&gt;: Stop wasting time on EDA boilerplate&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Roadmap
&lt;/h2&gt;

&lt;p&gt;I'm actively building the Pro version based on user feedback:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;th&gt;Expected&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Automated PDF Reports&lt;/td&gt;
&lt;td&gt;In Development&lt;/td&gt;
&lt;td&gt;October 2026&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Auto-ML Baseline&lt;/td&gt;
&lt;td&gt;In Development&lt;/td&gt;
&lt;td&gt;November 2026&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Competition Optimization&lt;/td&gt;
&lt;td&gt;Planned&lt;/td&gt;
&lt;td&gt;December 2026&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Custom Visualization Config&lt;/td&gt;
&lt;td&gt;Planned&lt;/td&gt;
&lt;td&gt;January 2027&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Try It Yourself
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;kaggle-prep
kaggle-prep uciml/iris &lt;span class="nt"&gt;--all&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; [Link to your repo]&lt;br&gt;&lt;br&gt;
&lt;strong&gt;PyPI:&lt;/strong&gt; [Link to your package]&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Issues/Feature Requests:&lt;/strong&gt; [Link to your issues page]&lt;/p&gt;




&lt;h2&gt;
  
  
  The Bigger Picture
&lt;/h2&gt;

&lt;p&gt;I built this to solve my own frustration. But the response tells me the frustration is &lt;strong&gt;universal&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The last month validated three things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Automation wins&lt;/strong&gt;: 891 people downloaded a tool that saves them 2+ hours per project&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quality matters&lt;/strong&gt;: The generated profiles and visualizations are professional-grade&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Distribution is everything&lt;/strong&gt;: 4,000 impressions on a single LinkedIn post → 891 downloads&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;This is my first open-source project that actually serves a real user base.&lt;/strong&gt; And I'm just getting started.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;I'm building in public. If you want to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Try it&lt;/strong&gt;: &lt;code&gt;pip install kaggle-prep&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contribute&lt;/strong&gt;: Fork the repo and submit PRs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Suggest features&lt;/strong&gt;: Open an issue&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Support&lt;/strong&gt;: Star the repo or sponsor the development&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Built by a student, for the data science community.&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;891 monthly downloads and counting.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Downloads last month: 891&lt;/strong&gt; | &lt;strong&gt;Stars: [Your count]&lt;/strong&gt; | &lt;strong&gt;Contributors: [Your count]&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Download Statistics
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftl9arat2p19ulj0s877s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftl9arat2p19ulj0s877s.png" alt=" " width="800" height="795"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzargf4hx759vuz5vty0c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzargf4hx759vuz5vty0c.png" alt=" " width="800" height="799"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmcktsow9kxo876czb5p9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmcktsow9kxo876czb5p9.png" alt=" " width="800" height="755"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Appendix: Full EDA Output Example
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Profile Summary
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnhhnc3q1fou88l79m9te.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnhhnc3q1fou88l79m9te.PNG" alt="summary" width="726" height="375"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Command Output
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftrtulsb0xvvvyj5x60fs.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftrtulsb0xvvvyj5x60fs.PNG" alt="summary2" width="725" height="711"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  HTML Report Preview
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F44qdlpwxszp4kftzztbf.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F44qdlpwxszp4kftzztbf.PNG" alt="report" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  results
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0hxf7mkr2tle1dpteres.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0hxf7mkr2tle1dpteres.png" alt="one" width="800" height="309"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcwkrtdicyaf08m79hhnv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcwkrtdicyaf08m79hhnv.png" alt="two" width="800" height="397"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq98nw3npvekbgf6nd45l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq98nw3npvekbgf6nd45l.png" alt="three" width="800" height="495"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Connect With Me
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/SumitGavali/CLI-DataAnalysis" rel="noopener noreferrer"&gt;https://github.com/SumitGavali/CLI-DataAnalysis&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LinkedIn:&lt;/strong&gt; &lt;a href="https://www.linkedin.com/in/sumit-gavali-99bbb7337/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/sumit-gavali-99bbb7337/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Twitter/X:&lt;/strong&gt; &lt;a href="https://x.com/Sumitrg007" rel="noopener noreferrer"&gt;https://x.com/Sumitrg007&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;If this tool saved you time, please star the repo. It helps more than you know.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>datascience</category>
      <category>python</category>
      <category>machinelearning</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
