Измельчитель для 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,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 строк
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cd93a552966df98dd40ae6c66d705c6b0a54e963f8fe22ed51f7d8e0a600064c
|
|
| MD5 |
3bfbf207336bb7efcb17ab726e72c7bc
|
|
| BLAKE2b-256 |
c08918cfef6532d55d128c523e624d41d36446dcd571ebe7e9e885a0ccfb25c6
|
File details
Details for the file pandas_shredder-0.0.3-py3-none-any.whl.
File metadata
- Download URL: pandas_shredder-0.0.3-py3-none-any.whl
- Upload date:
- Size: 9.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
03c9d424bbea40bf27ab3c4502e4dade39496c53737b423a237135d205776ffe
|
|
| MD5 |
5db42dfaf4b78ba3f2df7af6e52e217c
|
|
| BLAKE2b-256 |
44ddc3092a5978fb707df89a05d0220d705997e023d8aa6afa050d408769eddb
|