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

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.2.tar.gz (16.7 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.2-py3-none-any.whl (15.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dipencsv-0.1.2.tar.gz
  • Upload date:
  • Size: 16.7 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.2.tar.gz
Algorithm Hash digest
SHA256 b5024fac2b682579f4222d1850857eea596a7162efa639e67092a431233463bb
MD5 0de2ab205ed2e2be92ab2525f230b947
BLAKE2b-256 76a0c2ca913bbec80c02c712cbac732a1678d32bf7639ae32a7e678c47c8673d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dipencsv-0.1.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 4c5a6b2e7972db9967b453cd9fa5cf92e347f8a707b567722f6875ea5caf3080
MD5 20fa9c50b0124e369d8fc0eaec3983e2
BLAKE2b-256 d6291f54bdc3c48b7c2e135d7514e331943390132c5080940d8eb96c78705baf

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