Pandas-sql-loader
Модуль, реализующий функцию sql_load, которая копирует функционал
функции pandas.read_sql(), но оптимизирует потребление памяти.
Пытается проставить минимально возможный тип данных для каждого столбца.
(float64 -> float16, int64 -> uint8 и т.д)
Интерфейс метода полностью совместим с pandas.read_sql(), однако присутствуют дополнительные опциональные параметры.
sql_load interface
sql_load(sql,
con,
index_col=None,
coerce_float=True,
params=None,
parse_dates=None,
columns=None,
chunksize=None,
need_downcast=False,
column_types=None,
iterator=True)
Все стандартные параметры есть в документации, опишу только новые и chunksize:
chunksize: int, default None
Если задан, то:
- если iterator=True, тогда вернет вернет итератор
- если iterator=False, тогда чанками загрузит датафреймы, объединит их в один и вернет его как результат.
need_downcast: bool, default False
Флаг, устанавливающий нужна оптимизация памяти или нет.
column_types: list, default None
Список numpy типов, к которым нужно привести столбцы.
Если в столбце есть значение, превыщающее заданный тип, то тип будет проигнорирован.
Если длина списка меньше, чем кол-во столбцов, то список будет автоматически
расширен типами uint8.
Если не задан, то каждый столбец попытается привести к uint8.
На самом дел довольно бесполезная штука. Изначально думал, что даункаст будет сильно медленнее стандартного метода, но на деле плюс минус одинаково. Возможно, в следующих версиях будет приводить к данным типам насильно?
iterator: bool, default True
Флаг, устанавливающий должен ли вернуться итератор или уже собранный из чанков DataFrame при установленном chunksize.
Рекомендация
Для датасетов, размер которых в полтора раза меньше чем доступная память и более, настоятельно рекомендуется использовать загрузку чанками, тк прежде чем сдаункастить типы, в память будет загружен DataFrame средствами самого пандас (т.е. с жирными типами)
Пример
Чтобы получить готовый оптимизированный DataFrame, но загруженный чанками:
from pd_sql_loader import sql_load
df = sql_load(query, con, chunksize=10000, need_downcast=True, iterator=False)
Metadata
Release files for pd-sql-loader 1.4.2
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 | Actions |
|---|---|---|---|---|
| pd_sql_loader-1.4.2.tar.gz | 10.6 kB | Without provenance | Details for pd_sql_loader-1.4.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| pd_sql_loader-1.4.2-py3-none-any.whl | Python 3 | none | any | Details for pd_sql_loader-1.4.2-py3-none-any.whl |
Total release size: 25.6 kB
Release files / pd_sql_loader-1.4.2.tar.gz
| Download URL | pd_sql_loader-1.4.2.tar.gz |
|---|---|
| Size | 10.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cf92cb1bc0a58cafbb46c465a1beea16c00ab2df4f059e0a0c2fdc7ac6423b95
|
|
BLAKE2b-256 checksum How to use checksums |
d2453fde0e6010cd3f332c6ec83b35c4394f1d06b6d8a0ff7f8faf24aeff1e52
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.1 requests-toolbelt/0.9.1 tqdm/4.39.0 CPython/3.7.5
|
Release files / pd_sql_loader-1.4.2-py3-none-any.whl
| Download URL | pd_sql_loader-1.4.2-py3-none-any.whl |
|---|---|
| Size | 15.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
614ff9ded6e165d0e24a8f929da66e1ce0ea0f3c102a874beeee56ec0cf44503
|
|
BLAKE2b-256 checksum How to use checksums |
0f18f7193c2b612fbe0ad7a2c2459dd8ead691bc7dcd185026b9318ad1a7af4d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.1 requests-toolbelt/0.9.1 tqdm/4.39.0 CPython/3.7.5
|
Security for pd-sql-loader 1.4.2
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.
To learn more about protecting yourself from malicious actors, visit our package security documentation.