Coder Social home page Coder Social logo

vavtools's Introduction

vavtools

vavtools это универсальная библиотека для решения базовых повседневных задач в аналитических командах. Среди основных функций данного пакета, можно обнаружить генерацию SQL запросов к ClickHouse, загрузка данных в S3 облако, параллелизацию apply функций для Pandas, перенос DataFrames с длиной более 1 млн. в xlsx файлы с разбиением на листы, базовая и продвинутая текстовые обработки регулярными вражениями.

⚠ Библиотека совсем свежая и может часто изменяться. Поэтому советуем чаще следить за апдейтами и обновлять версию. Параллелизация на MacOS может приводить к зависаниям (не проверялось на ARM M1-2. процессорах).

Install

vavtools поддерживает Python 3.7+ и может быть развернута на Linux, MacOS и Windows без ограничений функционала:

$ pip install vavtools

Usage

Предобработка

Депунктизация

>>> from vavtools import vavtools as vav
  
>>> text = 'Если вам нужен образ будущего, вообразите сапог, топчущий лицо человека – вечно.'

>>> new_text = vav.de_punc(text)

'Если вам нужен образ будущего вообразите сапог топчущий лицо человека вечно'

Дедиджитализация

>>> text = 'Свобода – это возможность сказать, что 2x2=4. Если дозволено это, все остальное отсюда следует.'

>>> new_text = vav.de_digit(text)

'Свобода – это возможность сказать, что x=. Если дозволено это, все остальное отсюда следует.'

Извлечение весовых/количественных характеристик из колонки DataFrame.

Предположим, необходимо достать вес, объем или кол-во штук из названия товара, для этого достаточно вызватьследующую функцию:

>>> df = vav.val_extractor(df=df, text_column='SKU_NAME', var_type='weight') # добавит к изначальному фрейму колонку с весом в гр.

>>> df = vav.val_extractor(df=df, text_column='SKU_NAME', var_type='volume') # добавит к изначальному фрейму колонку с объемом в мл.

>>> df = vav.val_extractor(df=df, text_column='SKU_NAME', var_type='pieces') # добавит к изначальному фрейму колонку с кол-вом штук

Где df - DataFrame, text_column - название колонки из которой будет происходить извлечение, var_type - тип размера, который будет извлекаться (weight, volume, pieces)

Запросы к ClickHouse

Запросы осуществляются с помощью встроенной библиотеки requests.

>>> query = 'SELECT TOP 10 * FROM dict.global_categories'
>>> column_names = ['id','category_name']
>>> ch_user_name = '' # ваш username для подключения к CH
>>> ch_pwd = '' # ваш пароль для подключения к CH
>>> ch_driver_path = '/home/user/...' # путьк сертификату 

>>> df = vav.get_data(query, column_names, ch_user_name, ch_pwd, ch_driver_path)

На выходе выдается DataFrame с данными или сообщение об ошибке.

Загрузка в yandexcloud S3

>>> file2upload = '1984.txt'
>>> s3_key_id = '' # id ключа от S3
>>> s3_key = '' # сам ключ от S3
>>> bucket = '' # имя бакета в S3
>>> s3_directory = '' # имя директории в бакете S3

>>> vav.s3_upload(file2upload, s3_key_id, s3_key, bucket, s3_directory)

Параллелизация

Ускоряет вызовы apply пропорционально кол-ву ядер процессора

>>> def async_preprocessing(data):
        data['name'] = data.apply(lambda x: de_punc(x['name']), axis = 1)
        data['name'] = data.apply(lambda x: de_digit(x['name']), axis = 1)
        return data
        
>>> data = vav.parallelize_dataframe(data, async_preprocessing)  

Сохранение больших DataFrames в XLSX формат

>>> file_name = 'huge_report.xlsx'
>>> vav.excel_saver(df, file_name, BS = 1e+6)

Где BS (Batch Size) - кол-во заполненных строк на одном листе Excel (максимум 1 млн.)

Утилиты

Доля пропущенных значений в DataFrame по колонкам.

>>> vav.get_nan_ratio(df)

Возвращает DataFrame вида ColumnName | NAN-Ratio, отсортированный по убыванию доли пропусков

Поиск определннных файлов в директории.

>>> vav.files_search(director='data/years', extention='.csv')

Вернет списоквсех файлов, в казоной директории с указанным расширением

Время отработки функции (Декоратор).

>>> @vav.execution_time
>>> def test_func(n):
      for i in range(n):
        n+=i**2
    return n

>>> test_func(10**7)
Process time: 0.0 min, 3 sec

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.