Как стать автором
Обновить

Комментарии 5

Малая автоматизация как она есть. Автору - респект.

Верно, VBA был бы проще. Если в качестве БД используется Excel - чаще всего VBA оптимален и достаточен.
Но Python+Pandas добавляют ту самую кондовость при работе с данными, которой не хватает в случае если эти данные снаружи и постоянно растут вширь и в длину. Несколько замечаний все же выдам.

  1. В Pandas нет псевдонимов полей, но прекрасно работают русские имена колонок, к которым легко обращаться вот так:
    df.цена = (df.сумма / df.колво).fillna('') Срезы в Python прекрасны, но обилие [ ] [ ] скобок ухудшает понимание кода. При работе в JupyterLab (это самая удобная IDE/среда для подобных проектов и вообще для "анализа) - работает авто-дополнение по нажатию Tab, не надо имена полей набирать руками. Конечно, имена полей д.б. без пробелов, из спецсимволов только _, регистр - нижний. Это простое правило сделает таблицы ближе к людям.

  2. Стайлер в Pandas слабоват (а openpyxl сложен), поэтому форматирование Excel/Calc (XLSX/ODS-файлов) до идеала лучше делать на VBA, код для которого проще Записать (макро-рекордером в Excel), чем Написать. Вы будете приятно удивлены тем фактом что 90% записанного в Excel кода на VBA сработает автоматически и в свободном, бесплатном LibreOffice Calc (при открытии в нем XLS/XLSM/XLSB-файла). Заметьте, записывать надо в Excel, т.к. встроенный макрорекордер в Calc слаб и пишет в "свой" диалект Basic, способен перехватить лишь ~50% команд пользователя через т.н. Dispatcher. В Calc теперь есть все функции листа Excel на том же русском языке, включая новые-модные (заимствованные, к слову, из Pandas). VBA-код для beauty-форматирования при открытии файла можно запускать автоматически. Т.к. он специфичен для каждого типа документа - в первых строках макроса надо определить что именно открыто. Делайте это просто, по содержимому специфических ячеек: If [C3].Value="position" Then Сall Спека Так вы вызовете нужный "форматирующий" макрос.

  3. Использование эл. таблиц позволяет эффективно нагрузить работой коллег. Будучи причастными к результату - они гораздо охотнее будут им пользоваться (коллаборация вообще страшная штука). Пока вы в IDE пишете код - люди с опытом в Excel/Calc нарисуют за вас в ячейках листа полноценный интерфейс, пошаговые "визарды", сделают валидацию на Данные-Проверка и Усл. форматировании, раскрасят как им нра и вообще будут счастливы.

  1. Про df.цена = (df.сумма / df.колво).fillna('') не знал, перебирал все столбцы через цикл, может в будущем воспользуюсь. В таком случае, действительно стоило бы имена строк и столбцов оформить доступным для python образом.

  2. Стайлер pandas действительно слабоват, по итогу перешел на openpyxl (последняя версия описанной программы, как раз, его использует). Он, действительно, достаточно сложен, но простейшее форматирование на нем делается вполне приемлемыми усилиями. Мне требовалось лишь выравнивание, шрифт и границы, думаю в большинстве случаев этого должно быть достаточно. Не уверен что форматирование будет удобно делать макросами, т.к. они достаточно ограничены. Но если допилить их в VBA, то вполне. Однако довольно широкий ряд задач можно решить одними макросами, не написав ни строчки кода.

  3. Коллаборация действительно страшная штука. Замечено, что даже если просто обсудить функционал макросов и оформление таблиц с коллегами, их интерес к проекту возрастает многократно =)

Благодарю за интересный комментарий!

Хороший опыт. Надоест быть инженером, сможете пойти программистом.

Круто)! очень приятно читать про подобный опыт на реально выполненных задачах ))

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории