Skip to main content

A beginner-friendly CSV analysis and ML data preparation toolkit

Project description

DipenCSV 🐼

DipenCSV is to pandas what seaborn is to matplotlib — a friendlier, higher-level API.

A beginner-friendly CSV analysis and ML data preparation toolkit built on top of pandas. Helps students and small teams clean, analyze, and prepare CSV data for machine learning — without needing to know pandas.

Who is it for?

  • 🎓 Students cleaning data for ML assignments
  • 🚀 Small startups needing quick data insights
  • 👨‍💻 Developers who work with CSVs occasionally
  • 📊 Anyone who finds pandas too complex

Installation

pip install dipencsv

Quick Start

from dipencsv import Data

data = Data("your_file.csv")
data.magic()  # one click everything

Full ML Workflow in 15 lines

from dipencsv import Data
from sklearn.ensemble import RandomForestClassifier

data = Data("titanic.csv")
data.clean()
data.drop(["passengerid", "name", "ticket", "cabin"])
data.encode("sex")
data.encode("embarked")
data.remove_outliers("fare")
data.normalize("fare")
data.normalize("age")

train, test = data.split(test_size=0.2)

X_train = train.drop("survived", axis=1)
y_train = train["survived"]
X_test = test.drop("survived", axis=1)
y_test = test["survived"]

model = RandomForestClassifier()
model.fit(X_train, y_train)
print(f"Accuracy: {model.score(X_test, y_test):.2f}")
# Accuracy: 0.76

All Commands

Loading

data = Data("file.csv")                        # auto mode
data = Data("bigfile.csv", stream=True)        # force stream mode
data = Data("file.csv", auto_mode=False)       # force pandas mode

Properties

print(data.columns)   # list of column names
print(data.shape)     # (rows, columns)

Understanding Data

data.summary()    # rows, cols, types, missing values
data.report()     # duplicates, missing %, basic stats
data.explain()    # trends, issues, suggestions
data.magic()      # ⭐ one click full analysis

Cleaning

data.clean()                        # auto clean (safe mode)
data.clean(strategy="aggressive")   # drop rows with missing values
data.drop("column")                 # drop one column
data.drop(["col1", "col2"])         # drop multiple columns
data.rename("old_name", "new_name") # rename column
data.fill("column", value)          # fill missing values manually

⚠️ After clean(), column names become lowercase with underscores. Always check: print(data.columns)

ML Preparation

data.encode("gender")           # text → numbers (label encoding)
data.normalize("age")           # scale to [0, 1]
data.standardize("salary")      # scale to mean=0, std=1
data.remove_outliers("price")   # remove extreme values (IQR method)
train, test = data.split(test_size=0.2)  # train/test split

Analytics

data.mean("salary")
data.median("age")
data.max("salary")
data.min("salary")
data.count("city")
data.correlation("age", "salary")
data.correlation_matrix()
data.distribution("salary")
data.outliers("salary")
data.describe()
data.value_counts("city")
data.group_mean("city", "salary")

Querying

data.first()              # first 5 rows
data.first(10)            # first 10 rows
data.last()               # last 5 rows
data.sort("age")          # sort ascending
data.sort("age", asc=False)  # sort descending
data.find("city", "Bangalore")  # find rows by value

Intelligence

data.ask("average salary")
data.ask("top 10 salary")
data.ask("highest salary by city")
data.ask("lowest age")
data.ask("count city")
data.explain()
data.magic()

Export

data.export("output.csv")    # CSV
data.export("output.json")   # JSON
data.export("output.xlsx")   # Excel (requires openpyxl)

Stream Mode (Big Files)

DipenCSV auto detects file size and switches to stream mode for files > 500MB:

data = Data("hugefile.csv")          # auto detects
data = Data("hugefile.csv", stream=True)  # force stream

Supported in stream mode: mean(), max(), min(), count(), group_mean(), filter(), top_n()


Smart Error Handling

data.mean("salry")
# ❌ Column 'salry' not found.
# 💡 Did you mean:
#   - salary
#   - salary_usd

Common Issues

KeyError after clean()

data.clean()
print(data.columns)      # check actual column names
data.mean("salary")      # use lowercase

Excel export failing

pip install openpyxl

Big file crashes

data = Data("bigfile.csv", stream=True)

Dependencies

  • pandas >= 1.5.0
  • scikit-learn >= 1.0.0
  • openpyxl >= 3.0.0 (optional, Excel export)

Documentation

Full docs available in the docs/ folder.

Documentation

Doc What it covers
Getting Started installation, quick start
Loading Data Data(), auto mode, stream mode
Properties columns, shape
Understanding Data summary, report, explain, magic
Cleaning Data clean, drop, rename, fill
ML Preparation encode, normalize, split etc
Analytics mean, correlation, outliers etc
Query sort, find, first, last
Intelligence ask, explain, magic
Stream Mode big file handling
Export csv, json, xlsx
Examples real world examples
FAQ common student questions
ML Workflow full end-to-end ML example

License

MIT License

Author

Built by Dipendra — a CS student who wanted pandas to be less painful.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dipencsv-0.1.1.tar.gz (16.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dipencsv-0.1.1-py3-none-any.whl (15.6 kB view details)

Uploaded Python 3

File details

Details for the file dipencsv-0.1.1.tar.gz.

File metadata

  • Download URL: dipencsv-0.1.1.tar.gz
  • Upload date:
  • Size: 16.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for dipencsv-0.1.1.tar.gz
Algorithm Hash digest
SHA256 1991971014654bcf0eb5e63a5a6aa1904dbf975238fb4731a942951b02a2eb5d
MD5 447c0e5b7072b5a147ce5fef0f3fafdd
BLAKE2b-256 ef035c757f89578970399c4578e8e144271e36504e533e53efe13dbdc338866e

See more details on using hashes here.

File details

Details for the file dipencsv-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: dipencsv-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 15.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for dipencsv-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8cfc4a5b0f11dbfe196708dfb8b08885c3b00e426574ee07c8d0b3888a2301d5
MD5 2a4ca4145ff5d21c7e3868baa1d4105d
BLAKE2b-256 aa84bbf93ff678d3398d67d9526564a5464afe0a26aaf3249af779de57fc5e01

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page