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)

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pd_sql_loader-1.4.2.tar.gz (10.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pd_sql_loader-1.4.2-py3-none-any.whl (15.0 kB view details)

Uploaded Python 3

File details

Details for the file pd_sql_loader-1.4.2.tar.gz.

File metadata

  • Download URL: pd_sql_loader-1.4.2.tar.gz
  • Upload date:
  • Size: 10.6 kB
  • Tags: Source
  • Uploaded using 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

File hashes

Hashes for pd_sql_loader-1.4.2.tar.gz
Algorithm Hash digest
SHA256 cf92cb1bc0a58cafbb46c465a1beea16c00ab2df4f059e0a0c2fdc7ac6423b95
MD5 9086d741e8202f0782fd2811139f7bce
BLAKE2b-256 d2453fde0e6010cd3f332c6ec83b35c4394f1d06b6d8a0ff7f8faf24aeff1e52

See more details on using hashes here.

File details

Details for the file pd_sql_loader-1.4.2-py3-none-any.whl.

File metadata

  • Download URL: pd_sql_loader-1.4.2-py3-none-any.whl
  • Upload date:
  • Size: 15.0 kB
  • Tags: Python 3
  • Uploaded using 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

File hashes

Hashes for pd_sql_loader-1.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 614ff9ded6e165d0e24a8f929da66e1ce0ea0f3c102a874beeee56ec0cf44503
MD5 c2c1efafeb811a5dacfb06f9686711e7
BLAKE2b-256 0f18f7193c2b612fbe0ad7a2c2459dd8ead691bc7dcd185026b9318ad1a7af4d

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.4.2 This release

2 files

1.4.1

2 files

1.4

2 files

1.3.6

2 files

1.3.5

2 files

1.3.4

2 files

1.3.3

2 files

1.3.2

2 files

1.3.1

2 files

1.3

1 file

1.2

1 file

1.1

1 file

1.0

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page