Skip to main content

Измельчитель для Pandas DataFrame. Позволяет нарезать набор данных на файлы с фиксированным количеством строк

Project description

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 строк

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

pandas_shredder-0.0.3.tar.gz (9.7 kB view details)

Uploaded Source

Built Distribution

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

pandas_shredder-0.0.3-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

File details

Details for the file pandas_shredder-0.0.3.tar.gz.

File metadata

  • Download URL: pandas_shredder-0.0.3.tar.gz
  • Upload date:
  • Size: 9.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.11.9

File hashes

Hashes for pandas_shredder-0.0.3.tar.gz
Algorithm Hash digest
SHA256 cd93a552966df98dd40ae6c66d705c6b0a54e963f8fe22ed51f7d8e0a600064c
MD5 3bfbf207336bb7efcb17ab726e72c7bc
BLAKE2b-256 c08918cfef6532d55d128c523e624d41d36446dcd571ebe7e9e885a0ccfb25c6

See more details on using hashes here.

File details

Details for the file pandas_shredder-0.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for pandas_shredder-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 03c9d424bbea40bf27ab3c4502e4dade39496c53737b423a237135d205776ffe
MD5 5db42dfaf4b78ba3f2df7af6e52e217c
BLAKE2b-256 44ddc3092a5978fb707df89a05d0220d705997e023d8aa6afa050d408769eddb

See more details on using hashes here.

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