lontras


Namelontras JSON
Version 0.0.2 PyPI version JSON
download
home_pageNone
SummaryA lightweight, dictionary-based DataFrame implementation in pure Python. Designed for simplicity and ease of use. Perfect for small projects or when a full-fledged DataFrame library is overkill.
upload_time2025-01-25 17:18:17
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseNone
keywords dataframe
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Lontras

<img src="https://raw.githubusercontent.com/luxedo/lontras/refs/heads/main/docs/_static/lontra.png" height=400 alt="Lontras Logo"/>

[![PyPI - Version](https://img.shields.io/pypi/v/lontras.svg)](https://pypi.org/project/lontras)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/lontras.svg)](https://pypi.org/project/lontras)
[![License: MIT](https://img.shields.io/badge/license-MIT-blue)](https://opensource.org/license/mit)
![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/luxedo/lontras/publish.yml)
[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/luxedo/lontras/main.svg)](https://results.pre-commit.ci/latest/github/luxedo/lontras/main)
![Codecov](https://img.shields.io/codecov/c/github/luxedo/lontras)
![CodeFactor Grade](https://img.shields.io/codefactor/grade/github/luxedo/lontras)

---

> ### ⚠️ This library is under development and has not been released yet

> We love `pandas` and its siblings! They're the industry-standard tools for powerful data
> manipulation. However, for smaller projects or when minimizing dependencies is paramount,
> `lontras` offers a lightweight, pure-Python alternative built on simple dictionaries. Designed
> for ease of use and direct integration, lontras encourages you to copy and paste its core
> components into your code. It's the perfect stand mixer for baking smaller data tasks when
> bringing out the full industrial equipment of `pandas` is too much.

## TLDR;

- **🤏 Small-scale `DataFrame` operations? `lontras`!**
- **🚀 Fast `DataFrame` loading, no dependencies? `lontras`!**
- **⚙️ Embed `DataFrames` in [MicroPython](https://micropython.org/)? `lontras`!**
- **🌐 Use `DataFrames` in the browser ([PyScript](https://pyscript.net/))? `lontras`!**
- **🤝 High [Pandas](https://pandas.pydata.org/) compatibility? `lontras`!**
- **📦 1000x smaller! Pandas+Numpy ~ 120MB; `lontras` ~ 102KB!**
- **⏱️ Loads 20x faster! Pandas ~ 400ms; `lontras` ~ 20ms!** <small>[test script](tools/repo-info.sh)</small>

## Table of Contents

- [Installation](#installation)
- [Documentation](#documentation)
- [Core Functionalities](#core-functionalities)
- [License](#license)

## Installation

If you prefer to install lontras using pip for easy management and updates, you can do so with the
following command:

```console
pip install lontras
# or
uv pip install lontras
```

This will download and install lontras from the Python Package Index (PyPI).

For lightweight projects where you want to avoid external dependencies, you can simply copy the
source file [src/lontras/lontras.py](src/lontras/lontras.py) into your project directory. This
allows you to directly use the library functions from your code without any installation.

## Documentation

Check out the [API Docs](https://lontras.readthedocs.io/en/latest/).

## Core Functionalities:

Lontras prioritizes simplicity and minimal dependencies. It leverages Python's native dictionaries
(via [UserDict](https://docs.python.org/3/library/collections.html#collections.UserDict)) to offer
core `DataFrame` and `Series` functionalities without external libraries.

### Data Structures:

- `Series`: A one-dimensional array-like structure.
- `DataFrame`: A two-dimensional labeled data structure.

### Accessing Data:

- `loc` and `iloc`: Access data by label or by index.
- Label-based access: Access data using standard dictionary-like syntax (e.g., series['label']).
- Positional access (slicing): Use slices for location-based access (e.g., series[1:3]).
- Attribute-based access: For convenient access to all values for a given key, use attribute-based access using **getattr** that dynamically retrieves data based on provided keys or a list of keys.

### Modifying Data:

- Setting values: Modify existing values or add new entries using `loc` or `iloc` assignment (e.g., series.loc['label'] = value).
- Deleting values: Remove entries using del series['label'].
- Concatenation: Combine Series or DataFrames vertically or horizontally.

### Transforming Data:

- Mapping and applying functions: Apply functions element-wise using map or along axes/indices using apply.
- Sorting: Sort indexes and values using provided sorting functions.
- Basic operations: Use standard Python operators (+, -, \*, /, //, %, \*\*, comparisons) for element-wise operations.

### Data Aggregation and Combination:

- groupby: Group data based on a column and perform operations within each group (similar to pandas groupby).
- Join/Merge: Merge two DataFrames based on specific columns (similar to pandas join/merge operations).
- reduce: Apply a function cumulatively to the elements. Basic reduction functions like max, min, argmax, sum, etc.
- Leverages Python's built-in statistics module for basic statistical calculations.

### Limitations & Trade-offs: (Same as before)

- No `dtype`! You ask for a sum, `lontras` will try to sum and may raise an exception if an unexpcted value is found.
- Specialized Data Handling: Lontras focuses on core functionalities and doesn't include specialized functions for datetime, strings, or categorical data. However, users can achieve similar behavior through apply and map functions.
- Statistical Functions: Limited set of statistical functions. Lontras relies primarily on Python's built-in statistics module.
- Data Import/Export: Supports limited import/export formats. External libraries might be necessary for complex file handling.
- Missing Data Handling: Doesn't include dedicated functions for handling missing data. Users can implement their own logic using conditional statements or filtering.
- Multilevel Indexing: Lacks built-in support for multilevel indexing. However, tuple indexes can be used to achieve similar hierarchical structures.
- Plotting: Currently doesn't include plotting functionalities. External plotting libraries are recommended for visualization.

## License

`lontras` is distributed under the terms of the [MIT](https://spdx.org/licenses/MIT.html) license.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "lontras",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "dataframe",
    "author": null,
    "author_email": "Luiz Eduardo Amaral <luizamaral306@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/91/35/3787a28ce135edbdcf34937619411f5036ce596279c85c63bef1695fa61f/lontras-0.0.2.tar.gz",
    "platform": null,
    "description": "# Lontras\n\n<img src=\"https://raw.githubusercontent.com/luxedo/lontras/refs/heads/main/docs/_static/lontra.png\" height=400 alt=\"Lontras Logo\"/>\n\n[![PyPI - Version](https://img.shields.io/pypi/v/lontras.svg)](https://pypi.org/project/lontras)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/lontras.svg)](https://pypi.org/project/lontras)\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue)](https://opensource.org/license/mit)\n![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/luxedo/lontras/publish.yml)\n[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/luxedo/lontras/main.svg)](https://results.pre-commit.ci/latest/github/luxedo/lontras/main)\n![Codecov](https://img.shields.io/codecov/c/github/luxedo/lontras)\n![CodeFactor Grade](https://img.shields.io/codefactor/grade/github/luxedo/lontras)\n\n---\n\n> ### \u26a0\ufe0f This library is under development and has not been released yet\n\n> We love `pandas` and its siblings! They're the industry-standard tools for powerful data\n> manipulation. However, for smaller projects or when minimizing dependencies is paramount,\n> `lontras` offers a lightweight, pure-Python alternative built on simple dictionaries. Designed\n> for ease of use and direct integration, lontras encourages you to copy and paste its core\n> components into your code. It's the perfect stand mixer for baking smaller data tasks when\n> bringing out the full industrial equipment of `pandas` is too much.\n\n## TLDR;\n\n- **\ud83e\udd0f Small-scale `DataFrame` operations? `lontras`!**\n- **\ud83d\ude80 Fast `DataFrame` loading, no dependencies? `lontras`!**\n- **\u2699\ufe0f Embed `DataFrames` in [MicroPython](https://micropython.org/)? `lontras`!**\n- **\ud83c\udf10 Use `DataFrames` in the browser ([PyScript](https://pyscript.net/))? `lontras`!**\n- **\ud83e\udd1d High [Pandas](https://pandas.pydata.org/) compatibility? `lontras`!**\n- **\ud83d\udce6 1000x smaller! Pandas+Numpy ~ 120MB; `lontras` ~ 102KB!**\n- **\u23f1\ufe0f Loads 20x faster! Pandas ~ 400ms; `lontras` ~ 20ms!** <small>[test script](tools/repo-info.sh)</small>\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Documentation](#documentation)\n- [Core Functionalities](#core-functionalities)\n- [License](#license)\n\n## Installation\n\nIf you prefer to install lontras using pip for easy management and updates, you can do so with the\nfollowing command:\n\n```console\npip install lontras\n# or\nuv pip install lontras\n```\n\nThis will download and install lontras from the Python Package Index (PyPI).\n\nFor lightweight projects where you want to avoid external dependencies, you can simply copy the\nsource file [src/lontras/lontras.py](src/lontras/lontras.py) into your project directory. This\nallows you to directly use the library functions from your code without any installation.\n\n## Documentation\n\nCheck out the [API Docs](https://lontras.readthedocs.io/en/latest/).\n\n## Core Functionalities:\n\nLontras prioritizes simplicity and minimal dependencies. It leverages Python's native dictionaries\n(via [UserDict](https://docs.python.org/3/library/collections.html#collections.UserDict)) to offer\ncore `DataFrame` and `Series` functionalities without external libraries.\n\n### Data Structures:\n\n- `Series`: A one-dimensional array-like structure.\n- `DataFrame`: A two-dimensional labeled data structure.\n\n### Accessing Data:\n\n- `loc` and `iloc`: Access data by label or by index.\n- Label-based access: Access data using standard dictionary-like syntax (e.g., series['label']).\n- Positional access (slicing): Use slices for location-based access (e.g., series[1:3]).\n- Attribute-based access: For convenient access to all values for a given key, use attribute-based access using **getattr** that dynamically retrieves data based on provided keys or a list of keys.\n\n### Modifying Data:\n\n- Setting values: Modify existing values or add new entries using `loc` or `iloc` assignment (e.g., series.loc['label'] = value).\n- Deleting values: Remove entries using del series['label'].\n- Concatenation: Combine Series or DataFrames vertically or horizontally.\n\n### Transforming Data:\n\n- Mapping and applying functions: Apply functions element-wise using map or along axes/indices using apply.\n- Sorting: Sort indexes and values using provided sorting functions.\n- Basic operations: Use standard Python operators (+, -, \\*, /, //, %, \\*\\*, comparisons) for element-wise operations.\n\n### Data Aggregation and Combination:\n\n- groupby: Group data based on a column and perform operations within each group (similar to pandas groupby).\n- Join/Merge: Merge two DataFrames based on specific columns (similar to pandas join/merge operations).\n- reduce: Apply a function cumulatively to the elements. Basic reduction functions like max, min, argmax, sum, etc.\n- Leverages Python's built-in statistics module for basic statistical calculations.\n\n### Limitations & Trade-offs: (Same as before)\n\n- No `dtype`! You ask for a sum, `lontras` will try to sum and may raise an exception if an unexpcted value is found.\n- Specialized Data Handling: Lontras focuses on core functionalities and doesn't include specialized functions for datetime, strings, or categorical data. However, users can achieve similar behavior through apply and map functions.\n- Statistical Functions: Limited set of statistical functions. Lontras relies primarily on Python's built-in statistics module.\n- Data Import/Export: Supports limited import/export formats. External libraries might be necessary for complex file handling.\n- Missing Data Handling: Doesn't include dedicated functions for handling missing data. Users can implement their own logic using conditional statements or filtering.\n- Multilevel Indexing: Lacks built-in support for multilevel indexing. However, tuple indexes can be used to achieve similar hierarchical structures.\n- Plotting: Currently doesn't include plotting functionalities. External plotting libraries are recommended for visualization.\n\n## License\n\n`lontras` is distributed under the terms of the [MIT](https://spdx.org/licenses/MIT.html) license.\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A lightweight, dictionary-based DataFrame implementation in pure Python. Designed for simplicity and ease of use. Perfect for small projects or when a full-fledged DataFrame library is overkill.",
    "version": "0.0.2",
    "project_urls": {
        "Documentation": "https://github.com/Luiz Eduardo Amaral/lontras#readme",
        "Issues": "https://github.com/Luiz Eduardo Amaral/lontras/issues",
        "Source": "https://github.com/Luiz Eduardo Amaral/lontras"
    },
    "split_keywords": [
        "dataframe"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "9b5f14a8aa2f255eff498305c6c0a0b2fe4adb1fc40ad71df1014a0680cdba44",
                "md5": "c7fb961e6fe87a22ff99d1769ae15269",
                "sha256": "ce4af01cc48371282dae520dbd2b8bec98e46ce3131aaa668adb8eaa0a561131"
            },
            "downloads": -1,
            "filename": "lontras-0.0.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "c7fb961e6fe87a22ff99d1769ae15269",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 14257,
            "upload_time": "2025-01-25T17:18:15",
            "upload_time_iso_8601": "2025-01-25T17:18:15.881618Z",
            "url": "https://files.pythonhosted.org/packages/9b/5f/14a8aa2f255eff498305c6c0a0b2fe4adb1fc40ad71df1014a0680cdba44/lontras-0.0.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "91353787a28ce135edbdcf34937619411f5036ce596279c85c63bef1695fa61f",
                "md5": "6b7c77458fa15950ba9f171e6e7b1d2a",
                "sha256": "acfe318a0139a44ecbed3ceb27b76de24669fe01368ade4bf9e836ca28a2f4e7"
            },
            "downloads": -1,
            "filename": "lontras-0.0.2.tar.gz",
            "has_sig": false,
            "md5_digest": "6b7c77458fa15950ba9f171e6e7b1d2a",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 379149,
            "upload_time": "2025-01-25T17:18:17",
            "upload_time_iso_8601": "2025-01-25T17:18:17.938687Z",
            "url": "https://files.pythonhosted.org/packages/91/35/3787a28ce135edbdcf34937619411f5036ce596279c85c63bef1695fa61f/lontras-0.0.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-01-25 17:18:17",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "Luiz Eduardo Amaral",
    "github_project": "lontras#readme",
    "github_not_found": true,
    "lcname": "lontras"
}
        
Elapsed time: 1.43833s