csvkit
A suite of command-line tools for working with CSV, the king of tabular file formats.
What it is and what it does
csvkit is a suite of command-line utilities designed for working with CSV files and related tabular formats. It provides specialized commands for common CSV operations—filtering rows, selecting columns, joining files, and converting between formats like Excel, DBF, and SQL databases. The package bundles eight runtime dependencies including agate, agate-excel, agate-dbf, agate-sql for format support, and sqlalchemy for database connectivity.
The tool is aimed at developers, data analysts, and researchers who work with tabular data from the command line. It's been in active development since its early releases, supports modern Python versions, and runs on both CPython and PyPy. With low install friction and no known security vulnerabilities, it's a stable choice for CSV manipulation workflows that don't require a full data science stack.
Use it for:
- Extract specific columns from CSV files without loading into memory-heavy tools.
- Filter rows based on patterns or conditions to subset data for analysis.
- Join multiple CSV files on common columns for data consolidation.
- Convert Excel or database exports to CSV format for pipeline integration.
- Inspect and validate CSV structure and data types from the command line.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
csvkit provides command-line tools for converting, querying, and transforming CSV files and related tabular formats like Excel and databases.
Yes. csvkit is a mature, actively maintained tool with no security issues, permissive licensing, and low install friction. It's well-suited for developers and analysts who prefer command-line workflows for CSV manipulation. Install it if you work with CSV files regularly and want lightweight, specialized tools instead of heavier data libraries.
Install
csvkit on PyPI
pip
pip install csvkituv
uv add csvkitpoetry
poetry add csvkitInstalling csvkit
Before you install
Low install friction with a pure-Python wheel distribution. The package is actively maintained with a recent release and 6409 GitHub stars, indicating stable, well-used tooling.
License in practice
MIT license is permissive, allowing use in commercial and proprietary projects with minimal restrictions beyond attribution.
Quickstart
pip install csvkit
After installation, csvkit provides command-line tools for working with CSV files. The package includes utilities for filtering, selecting columns, joining files, and converting between formats.
Verify before relying
- Specific command names and their exact functionality beyond the general CSV manipulation scope.
- Performance characteristics when working with large CSV files or complex transformations.
- Whether Python API usage is documented alongside command-line interfaces.
Package facts
| License | MIT (permissive) |
| Python support | not specified |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 8 — agate, agate-excel, agate-dbf, agate-sql, openpyxl, sqlalchemy, xlrd, importlib_metadata |
| Maintenance | actively maintained — 242 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 345,125/month — #7,367 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: csvkit-2.2.0-py3-none-any.whl
Tags
More Python Modules packages
Converts domain names between Unicode and…
permissive · top 100 on PyPI
setuptoolsSetuptools is a Python build backend and…
permissive · top 100 on PyPI
PyYAMLPyYAML parses and emits YAML 1.1 data format,…
permissive · top 100 on PyPI
pydanticPydantic validates Python data structures…
permissive · top 100 on PyPI
annotated-typesProvides reusable metadata objects for use with…
permissive · top 100 on PyPI
typing-inspectionProvides runtime tools to inspect and…
permissive · top 100 on PyPI
tablibTablib converts tabular data between multiple…
permissive · top 5,000 on PyPI
csvwReads, writes, and validates tabular data…
permissive · top 5,000 on PyPI
defusedcsvDefusedcsv is a drop-in replacement for…
permissive · top 5,000 on PyPI
linear-tsvParses and writes tabular data in Linear TSV…
permissive · top 15,000 on PyPI
pytablewriterConverts tabular data into formatted tables for…
permissive · top 5,000 on PyPI
sqlite-utilsCLI tool and Python library for creating,…
permissive · top 5,000 on PyPI
aspose-cellsAspose.Cells for Python via Java is a library…
unclear · top 15,000 on PyPI
tabulatorReads and writes tabular data in multiple…
permissive · top 15,000 on PyPI
dataflows-tabulatorReads and writes tabular data in multiple…
permissive · top 15,000 on PyPI
kedro-datasetsKedro-Datasets provides data connectors for…
permissive · top 5,000 on PyPI