Перейти к содержанию
    

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

Добрый день!

 

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

 

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

 

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

 

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

image.thumb.png.661710621e8e94aad628065bb059554d.png

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

image.thumb.png.14cb49d95eeeafd166e9811deb5062b6.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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 в первую очередь предназначен для документирования

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проект 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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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 используете в своей практике?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не, немного не так. 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 к ядру, которое было внедрено в нашу программу, у меня не получилось. Но оно и не надо было -- там консоль нужна, а не документ ноутбука делать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

31 minutes ago, dxp said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробуйте на этом канале вопрос задать:

https://t.me/fpgasystems_verification

Верификаторы они такие... Порой удивительные вещи творят в тестовом окружении...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...