Skip to main content

Библиотека для работы с табличными данными

Project description

library-for-laba

Библиотека для работы с табличными данными: создание таблиц, типизация столбцов, фильтрация и объединение, арифметика по столбцам, загрузка и сохранение в CSV, pickle и текстовом виде.

Автор: ММБ ДИРПО25-1с

Установка

После публикации на PyPI:

pip install library-for-laba

Локально из репозитория (из корня проекта):

pip install .

Требуется Python 3.10+.

Быстрый старт

from library_for_laba.table import Table
from library_for_laba import operations, arithmetic, csv_format

# Создание таблицы
table = Table(
    headers=["id", "name", "score"],
    rows=[
        [1, "Анна", 90],
        [2, "Борис", 85],
        [3, "Вера", 92],
    ],
    types={"id": int, "name": str, "score": int},
)

# Вывод в консоль
table.print_table()

Класс Table

Основной тип данных — Table с заголовками, строками и типами столбцов.

Поддерживаемые типы: int, float, bool, str, datetime (можно передать как тип Python или строкой: "int", "float", "bool", "str", "datetime").

from datetime import datetime

table = Table(
    headers=["date", "active", "value"],
    rows=[["2024-01-15", "да", "3.14"]],
    types={"date": datetime, "active": bool, "value": float},
)

Методы Table

Метод Описание
print_table(file=None) Печать таблицы в консоль или в файл
get_rows_by_number(start, stop=None, copy_table=False) Срез строк по номерам
get_rows_by_index(*vals, copy_table=False) Строки, где значение в первом столбце совпадает с переданными
get_column_types(by_number=True) Словарь типов столбцов
set_column_types(types_dict, by_number=True) Задать типы столбцов
get_values(column=0) Список значений столбца
get_value(column=0) Значение столбца (таблица из одной строки)
set_values(values, column=0) Записать список значений в столбец
set_value(value, column=0) Записать одно значение (одна строка)
copy() Глубокая копия
to_dict() / from_dict(d) Сериализация в словарь

Столбец можно указывать по индексу (0, 1, …) или по имени заголовка ("name").

Операции с таблицами

Модуль operations:

from library_for_laba import operations

# Объединить две таблицы с одинаковыми заголовками
merged = operations.concat(table1, table2)

# Разделить по номеру строки
left, right = operations.split(table, row_number=2)

# Фильтр по списку True/False
filtered = operations.filter_rows(table, [True, False, True])

# Слияние двух таблиц
result = operations.merge_tables(
    table1,
    table2,
    by_number=True,      # по номеру строки; False — по первому столбцу (индекс)
    fill_none=True,      # заполнять отсутствующие ячейки None
    on_conflict="left",  # "left", "right" или "raise"
)

Арифметика и сравнение

Модуль arithmetic — операции по столбцам (результат записывается в новый или указанный столбец):

from library_for_laba import arithmetic

arithmetic.add(table, "a", "b")           # a + b
arithmetic.sub(table, "a", "b")           # a - b
arithmetic.mul(table, "a", "b")           # a * b
arithmetic.div(table, "a", "b")           # a / b

# Сравнение — возвращает список bool по строкам
flags = arithmetic.gr(table, "score", 80)  # score > 80
flags = arithmetic.eq(table, "name", "Анна")

Доступны: eq, ne, gr, ls, ge, le.

Файлы

CSV

from library_for_laba import csv_format

# Загрузка (несколько файлов — склейка при одинаковых заголовках)
table = csv_format.load_table("data.csv", auto_types=True)

# Сохранение
csv_format.save_table("out.csv", table)

# Разбиение на части (data_part1.csv, data_part2.csv, …)
csv_format.save_table("data.csv", table, max_rows=1000)

Pickle

from library_for_laba import pickle_format

table = pickle_format.load_table("data.pkl", auto_types=True)
pickle_format.save_table("data.pkl", table)
pickle_format.save_table("data.pkl", table, max_rows=500)

Текстовая таблица (ASCII)

from library_for_laba import text_format

text_format.save_table("table.txt", table)

Автоопределение типов

from library_for_laba.type_detect import detect_column_types, apply_detected_types

types = detect_column_types(table)   # {0: int, 1: str, ...}
apply_detected_types(table)          # применить типы и преобразовать значения

Параметр auto_types=True в load_table для CSV и pickle делает то же самое при загрузке.

Исключения

Исключение Когда возникает
ColumnError Неверный столбец, разные заголовки
RowError Неверный индекс строки, пустая таблица
TableTypeError Неизвестный или несовместимый тип
TableValueError Значение не приводится к типу столбца
FileError Файл не найден, пустой файл
MergeError Ошибки при слиянии

Все наследуются от TableError (library_for_laba.exceptions).

Пример: полный цикл

from library_for_laba.table import Table
from library_for_laba import csv_format, arithmetic, operations

table = csv_format.load_table("students.csv", auto_types=True)

# Оставить только оценки выше 70
high = operations.filter_rows(
    table,
    arithmetic.gr(table, "score", 70),
    copy_table=True,
)

high.print_table()
csv_format.save_table("top_students.csv", high)

Лицензия

Учебный проект (лабораторная работа).

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

mmb_dirpo1c_tools-0.1.0.tar.gz (12.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mmb_dirpo1c_tools-0.1.0-py3-none-any.whl (13.4 kB view details)

Uploaded Python 3

File details

Details for the file mmb_dirpo1c_tools-0.1.0.tar.gz.

File metadata

  • Download URL: mmb_dirpo1c_tools-0.1.0.tar.gz
  • Upload date:
  • Size: 12.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mmb_dirpo1c_tools-0.1.0.tar.gz
Algorithm Hash digest
SHA256 eb132ce3e1811b48452da856474afffc2dd8da6679b65a5b9382e6d60da96b58
MD5 721eec7f8926d8c5151d3a0fcb2b239a
BLAKE2b-256 b497854c8ec9c26161479791b3d73281e998398b38c04717a6d0dd10d758080d

See more details on using hashes here.

Provenance

The following attestation bundles were made for mmb_dirpo1c_tools-0.1.0.tar.gz:

Publisher: publish.yml on Maks19OO/library-for-laba

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mmb_dirpo1c_tools-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for mmb_dirpo1c_tools-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0eac114d4eb68038a08dbb1de85fc8aabf399b750d998331f04978a71c977e38
MD5 d1f5e53fe4cd39326c8fceca12a8e658
BLAKE2b-256 0bfd78e79a625fde7d560572e796061cbf523c4c79b941c57cd2c433a2a466b1

See more details on using hashes here.

Provenance

The following attestation bundles were made for mmb_dirpo1c_tools-0.1.0-py3-none-any.whl:

Publisher: publish.yml on Maks19OO/library-for-laba

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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