Страницы: Пред. 1 2 3 4 5 6 След.
RSS
Удобное внедрение языка программирования "Python" в файл Excel на основе портативной сборки Python, Настроенный файл Excel для удобного вызова скриптов Python из Excel
 
egonomist,  спасибо, за ваши 5 копеек! Не знал про библиотеку "mito", думал что кроме платной "bamboolib" GUI-альтернатив просто нет, так как мне не удалось ничего нагуглить другого полгода назад на эту тему.

Цитата
egonomist написал:
В такой связке VBA вообще не нужен. (Я раньше очень много писал на VBA но теперь им совсем не пользуюсь - переделываю чужие макросы на нормальные etl)
Какими инструментами решаете задачи сейчас, позвольте поинтересоваться? Я так понял у вас устоялась некая связка из редактора кода, ETL и БД, мне было бы интересно узнать несколько подробнее.
Изменено: Сергей Юрьевич - 14.11.2021 09:10:33
 
Добрый день.
у нас в Self-service команде (автоматизация внутри бизнес подразделений) сложился следующий стек -
1) получение данных из различных источников (excel, txt, rest api, xml, json) - используется бесплатный KNIME
(выгрузку в эксель и условное форматирование можно делать в нем тоже)
2) проверка качества данных - OpenRefine, Talend Data Quality Stdio, и сейчас внедряем dbt, greate_expectations в связке с оркестровщиком Dagster
3) процессинг данных - R/Python - смотрим что, в каком инструменте проще выполнить (в workflow knime  можно вставить выполнение Python/R кода,
даже передать данные в jupiter notebook и получить результат обратно в поток).
4) для временных таблиц sqlite и сейчас смотрю на duckDB
5) Основное хранение данных - три физических слоя ODS, DDS, ADS в PostgreSQL (для BI данные переливаются в SQL Server)
6) BI платформа - PowerBI, сам смотрю за развитием metabase.
7) Запуск по расписанию - оркестровка - Dagster

К нам обращаются бизнес отделы с кучей экселей и макросов, мы переделываем это на нормальные etl, создаем нужную схему данных в бд, разрабатываем BI отчет - в итоге пользователи слезают с иглы портянок в экселе.
Обучаем ключевых пользователей в бизнес отделах пользоваться KNIME, PowerBI и отдаем отчет им на поддержку.
Также практика показывает, что найти на рынке спеца знающего VBA дороже чем студента знающего Python.

Подробнее по стеку и используемым библиотекам в моем докладе
Data Engineering «на коленке» - YouTube

p.s: свежие ссылки на mito:
How to Analyze Data Using Mito in Python | Towards Data Science
3 Python Tools Every Data Scientist Should Use | by Jake from Mito | trymito | Sep, 2021 | Medium
Изменено: egonomist - 15.11.2021 08:42:19
 
Звучит как реклама :)
Интересно следующее:
Цитата
egonomist написал:
кучей экселей и макросов, мы переделываем это на нормальные etl,

1.Как etl помогает работать с объектами Excel, в частности графиками/диаграммами, рисунками, форматированием ячеек, условным форматированием, именами. экземплярами листов и книг, событиями в книге и на листе? Или у вас этого нет, и вы пишите про узкий табличный сегмент (Excel - строго как табличный редактор+PowerBI или PowerPivot или PowerQuery + сводные и настроенные срезы и диаграммы для аналитики)?

2.
Цитата
egonomist написал:
Обучаем ключевых пользователей в бизнес отделах пользоваться KNIME, PowerBI и отдаем отчет им на поддержку.
Есть какие либо оценки стоимости разработки и дальнейшего сопровождения:
> в VBA этого функционала и специалиста/ов ?
> команды разработчиков и тех. поддержки всех вышеназванных продуктов и сервера с поднятой базой на скуле?

3.Объемы функционала когда это становится рентабельным?

4.
Цитата
egonomist написал:
найти на рынке спеца знающего VBA дороже чем студента знающего Python.
Достаточно дискуссионный вопрос.
Тыкнул в первое попавшиеся:
Зарплаты в Python за последние 10 лет
Согласно аналитике New HR средняя зарплатная вилка Python-разработчика в 2020 году — от 150 до 200 тысяч рублей.
Статистика Trud.ru хуже — средняя ЗП по их вакансиям — 105 тысяч.
Думаете VBA-ки получают больше? (предлагали на полную ставку подработать на VBA, пару лет назад, давали не более 130 тыс. в Москве, и то только посмотрев на мой уровень владения, студентов хотели брать тыс. за 70).
И тогда и сейчас я не работаю программистом VBA.
Возможно у вас есть какая-либо статистика?
Интересно посмотреть, что сейчас на рынке в данных направлениях.
Изменено: bedvit - 15.11.2021 12:40:33
«Бритва Оккама» или «Принцип Калашникова»?
 
Обыграл и уничтожил   8) :D
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Ок) чую задел очень много холиварных вопросов.
Большое почтение и уважение всем жителям форума!

1) Да, Вы правы, про узкий табличный сегмент  - мы боремся только с отчетностью в excel.
   Основная ЦА - руководители и аналитики - показываем что многостраничные отчеты можно заменить на дашборд со сценарным анализом.
    условное форматирование может делать etl, графики/диаграмы в bi, собыитя листов - в логику workflow, мат. стат. вынести в R/Python/H20.
2) Передаем знания уже существующим сотрудникам, в отделе кадров, в налоговом департаменте, в отделе отчетности - находим сотрудника, готово поддержать отчет, с большим ИТ договариваемся о интеграции. Поддержка БД с нашей стороны (уже нанятыми архитекторами), поддержка источников - большое ИТ, настройка параметров отчета - пользователи.
3 - 4 вопрос - статистики нет, есть личные наблюдения - вижу с каким трудом и каким ценником приходили люди на позиции с которых я уходил, и вижу как проще и дешевле передать на поддержку в отдел etl + bi решение.

Я не спорю, что excel был и будет, иногда кроме vba нет вообще альтернатив (и в таких конторах работал).
Просто сейчас появилось много инструментов, которые могут облегчить боль от работы с данными (надстройка с вызовом питона, что в этой ветке - в их числе),
и многие о них даже не слышали. Я лишь за расширение кругозора.
Иногда многие вопросы типа обработки сотен json или работы с большими цифрмаи могут быть проще решены вне excel.

P.S: однажды мне на смену пришел сотрудник, который не посмотрел ни один мой макрос, не открыл ни одну access бд,сказав что он просто не знает макросы, но умеет в питоне. За полгода он переписал все. Тогда я понял, что рынок труда меняется, и изучил питон.  
 
Цитата
egonomist написал:
Также практика показывает, что найти на рынке спеца знающего VBA дороже чем студента знающего Python.
А кто в этом виноват? Может просто система обучения, в которой Python позиционируется как "для правильных чуваков модная фишка", а VBA как г-но мамонта?
Более того, фактически заставляют писать на нём (на  Python). На прошлой неделе один студент рассказал (у нас практикуется работа студентов на пол ставки), что у них "кто напишет курсовой проект на питоне (по расчёту турбины), тому автоматом зачёт"(с). Не, я не против  Python, но... но когда мы учились никто не ставил такого условия - хочешь на паскале/дельфях, хочешь на фортране, хочешь в маткаде делай... Но никто за это автомат не поставит. И самое главное - мы то писали, у меня много кафедральных студенческих программ есть. А современные студенты в тупик ставятся от средней сложности поставленной задачи. Фактически все курсачи вручную считают (ад...). Когда предложил им написать свой вариант свойств воды и водяного пара в Excel для использования в их макросах - у них глаза как блюдца стали... Как высшее достижение было заявлено "а вот сейчас мы создадим программу, которая сама профиль лопатки рисует". Внезапно оказалось что такую прогу студенты нашей кафедры написали ещё задолго до их рождения, году эдак в 1995 когда о питоне и не слышали у нас в институте...

И да, я не программист. Я инженер энергетик. И более чем уверен, что в задачах с которыми я сталкиваюсь работать с Python это утопия по целому ряду причин. И то что его сейчас продвигают, мне совсем не нравится.
 
egonomist, благодарю за роскошные подробности! Я так понял (из видео) вы два раза в месяц мониторите новые библиотеки Python. Из этого я заключил, что если вдруг появится что-то бесплатное, что способно выполнить код, который хранится в ячейках листа Excel, то вы об этом узнаете намного быстрее чем я. Буду благодарен если отпишите сюда! Я думаю где-то на этом сайте должна быть тема, которая несет информационно-позновательное о новинках в мире для связки Python + Excel. А может у вас есть такой блог?
Изменено: Сергей Юрьевич - 17.11.2021 13:18:24
 
Цитата
Лина Сафиуллина написал:
Что я не так сделала? Буду благодарна за помощь!
Лина, можете попробовать снова, я изменил на первой странице источник портативной сборки. Думаю, теперь у вас все получится!
Изменено: Сергей Юрьевич - 25.12.2021 20:22:13
 
Тем, кому ближе Python конечно зайдет. Ну и для разнообразия тоже не помешает.

Оффтоп: Но я бы в названии темы слово "Удобное" тоже поместил в кавычки. Т.к. все, что не родное врядли будет удобным.
 
Цитата
Anchoret: я бы в названии темы слово "Удобное" тоже поместил в кавычки
ну почему же — удобнее имеющихся аналогичных связок Python-In-Excel
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Anchoret написал:
в названии темы слово "Удобное"
оно там совсем лишнее, без него было бы лучше
добавляя к названию темы слово "удобное", можно расщедриться и на "самое" ))
 
Вау... Неужто я в заповедник VBAшников попала, еще и кусачих. Сергей, спасибо за отличный и понятный гайд!
 
Цитата
написал:
источник портативной сборки
Сергей, здравствуйте.
1. а в этой портативной сборке UDF функции организовать возможно?
2. и запустить сервер что бы быстрее отрабатывался их вызов?
 
 
Цитата
написал:
1. а в этой портативной сборке UDF функции организовать возможно?2. и запустить сервер что бы быстрее отрабатывался их вызов?
Опчик, интересно, сервер какой-то и что многопоточность там есть?
 
Цитата
написал:
сервер какой-то
В настройках можно указать
  • RunPython: Use UDF Server: Uses the same COM Server for RunPython as for UDFs. This will be faster, as the interpreter doesn’t shut down after each call.

  • Restart UDF Server: This restarts the UDF Server/Python interpreter.

Питоновский скрипт выполняется полноценно интерпретером, скорее всего и многопоточность будет поддерживаться. Подробнее здесь https://docs.xlwings.org/en/stable/threading_and_multiprocessing.html
Изменено: Игорь Федорович - 01.09.2022 14:33:42
 
Цитата
написал:
скорее всего и многопоточность будет поддерживаться
По поводу многопоточности в Excele вообще есть такой комментарий (от 2019) .
Цитата
Если же все используют общие данные, то при синхронизации мы получим не увеличение, а наоборот - уменьшение производительности, поскольку объектная модель офиса - однопоточная (STA) и все обращения будут транслироваться в главный поток и ждать в очереди при одновременном обращении.
Для синхронизации можно использовать объектный моникер, передавая его дочерним процессам и которые будут "дергать" колбек при завершении/изменении статуса обработки данных.
С определенной периодичностью можно увидеть такой вопрос, типа как оптимизировать файл с тысяюью функций, при открытии которого приходится ждать 20 минут пересчет. В этом плане Питон, наверное мог бы дать второе дыхание этому процессу. Это мои, возможно нубские рассуждения. Видел, комент на Хабре, что Майкрософт делает ставку на Питон в будущих релизах.
 
Цитата
testuser написал:
в будущих релизах.
чего?
По вопросам из тем форума, личку не читаю.
 
Цитата
написал:
чего?
Цитата
hmpd                       20.06.2019 в 03:02                

Несколько  лет назад на реддите был AMA с разработчиками MS Office. Они сказали,  что VBA улучшать не будут, а планируют заменить его Питоном

+2
bmforce                       20.06.2019 в 15:20                
  Сам  VBA, как язык программирования, они развивать уже точно не будут, но  добавлять доступ к новым функциональным возможностям офиса они не  забывают:
Новое в 2016
Новое в 2019
Изменено: testuser - 02.09.2022 01:54:25
 
Цитата
testuser: Несколько  лет назад на реддите был AMA с разработчиками MS Office. Они сказали,  что VBA улучшать не будут, а планируют заменить его Питоном
обещать - не значит жениться и вообще больше на байку похоже. Мол, здравствуйте, я разработчик, всё сделаем  :D
Ввиду отсутствия каких-либо официальных заявлений и дат релизов - всё это пустая болтовня и бабкины надежды  :)
Изменено: Jack Famous - 02.09.2022 09:24:50
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
написал:
на байку похоже
За что купил, как говориться.. Слово "заменить" там явно избыточно.
Интеренсо, в одной статье, есть о том, что можно передать из VBA в Python массив (функция PyTuple), там обработать (в д.сл. функцией get_unique)  и получить обратно (функция PyVar) результат. Там речь об одной надстройке, которая давно не обновляется. Прикольно, если это темболее быстро работает, можно комбинировать работу VBA и Python
Код
Function sr(lists As Range)
    On Error GoTo do_error
        Set plugin = PyModule("plugin", AddPath:=ThisWorkbook.Path)
        Set result = PyCall(plugin, "get_unique", PyTuple(lists.Value2))
        sr = WorksheetFunction.Transpose(PyVar(result))
        Exit Function
do_error:
        sr = Err.Description
End Function
Изменено: testuser - 02.09.2022 16:11:33
 
Цитата
testuser: если это тем более быстро работает
если
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
питон прекрасно справляется с любым эксель-файлом/данными самостоятельно, не хуже VBA ))
 
Цитата
nilske: питон прекрасно справляется с любым эксель-файлом/данными самостоятельно, не хуже VBA ))
верить вам на слово или будут равнозначные тесты?
Если почитаете выше, то с библой Виталия (гораздо проще подключить, чем пайтон) у вас нет шансов тягаться. Без - может быть какие-то специфические задачи, но не сильно быстрее. Вся работа с диапазоном - очень сомневаюсь, что у вас будет быстрее.
Изменено: Jack Famous - 02.09.2022 17:44:06
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Вот что не имел ввиду, так это скорость. Забыл оговориться )
Так ведь он и сам по себе не по скорость.
Но если не сотни тысяч строк, то разницы без тестов заметно не будет.
 
Цитата
nilske: если не сотни тысяч строк, то разницы без тестов заметно не будет.
чтобы что-то говорить о сравнении скоростей, нужны тесты. НА диапазоне в 10 ячеек разницы не будет, но смысл запускать тогда пайтон? Чтобы не изучать VBA и работать в привычной среде? Только, если так…
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
nilske написал:
не хуже VBA ))
вот не стоит столь категорично заявлять. открутите эту тему допоста моего

VBS и JS постепенно вытесняются PS1 я уж не говорю про CMD(BAT) , естественно что если есть  возможность в строку уложить то, что в VBS через десяток, а в CMD и  вовсе не реализуемо, то конечно выбор очевиден. Но что-то встроено в систему, а какие-то CMDLETы дополнительно нужно ставить, потом всплывает что-то типа подписания кода, так как или снижать безопасность ,или использовать подпись сертификатом.... короче порой для запуска скрипта в 10 строк нужно потратить больше времени на подготовку чем накидать скрипт в 100.
По вопросам из тем форума, личку не читаю.
 
Цитата
написал:
не хуже VBA
Цитата
написал:
вот не стоит столь категорично заявлять. открутите эту тему до поста моего
Почему-то все акцентируются на скорости выполнения кода, а не на удобстве работы.
Мне понадобилась неделя что бы написать макрос на VB с целью получения и обработки исторических данных котировок с Яху и Мосбиржи, еще тот квест запросить, отпарсить и обработать JSON, преобразовать в массив, отсортировать, выделить необходимые мне столбцы... Практически все с нуля, изучая каждый шаг в инете и  структуру api xml/json ответов. Причем побороться с инвестинг ком - так и не смог.

На питоне - все заняло 3 дня, причем можно было не копать в api мосбиржы, yahoo, investing.com. Там все делается совершенно единообразно и при помощи pandas dataframe выводится в excel одной командой.
Плюс практически все библиотеки в свободном доступе и с подробной справкой как этим пользоваться.

Поэтому если любишь программировать - VBA

Если нужен результат без лишнего гимора - python.

Это сугубо мое мнение.  
 
Цитата
Игорь Федорович написал:
Почему-то все акцентируются на скорости выполнения кода, а не на удобстве работы.
возможно по тому что если действительно надо своять что-то разовое, то скорость не нужна, на первое место встанет малое время разработки. Бесспорно наличие ранее кем то написанных готовых библиотек позволяет, ускорить разработку в разы. Но вот я сторонник иметь самодостаточные решения, чтоб не требовалось ничего устанавливать и приплясывать для запуска того что работает у соседа.

В очень далекие девяностые, поделились как-то решением написанном на Fortran под СМ1420. Переписали скомпилированные коды отдали, нам звонят, не работает. Оказалось что была подключена библиотека, которая по размеру в несколько раз превышала написанное нами, а в те года попробуй еще место на диске найди , это сейчас на смартфоне программа не стесняясь просит 100MB,  а в те времена на одной пластине диска 3MB и все.
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
чтоб не требовалось приплясывать для запуска
это не про python (удобство), а с VBA такое бывает (скорость)
 
nilske, не понятно что имелось в виду. Естественно VBA не соперник C и тем более ассемблеру, но тем не менее на нем можно получать результат весьма конкурентоспособный, и без всяких внешних библиотек. Что касается скорости разработки, то те, уто постоянно что-то кодят, имеют арсенал готовых функций, шаблонов и прочего, что позволяет скорость серьезно повысить, часто это собственные разработки, и вот тут получаем не тупое использование чего либо  ранее созданного а осознанное применение алгоритмов.

P.S. Есть поговорка, что дорога ложка к обеду, вот так и тут , для всего найдется применение.
По вопросам из тем форума, личку не читаю.
Страницы: Пред. 1 2 3 4 5 6 След.
Наверх