Jump to content
    

Ищу хорошие форумы по Python/Pandas/Numpy/Matplotlib

Добрый день!

 

Этот раздел посвящён другим форумам и сайтам по электронике. Но я использую плотно вышеназванное в теме как раз для расчётов по электронике. Но на удивление не могу найти хороших, вернее активных форумов по библиотеке pandas, где хочу задать вопрос. 

 

Возможно, кто-то из участников данного форума сможет помочь: есть csv-файл. В одном столбце находятся значения переходного процесса. Нужно средствами библиотеки pandas, которая читает этот файл, ну либо numpy, найти номер строки с которой начинается установившееся значение. При этом, желательно, чтобы метод принимал настройки поиска установившегося значения в виде отклонения. Цель: из множества набранных csv-файлов отсечь переходные процессы, и построить график установившихся значений, набранных из csv-файлов за большоей период времени. Также хочется иметь данные о временах переходных процессов, измеренных в разных условиях.

 

Сам по документации на библиотеки pandas/numpy пока найти готового не моу. Написать самому цикл - не вопрос. Но это может пойти в разрез с философией данных библиотек, суть которых и состоит в том, чтобы использовать готовые методы, а не "программировать". Уверен, что нечто подобное тому, что мне требуется - есть. Т.к. поиск установившихся значений в переходных процессах возникает сплошь и рядом в различных отраслях.

 

На скрине ниже - примерно то, что мне нужно.

image.thumb.png.661710621e8e94aad628065bb059554d.png

P.S. Просьба не предлагать это делать вручную, в Excel или другими способами. Я о них знаю. И использую, когда они уместны. В данной ситуации всё нужно сделать автоматически с помощью Python/Pandas/Numpy.

Share this post


Link to post
Share on other sites

немного оффтопа,

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

регулярно наблюдаю как граждане заускают какие-нибудь измерения и потом каждый раз лезут в мануалы смотреть как сделать какое-нибудь примитивное действие типа фита параболой зашумлённых данных чтобы найти где там на самом деле максимум. потому что синтаксис малость упорот и запомнить не могут.

в той же математике (синтаксис местами правда не менее упоротый) это решается парой строк, плюс умеет в символьные вычисления, и можно не просто сделать фильтр + компаратор, а фит и решение уравнения f(x)==y

image.thumb.png.14cb49d95eeeafd166e9811deb5062b6.png

Share this post


Link to post
Share on other sites

47 minutes ago, _pv said:

но тут рядом его пихают везде где можно и нельзя

Я выбрал питон по следующим причинам:

1. Сбор большого количества данных с измерительного оборудования.

2. Управление этим же оборудованием.

3. Анализ собранных данных в п. 1.

4. Многие расширения для софта, управляющего, например логическим анализатором, уже написаны на питоне. И если нужен нестандартный дешифратор протокола, то знание питона очень помогает.

5. Не могу сказать, что математика в питоне очень удобна по сравнению с тем же MathCad. Но их и не надо сравнивать. Главная особенность питона - скрипты. Которые могут работать почти на чём угодно, и тихо, молча выполнять свою работу, выкладывая данных в пригодном для просмотра виде, начиная от csv-формата, заканчивая pdf, excel, html, sql и т.д. и т.п.

Да, питон не идеален. Я и не призываю его "пихать куда угодно".💗 Я могу поставленную задачу решить, как я уже кстати и написал, кучей способов. Но мне нужна автоматизация: сбор данных по GPIB/LXI/RS-232 с приборов и автоматическая обработка. "Математика" это может? Уверен, что нет...

P.S. А так, всяк кулик своё болото хвалит))) Мне и в голову, например, не придёт, считать передаточные функции питоном вместо матлаба, или пытаться заменить симулинк тем же SciLab. Ибо видел в действии эти продукты. Но и ругать SciLab не буду. Наоборот, я рад, что есть множество инструментом, и есть возможность выбрать приглянувшийся.

 

Жаль, что иногда инструменты в угоду коммерции, могут лишь что-то одно делать. В этом плане питон - наилучший выбор. Т.к. за счёт своих библиотек он может делать почти всё. В разумных пределах, естественно.

47 minutes ago, _pv said:

типа через jupiter

Отдельно добавлю, что Jupyter Notebook в первую очередь предназначен для документирования. И это также в первую очередь интерактивная среда для общения с питоном. Управлять в нём чем-то - ИМХО, нереально. Для управления пишется скрипт в любом редакторе или блокноте, запускается в командной строке, и вперёд)

Share this post


Link to post
Share on other sites

20 minutes ago, haker_fox said:

"Математика" это может? Уверен, что нет...

Питон как бы тоже не может, без сторонних обёрток.

FFI чтобы позвать С функцию из какой-нибудь внешней gpib32.dll везде есть, в том числе и в математике.

Готовых "батареек", то есть нормально обёрнутых функций для общения по gpib из математики, возможно и нет, не проверял, за ненадобностью. хотя обертки для вызова через какую-нибудь VISA думаю наверняка есть.

https://reference.wolfram.com/language/ref/device/Serial.html

 

Я вместо питона в Lua обернул всё доступное окружающее железо, нуждающееся в автоматизации.

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

Но если предположить что надо обязательно выбрать что-то одно, притащить вызовы ibwr / ibrd из внешней .dll в математику проще чем тащить нормальную математику в питон.

35 minutes ago, haker_fox said:

Jupyter Notebook в первую очередь предназначен для документирования

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

Share this post


Link to post
Share on other sites

Проект jupyter позволяет написать приложение, в которое внедряется ядро (jupyter kernel), позволяющее иметь полный контроль (инспекцию) надо всеми потрохами приложения в реальном времени через jupyter console. Мы таким образом делали прогу, которая качала видеопоток с камеры, производила его анализ и обработку. Тяжелые в вычислительном плане функции были написаны на C/C++ и подключены через boost::python. Сама прога была реализована с помощью PyQt. 

Собственно, цель была в упрощении разработки алгоритмов обработки видеопотока в камере (тепловизор). Камера включалась в bypass режим, когда "сырой" поток значений пикселов с сенсора лился на РС, а тут это программа его обрабатывала в реальном времени, корректировала ключевые параметры видеотракта и управляла сигналами сенсора, подстраивая его. Поэтом отработанный, отлаженный алгоритм портировался на "железо" (ПЛИС+набортный процессор).

Внешне это выглядело так. Запускается программа (PyQt), появляются её окна (картинки на разных этапах обработки видеотракта) и запускается консоль (jupyter console). В любой момент можно командой через консоль включить, выключить что-то, поменять значение того или иного параметра или вывести в цикле и наблюдать динамику изменения параметров видеотракта (да вообще любых объектов в программе). Можно, например, дать команду сграбить эн кадров (хоть тыщу), и потом спокойно их анализировать, обрабатывать через интерактивный режим Python в jupyter. К примеру, посмотреть шумы отдельных пикселов во времени (поиск аномально ведущих себя элементов приёмника -- для тепловизионных это обычное дело). Ну, и всякие гистограммы, профили строк или столбцов на разных уровнях экспозиции смотреть -- в общем, тут только фантазия и потребности ограничивают. Доступ ко всем объектам в реальном времени без останова программы. 

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

До этого варианта был ещё написанный на Qt (честный С++), но там работать было не очень удобно -- доступа такого не было, если что-то надо сделать, то это сначала написать, скомпилировать, запустить. В итоге интерфейс управления через консоль начинал обрастать и становится едва ли не сложнее самой программы. Это и натолкнуло на идею переписать на Python (PyQt), чтобы  облегчить/ускорить процесс обновления программы. Ну, и попутно предпринимались попытка как-то скрестить это с мегаудобным IPython. Так набрели на эту тему с внедрением jupyter kernel. По производительности вариант на чистом Qt и этот на PyQt+jupyter kernel оказались почти эквивалентными (системный монитор загрузки CPU показывал одни и те же значения ±1%) -- это в основном благодаря тому, что все тяжёлые функции были вынесены на уровень C/C++ и numpy, а Python был в своей основной роли orchestration language.

Share this post


Link to post
Share on other sites

39 minutes ago, dxp said:

Проект jupyter

Здравствуйте) С воодушевлением прочитал Ваш пост) Честно говоря, рассчитывал на Ваш ответ, уж простите за лёгкую мерканитильность:angel: Помню, что в своё время Вы писали про эти системы на базе питона. Тогда мне было многое непонятно, но сейчас они для меня - ведущие инструменты. И менять на что-либо не хочется...

39 minutes ago, dxp said:

Проект jupyter позволяет написать приложение, в которое внедряется ядро (jupyter kernel), позволяющее иметь полный контроль (инспекцию) надо всеми потрохами приложения в реальном времени через jupyter console

Гм. Я думал, что основное назначение Jupyter Notebook - всё же документирование и онлайн-транслятор. Или я Вас неправильно понял?

39 minutes ago, dxp said:

Можно, например, дать команду сграбить эн кадров (хоть тыщу), и потом спокойно их анализировать, обрабатывать через интерактивный режим Python в jupyter.

После чтения на третий раз я понял, зачем нужен Juptyer Notebook в Вашем проекте. Похоже, что я нахожусь только в самом начале пути освоения этих инструментов.

40 minutes ago, dxp said:

тяжёлые функции были вынесены на уровень C/C++ и numpy

Кстати, в плане быстродействия numpy, получается, весьма хорош? Если не ошибаюсь, внутренности у него на Си/Си++ написаны. Скажите, пожалуйста, а pandas/scipy/matplolib используете в своей практике?

Share this post


Link to post
Share on other sites

Не, немного не так. Jupyter Notebook -- это вариант, относящийся к классу программ-ноутбуков: это такие программы, которые позволяют совмещать описательную и вычислительную часть. Например, Matlab тоже относится к этому классу. В случае Jupyter там технология состоит в том, что есть некое вычислительное ядро (в нашем случае на Python, но может быть вроде как на любом из языков, составляющих основу Jupyter -- Julia, Python, R, от них и его название, а в принципе там можно добавлять и другие языки -- типа расширяемая штука), и есть интерфейс. 

Там есть различные способы запуска. Например, если выполнить ipython, то запустится монолитный процесс, где ядро и интерфейс консоли совмещены.

Но если выполнить jupyter console, то внешне это будет выглядеть точно так же (только запуск будет подольше и будет выхлоп в шелл про какие-то кернелы), но тут уже сама консоль запускается отдельно от ядра (в другом процессе) и цепляется к ядру. Можно запустить другую консоль, указав, что нужно прицепиться к уже запущенному ядру. Так можно работать, например, вдвоём (или более) интерактивно. 

jupyter qtconsole -- почти то же самое, что и в предыдущем случае, но запустится gui консоль, в которой, например, можно сделать режим, когда картинки (результат того же plot) будут внедрятся непосредственно в лог консоли (как в web-based jupyter notebook), что часто удобнее, нежели ловить графику в отдельных окошках.

И вот в предыдущем посте я описывал вариант, когда собственное приложение собирается с jupyter kernel, к которому можно прицепить ipython console или qtconsole. А поскольку ядро внедрено в программу, то оно "видит" все потроха (как workspace в Matlab или IPython), что даёт полную инспекцию и контроль. Ну, тут зависит, на каком уровне оно внедрено -- полный контроль надо всем -- это когда на верхнем модуле, а если на каком-то из вложенных, то от этого модуля и вниз по иерархии.

Ну, а Jupyter Notebook -- веб приложение, которое тоже запускает ядро. По идее можно к этому ядру прицепиться консолью (вроде пробовал, даже получалось, но смысла для себя не увидел). Идея примерно та же, что и с консолями -- можно назапускать ядер и цепляться к ним этими веб мордами. Ну, и возможности отображения и "деплоя" страниц ноутбука тут совсем другие -- даже github умеет из коробки отображать страницы Jupyter Notebook, ничего ставить не надо на пользовательской стороне.

Прицепиться Jupyter Notebook к ядру, которое было внедрено в нашу программу, у меня не получилось. Но оно и не надо было -- там консоль нужна, а не документ ноутбука делать.

Share this post


Link to post
Share on other sites

2 часа назад, haker_fox сказал:

Кстати, в плане быстродействия numpy, получается, весьма хорош? Если не ошибаюсь, внутренности у него на Си/Си++ написаны. Скажите, пожалуйста, а pandas/scipy/matplolib используете в своей практике?

numpy в целом неплох. Но там есть не всё, и кое-что не устроило по быстродействию. Конкретно построение гистрограмм яркостей пикселов -- в numpy функция  построения гистограммы навороченная, универсальная, умеет много чего, что нам не нужно было. И скорость работы получалась так себе. В итоге простой цикл на С работал в разы быстрее. Этим и удовлетворился.

Matplotlib -- конечно. scipy -- не помню, вроде что-то использовали, но мало (поэтому и не помню). pandas -- нет, не пришлось. Со сменой работы тематики изменились, давно этим не занимюсь.

 

P.S. Сам проект этот лежит где-то на github. Могу поискать, если интересно. Но там поразбираться немного придётся, не всё так просто и на виду.

Share this post


Link to post
Share on other sites

31 minutes ago, dxp said:

Могу поискать, если интересно

Не обязательно:angel:. Ради факультатива разве что)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...