Skip to main content

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

Если задан, то:

  1. если iterator=True, тогда вернет вернет итератор
  2. если 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)

Source distribution for pd-sql-loader 1.4.2
File Size Uploaded
pd_sql_loader-1.4.2.tar.gz 10.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pd-sql-loader 1.4.2
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

1.4.2 This release

2 release files

1.4.1

2 release files

1.4

2 release files

1.3.6

2 release files

1.3.5

2 release files

1.3.4

2 release files

1.3.3

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3

1 release file

1.2

1 release file

1.1

1 release file

1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page