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)
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 | |
|---|---|---|---|
| pd_sql_loader-1.4.2.tar.gz | 10.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pd_sql_loader-1.4.2-py3-none-any.whl | Python 3 | none | any | Details |
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
|