Metadata-Version: 2.1 Name: DataProperty Version: 1.1.0 Summary: Python library for extract property from data. Home-page: https://github.com/thombashi/DataProperty Author: Tsuyoshi Hombashi Author-email: tsuyoshi.hombashi@gmail.com Maintainer: Tsuyoshi Hombashi Maintainer-email: tsuyoshi.hombashi@gmail.com License: MIT License Project-URL: Changelog, https://github.com/thombashi/DataProperty/releases Project-URL: Source, https://github.com/thombashi/DataProperty Project-URL: Tracker, https://github.com/thombashi/DataProperty/issues Keywords: data,library,property Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Developers Classifier: Intended Audience :: Information Technology Classifier: License :: OSI Approved :: MIT License Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 Classifier: Programming Language :: Python :: 3.13 Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy Classifier: Topic :: Software Development :: Libraries Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Typing :: Typed Requires-Python: >=3.9 Description-Content-Type: text/x-rst License-File: LICENSE Requires-Dist: mbstrdecoder<2,>=1.0.0 Requires-Dist: typepy[datetime]<2,>=1.3.2 Provides-Extra: logging Requires-Dist: loguru<1,>=0.4.1; extra == "logging" Provides-Extra: test Requires-Dist: pytest>=6.0.1; extra == "test" Requires-Dist: pytest-md-report>=0.6.2; extra == "test" Requires-Dist: tcolorpy>=0.1.2; extra == "test" .. contents:: **DataProperty** :backlinks: top :local: Summary ======= A Python library for extract property from data. .. image:: https://badge.fury.io/py/DataProperty.svg :target: https://badge.fury.io/py/DataProperty :alt: PyPI package version .. image:: https://anaconda.org/conda-forge/DataProperty/badges/version.svg :target: https://anaconda.org/conda-forge/DataProperty :alt: conda-forge package version .. image:: https://img.shields.io/pypi/pyversions/DataProperty.svg :target: https://pypi.org/project/DataProperty :alt: Supported Python versions .. image:: https://img.shields.io/pypi/implementation/DataProperty.svg :target: https://pypi.org/project/DataProperty :alt: Supported Python implementations .. image:: https://github.com/thombashi/DataProperty/actions/workflows/ci.yml/badge.svg :target: https://github.com/thombashi/DataProperty/actions/workflows/ci.yml :alt: CI status of Linux/macOS/Windows .. image:: https://coveralls.io/repos/github/thombashi/DataProperty/badge.svg?branch=master :target: https://coveralls.io/github/thombashi/DataProperty?branch=master :alt: Test coverage .. image:: https://github.com/thombashi/DataProperty/actions/workflows/github-code-scanning/codeql/badge.svg :target: https://github.com/thombashi/DataProperty/actions/workflows/github-code-scanning/codeql :alt: CodeQL Installation ============ Installation: pip ------------------------------ :: pip install DataProperty Installation: conda ------------------------------ :: conda install -c conda-forge dataproperty Installation: apt ------------------------------ :: sudo add-apt-repository ppa:thombashi/ppa sudo apt update sudo apt install python3-dataproperty Usage ===== Extract property of data ------------------------ e.g. Extract a ``float`` value property ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python >>> from dataproperty import DataProperty >>> DataProperty(-1.1) data=-1.1, type=REAL_NUMBER, align=right, ascii_width=4, int_digits=1, decimal_places=1, extra_len=1 e.g. Extract a ``int`` value property ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python >>> from dataproperty import DataProperty >>> DataProperty(123456789) data=123456789, type=INTEGER, align=right, ascii_width=9, int_digits=9, decimal_places=0, extra_len=0 e.g. Extract a ``str`` (ascii) value property ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python >>> from dataproperty import DataProperty >>> DataProperty("sample string") data=sample string, type=STRING, align=left, length=13, ascii_width=13, extra_len=0 e.g. Extract a ``str`` (multi-byte) value property ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python >>> from dataproperty import DataProperty >>> str(DataProperty("吾輩は猫である")) data=吾輩は猫である, type=STRING, align=left, length=7, ascii_width=14, extra_len=0 e.g. Extract a time (``datetime``) value property ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python >>> import datetime >>> from dataproperty import DataProperty >>> DataProperty(datetime.datetime(2017, 1, 1, 0, 0, 0)) data=2017-01-01 00:00:00, type=DATETIME, align=left, ascii_width=19, extra_len=0 e.g. Extract a ``bool`` value property ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python >>> from dataproperty import DataProperty >>> DataProperty(True) data=True, type=BOOL, align=left, ascii_width=4, extra_len=0 Extract data property for each element from a matrix ---------------------------------------------------- ``DataPropertyExtractor.to_dp_matrix`` method returns a matrix of ``DataProperty`` instances from a data matrix. An example data set and the result are as follows: :Sample Code: .. code:: python import datetime from dataproperty import DataPropertyExtractor dp_extractor = DataPropertyExtractor() dt = datetime.datetime(2017, 1, 1, 0, 0, 0) inf = float("inf") nan = float("nan") dp_matrix = dp_extractor.to_dp_matrix([ [1, 1.1, "aa", 1, 1, True, inf, nan, dt], [2, 2.2, "bbb", 2.2, 2.2, False, "inf", "nan", dt], [3, 3.33, "cccc", -3, "ccc", "true", inf, "NAN", "2017-01-01T01:23:45+0900"], ]) for row, dp_list in enumerate(dp_matrix): for col, dp in enumerate(dp_list): print("row={:d}, col={:d}, {}".format(row, col, str(dp))) :Output: :: row=0, col=0, data=1, type=INTEGER, align=right, ascii_width=1, int_digits=1, decimal_places=0, extra_len=0 row=0, col=1, data=1.1, type=REAL_NUMBER, align=right, ascii_width=3, int_digits=1, decimal_places=1, extra_len=0 row=0, col=2, data=aa, type=STRING, align=left, ascii_width=2, length=2, extra_len=0 row=0, col=3, data=1, type=INTEGER, align=right, ascii_width=1, int_digits=1, decimal_places=0, extra_len=0 row=0, col=4, data=1, type=INTEGER, align=right, ascii_width=1, int_digits=1, decimal_places=0, extra_len=0 row=0, col=5, data=True, type=BOOL, align=left, ascii_width=4, extra_len=0 row=0, col=6, data=Infinity, type=INFINITY, align=left, ascii_width=8, extra_len=0 row=0, col=7, data=NaN, type=NAN, align=left, ascii_width=3, extra_len=0 row=0, col=8, data=2017-01-01 00:00:00, type=DATETIME, align=left, ascii_width=19, extra_len=0 row=1, col=0, data=2, type=INTEGER, align=right, ascii_width=1, int_digits=1, decimal_places=0, extra_len=0 row=1, col=1, data=2.2, type=REAL_NUMBER, align=right, ascii_width=3, int_digits=1, decimal_places=1, extra_len=0 row=1, col=2, data=bbb, type=STRING, align=left, ascii_width=3, length=3, extra_len=0 row=1, col=3, data=2.2, type=REAL_NUMBER, align=right, ascii_width=3, int_digits=1, decimal_places=1, extra_len=0 row=1, col=4, data=2.2, type=REAL_NUMBER, align=right, ascii_width=3, int_digits=1, decimal_places=1, extra_len=0 row=1, col=5, data=False, type=BOOL, align=left, ascii_width=5, extra_len=0 row=1, col=6, data=Infinity, type=INFINITY, align=left, ascii_width=8, extra_len=0 row=1, col=7, data=NaN, type=NAN, align=left, ascii_width=3, extra_len=0 row=1, col=8, data=2017-01-01 00:00:00, type=DATETIME, align=left, ascii_width=19, extra_len=0 row=2, col=0, data=3, type=INTEGER, align=right, ascii_width=1, int_digits=1, decimal_places=0, extra_len=0 row=2, col=1, data=3.33, type=REAL_NUMBER, align=right, ascii_width=4, int_digits=1, decimal_places=2, extra_len=0 row=2, col=2, data=cccc, type=STRING, align=left, ascii_width=4, length=4, extra_len=0 row=2, col=3, data=-3, type=INTEGER, align=right, ascii_width=2, int_digits=1, decimal_places=0, extra_len=1 row=2, col=4, data=ccc, type=STRING, align=left, ascii_width=3, length=3, extra_len=0 row=2, col=5, data=True, type=BOOL, align=left, ascii_width=4, extra_len=0 row=2, col=6, data=Infinity, type=INFINITY, align=left, ascii_width=8, extra_len=0 row=2, col=7, data=NaN, type=NAN, align=left, ascii_width=3, extra_len=0 row=2, col=8, data=2017-01-01T01:23:45+0900, type=STRING, align=left, ascii_width=24, length=24, extra_len=0 Full example source code can be found at *examples/py/to_dp_matrix.py* Extract properties for each column from a matrix ------------------------------------------------------ ``DataPropertyExtractor.to_column_dp_list`` method returns a list of ``DataProperty`` instances from a data matrix. The list represents the properties for each column. An example data set and the result are as follows: Example data set and result are as follows: :Sample Code: .. code:: python import datetime from dataproperty import DataPropertyExtractor dp_extractor = DataPropertyExtractor() dt = datetime.datetime(2017, 1, 1, 0, 0, 0) inf = float("inf") nan = float("nan") data_matrix = [ [1, 1.1, "aa", 1, 1, True, inf, nan, dt], [2, 2.2, "bbb", 2.2, 2.2, False, "inf", "nan", dt], [3, 3.33, "cccc", -3, "ccc", "true", inf, "NAN", "2017-01-01T01:23:45+0900"], ] dp_extractor.headers = ["int", "float", "str", "num", "mix", "bool", "inf", "nan", "time"] col_dp_list = dp_extractor.to_column_dp_list(dp_extractor.to_dp_matrix(dp_matrix)) for col_idx, col_dp in enumerate(col_dp_list): print(str(col_dp)) :Output: :: column=0, type=INTEGER, align=right, ascii_width=3, bit_len=2, int_digits=1, decimal_places=0 column=1, type=REAL_NUMBER, align=right, ascii_width=5, int_digits=1, decimal_places=(min=1, max=2) column=2, type=STRING, align=left, ascii_width=4 column=3, type=REAL_NUMBER, align=right, ascii_width=4, int_digits=1, decimal_places=(min=0, max=1), extra_len=(min=0, max=1) column=4, type=STRING, align=left, ascii_width=3, int_digits=1, decimal_places=(min=0, max=1) column=5, type=BOOL, align=left, ascii_width=5 column=6, type=INFINITY, align=left, ascii_width=8 column=7, type=NAN, align=left, ascii_width=3 column=8, type=STRING, align=left, ascii_width=24 Full example source code can be found at *examples/py/to_column_dp_list.py* Dependencies ============ - Python 3.9+ - `Python package dependencies (automatically installed) `__ Optional dependencies --------------------- - `loguru `__ - Used for logging if the package installed