excell-functions


License
BSD-3-Clause
Install
pip install excell-functions==0.6

Documentation

excell_functions

На данный момент библиотека находится в процессе разработки. Текущее состояние можно посмотреть здесь

О проекте

Excell_functions - библиотека, которая позволяет использовать привычный синтаксис функций MS Excell в работе с объектами DataFrame / Serias библиотеки pandas


Бэкграунд

Идея создания этой библиотеки родилась как шутка, из сравнения библиотеки pandas с Excell-ем (как средства работы с таблицами).

Я ❤️ Excell - и не стесняюсь в этом признаться.

Не так давно меня занесло на курс по анализу данных, где в качестве основного инструмента для изучения и работы с данными использовалась библиотека pandas, а также другие библиотеки и средства визуализации данных на python.

Когда я только начинал изучать pandas, мне всегда не хватало привычного функционала MS Excell.

Безусловно, аналог практически всего функционала Excell (и даже больше) есть в pandas, и может быть реализован либо с помощью собственных методов этой библиотеки, либо средствами базового python. Но поначалу синтаксис pandas был для меня не очень привычен, да и навыков базового программирования на python мне изрядно не хватало (честно говоря, я до сих пор продолжаю практически каждый день открывать в этой области все новые и новые грани).

Временами доходило до того, что вместо обработки данных с помощью pandas мне проще было выгрузить датафрейм в xls-файл и сделать некоторую предобработку, используя привычный функционал MS Excell.

Поразмыслив, я пришел к выводу что в утверждении "Пандас - это Ексель питона" есть зерно истины. Я решил, что создание библиотеки, которая позволяет использовать привычный синтаксис функций MS Excell в работе с объектами DataFrame / Serias библиотеки pandas, имеет некоторый смысл.

Есть несколько причин, по которым я решил написать эту библиотеку:

  • во-первых: я хотел немного прокачать навыки базового python на не слишком сложной, с точки зрения кода и требований к программированию, основе;
  • во-вторых: я подумал, что совсем не лишним будет освежить в памяти или открыть для себя новые, редко используемые функции MS Excell;
  • в-третьих: я только-только открыл для себя git и мне хотелось получить некоторый практический навык работы с ним, а также немного освоиться на github;
  • в-четвертых: я намеревался немного потренироваться с размещением кодовой базы в центральном репозитории python, чтобы иметь возможность свободно размещать и скачивать ее посредством pip.

К тому же (в-пятых?), я как раз осваивал новый для меня текстовый редактор с весьма необычной логикой набора текста vim, а также прокачивал навыки слепой печати в английской раскладке, и мне хотелось немного попрактиковаться в наборе кода на python.


Я надеюсь, что создание этой библиотеки будет полезно кому-нибудь, кто также как и я делает свои первые шаги в области машинного обучения или анализа данных, и не имея значительного опыта в программировании сможет опереться на язык аналогий между pandas и MS Excell, которые я попытался провести.

Установка

Первый способ - ручная установка из репозитория на github

Чтобы установить библиотеку с помощью git, перейдите в директорию, из которой Ваш python сможет подключить ее в качестве внешнего модуля и в режиме командной строки выполните команду:

git clone https://github.com/A1eksMa/excell_functions/

которая скопирует содержимое репозитория excell_functions.

Путь к директории с модулями может варьировать в зависимости от верссии Вашего python, настроек среды и установленной операционной системы. Как правило, пути поиска модулей указаны в переменной sys.path и могут быть изменены вручную, что позволяет расположить модуль в любом удобном для вас месте.

По умолчанию при попытке импортировать модуль, python будет пытаться определить его местоположение в папке вызова текущего скрипта или в системных папках, в которых установлен python.

Если Вы используете виртуальное окружение python (что предпочтительно), модуль должен располагаться в папке site-packages Вашего виртуального окружения.

Второй способ - автоматическая установка из центрального репозитория python

Второй способ установить библиотеку - загрузить ее из центрального репозитория python с помощью менеджера пакетов pip, используя команду:

pip install excell_functions

или, в некоторых случаях:

pip3 install excell_functions

Используйте эту команду с "!" в начале строки, если Вы запускаете ее из виртуального окружения python или Вашей любимой IDE (например, в jupyter notebook):

!pip install excell_functions

или, в некоторых случаях:

!pip3 install excell_functions

Данное действие достаточно совершить ОДНОКРАТНО (для скачивания и установки библиотеки и всех ее зависимостей).

Второй способ установки более прост, однако версия, размещенная в центральном репозитории может быть не самой актуальной и отличаться от текущего состояния проекта на github.

Зависимости

Значительная часть фунций библиотеки excell_functions написана на базовом python и не требует специальной установки каких-либо дополнительных модулей. Однако для корректной работы всех функций требуется наличие в Вашей среде разработки некоторых предустановленных модулей и библиотек. Их перечень содержится в файле requirements.txt в корневом каталоге проекта.

Ручная установка с помощью git предполагает, что все необходимые зависимости (такие как pandas, numpy и прочие) уже установлены в Вашей системе. Если нет - их придется установить вручную. Используйте стандартные методы установки и загрузки пакетов из центрального репозитория с помощью менеджера пакетов pip или pip3.

При автоматической установке библиотеки все требуемые зависимости будут загружены пакетным менеджером автоматически при первоначальной загрузке проекта.

Структура проекта

Каждая из категорий функций Ексель выделена в отдельный модуль (отдельный каталог в корневой директории проекта), что позволяет подгружать отдельные категории функций используя конструкцию:

from excell_functions import [categorie's name]

В корневой директории каждого модуля находятся:

  • файл __init__.py с кодом на python:

    • название модуля в первой строке (под комментарием),
    • название функции модуля в терминах MS Excell (под комментарием),
    • название функции python,
    • многострочный литерал с описанием ожидаемой работы функции,
    • код функции.

    В случае, если в данном месте кода написано

    pass

можете расценивать это как фразу:

    # "напишите Ваш код здесь!" ))).
  • файл [categorie's name].csv с перечнем функций и кратким описанием работы функции с официального сайта Майкрософт;
  • файл tests.xlsx, который содержит результаты тестов каждой функции в отдельной вкладке. Некоторые комментарии в этом файле могут представлять интерес, если результат работы функций библиотеки будет отличаться от Ваших ожиданий;
  • файлы *.ipynb, названия которых совпадают с названиями функций (в случаях, когда функция была протестирована в jupyter notebook)

Как пользоваться

Импорт библиотеки

После установки Вы можете обратиться к библиотеке, используя стандартный метод импорта:

import excell_functions

или загрузить отдельно интересующую вас категорию функций Ексел как субмодуль:

from excell_functions import [name_category]

Вы также можете назначить любой псевдоним загруженной Вами библиотеки или модулю по Вашему вкусу. Для моей библиотеки я рекомендую использовать exfun - с одной стороны это не слишком длинно, с другой - достаточно позитивно звучит:

import excell_functions as exfun

Excellent! Fun!

Использование функций библиотеки

После импорта библиотеки Вы можете начать использовать ее функционал, используя выбранное Вами обращение к библиотеке, категорию и название функции, разделенные через "."

excell_functions.category.FUNCTION(a, b, c)

Например, обращение к логической функции ЕСЛИ() будет выглядеть как:

exfun.logical.IF(True, "It's true!", "It's false!")

Названия функций, как правило, будут совпадать, с названием функций MS Excell в английской версии MS Office. Исключение составляют функции MS Excell, в названии которых содержится "." - в этом случае она будет заменена на символ нижнего подчеркивания "_".

Я использвал в названиях функций заглавные буквы, несмотря на существующие общепринятые требования и стандарты pep8, чтобы сохранить аутентичный дух MS Excell.

Однако мне пришлось отказаться от ";" в качестве разделителя аргументов функции, и использовать вместо этого ",", как это принято в python.

Надо отметить, что работа некоторых функций будет несколько отличаться от результатов работы их аналогов в MS Excell - это связано со спецификой типов данных в разных системах.

Полный перечень функций библиотеки и их краткое описание Вы можете посмотреть в разделе Прогресс-бар работы над проектом

Контрибьюторам

Не судите слишком строго - это мой первый репозиторий и первый опыт работы с открытым кодом на github.

Я буду признателен за любые комментарии, правки или замечания, которые позволят сделать код проекта чище и лучше.

Проект всегда открыт для Ваших pull requests!