Skip to main content

pandas-shredder

Пакет, предоставляющий интерфейс для нарезки Pandas.DataFrame на отдельные файлы с заданным количеством строк в каждом из них.

Оглавление

Установка

Выполните в терминале команду:

pip install pandas-shredder

В вашем коде выполните импорт:

from pandas_shredder import Shredder

Ссылка на пакет pandas-shredder в PyPI

Пример использования

import pandas as pd
from pandas_shredder import Shredder

# Считываем большой файл формата CSV
df = pd.read_csv("C:\\Documents\\big_data.csv")

# Настраиваем измельчитель на сохранение xslx файлов по 500 000 строк в каталог C:\\Documents\\big_data.csv
shredder = Shredder(
    directory="C:\\Documents\\result",
    extension="xlsx",
    lines_per_serving=500_000
)
# Нарезаем большой файл на файлы по 500 000 строк с именем по маске {номер}_small_data.xlsx в каталог C:\\Documents\\result
# Исключаем из результата столбец с индексами pandas, исключаем строку с заголовком, присваиваем листу имя data
shredder.run(
    dataframe=df,
    file_name="small_data",
    index=False,
    header=False,
    sheet_name="data"
)

Пример использования с пояснениями

Предположим у вас есть файл big_data.csv на 7 000 000 строк, расположенный в C:\Documents.
И у вас существует потребность сделать из него несколько файлов формата xlsx на 500 000 строк каждый.

Shredder поможет Вам реализовать эту задумку в несколько строк кода.

Создайте DataFrame на основе данных из вашего файла C:\Documents\big_data.csv

import pandas as pd

df = pd.read_csv("C:\\Documents\\big_data.csv")

Импортируйте Shredder из пакета pandas-shredder и инициализируйте его экзмепляр.

from pandas_shredder import Shredder

shredder = Shredder(
    directory="C:\\Documents\\result",
    extension="xlsx",
    lines_per_serving=500_000
)
  • directory - путь к каталогу, в который будут сохранены выходные файлы.
  • extension - расширение / формат выходных файлов. Доступно: xlsx, csv, json, html, xml
  • lines_per_serving - максимальное количество строк в одном выходном файле.

Запустите измельчитель вызовом метода run(), передав в него набор данных и имя для выходных файлов.

shredder.run(
    dataframe=df,
    file_name="small_data"
)
  • dataframe - экземпляр pandas.DataFrame, который нарезается на файлы заданного размера
  • filename - имя, для файлов с результатом. К имени каждого файла будет добавлен префикс с номером файла.
  • **kwarg - опционально. Произвольные именованные аргументы, которые поддерживаются методами DataFrame: to_excel(), to_csv(), to_html(), to_xml(), to_json(). Набор доступных аргументов зависит от выбранного на этапе инициализации экземпляра Shredder значения в свойстве extension.

В результате выполнения кода, в каталоге C:\Documents\result вас будут ожидать файлы:

  • 1_small_data.xlsx
  • 2_small_data.xlsx
  • 3_small_data.xlsx
  • ...

Для сохранения данных в файлы, используются стандартные методы pandas. Вы можете сконфигурировать процесс сохранения через именованные аргументы переданные в run() вместо **kwargs.
Например:

shredder.run(
    dataframe=df,
    file_name="small_data",
    index=False,
    header=False,
    sheet_name="data"
)

Возможные именованные аргументы зависят от выбранного в extension расширения. Ознакомьтесь с таблицей ниже, что бы узнать больше.

extension pandas method
csv to_csv()
xlsx to_excel()
html to_html()
json to_json()
xml to_xml()

Возможные исключения

UnsupportedFileFormatError

Будет брошено в ситуации, когда указанное в extension значение не является одним из: xlsx, csv, json, html, xml

    raise UnsupportedFileFormatError(value, self.allowed_formats)
pandas_shredder.component.error.UnsupportedFileFormatError: Не поддерживаемый формат файла «txt»! Доступные варианты: «xlsx», «csv», «json», «xml», «html»

DirectoryDoesNotExistError

Будет брошено в ситуации, когда указанное в directory значение не является существующим в системе каталогом (папкой).

    raise DirectoryDoesNotExistError(value)
pandas_shredder.component.error.DirectoryDoesNotExistError: Путь «C:\result» не существует или не является директорией!

NegativeNumberOfRowsError

Будет брошено в ситуации, когда указанное в lines_per_serving значение меньше или равно 0.

    raise NegativeNumberOfRowsError(value)
pandas_shredder.component.error.NegativeNumberOfRowsError: Количество строк не может быть отрицательным или равно 0. Задано значение -10

LineLimitHasBeenExceededError

Будет брошено в ситуации, когда количество строк в dataframe меньше значения, заданного в lines_per_serving.

    raise LineLimitHasBeenExceededError(lines_per_serving, dataframe_length)
pandas_shredder.component.error.LineLimitHasBeenExceededError: Количество строк в выходном файле не может быть больше количества строк в исходном наборе данных. Был задан размер 1000 строк, в наборе данных 573 строк

Metadata

Release files for pandas-shredder 0.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pandas-shredder 0.0.3
File Size Uploaded Provenance
pandas_shredder-0.0.3.tar.gz 9.7 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for pandas-shredder 0.0.3
File Interpreter ABI Platform
pandas_shredder-0.0.3-py3-none-any.whl Python 3 none any Details

Total release size: 19.2 kB

Release files / pandas_shredder-0.0.3.tar.gz

Download URL pandas_shredder-0.0.3.tar.gz
Size 9.7 kB
Tags Source
SHA-256 checksum
How to use checksums
cd93a552966df98dd40ae6c66d705c6b0a54e963f8fe22ed51f7d8e0a600064c
BLAKE2b-256 checksum
How to use checksums
c08918cfef6532d55d128c523e624d41d36446dcd571ebe7e9e885a0ccfb25c6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.11.9

Release files / pandas_shredder-0.0.3-py3-none-any.whl

Download URL pandas_shredder-0.0.3-py3-none-any.whl
Size 9.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
03c9d424bbea40bf27ab3c4502e4dade39496c53737b423a237135d205776ffe
BLAKE2b-256 checksum
How to use checksums
44ddc3092a5978fb707df89a05d0220d705997e023d8aa6afa050d408769eddb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.11.9

Security for pandas-shredder 0.0.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page