Name | lontras JSON |
Version |
0.0.2
JSON |
| download |
home_page | None |
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. |
upload_time | 2025-01-25 17:18:17 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.8 |
license | None |
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"/>
[](https://pypi.org/project/lontras)
[](https://pypi.org/project/lontras)
[](https://opensource.org/license/mit)

[](https://results.pre-commit.ci/latest/github/luxedo/lontras/main)


---
> ### ⚠️ 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[](https://pypi.org/project/lontras)\n[](https://pypi.org/project/lontras)\n[](https://opensource.org/license/mit)\n\n[](https://results.pre-commit.ci/latest/github/luxedo/lontras/main)\n\n\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"
}