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,xmllines_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)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| pandas_shredder-0.0.3.tar.gz | 9.7 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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.