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.0.tar.gz (16.0 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.0-py3-none-any.whl (14.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dipencsv-0.1.0.tar.gz
  • Upload date:
  • Size: 16.0 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.0.tar.gz
Algorithm Hash digest
SHA256 e15d9f4163310a14c201778f6ea4d2f6d0443a08520366bdba6d7cff50c03772
MD5 a9bd9c60957d47d0bcc95c115bf34e7a
BLAKE2b-256 06231df76889fef4c40082e654e15799e2fdb012f93f268331dcf9a3bdc73682

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dipencsv-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 14.7 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bdd6998cd87170f6a536f82fbdc6cde9cfa3e5919f1562d7e71245784467505a
MD5 b7f2bbbea07b1d3ed20b1884c018842a
BLAKE2b-256 89fe46cbd388a7d9b875990ee45a14e935dade98ff8ac8f1c45de293838ea1c3

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