Python в автоматизации производства

Автоматизация на Python: три проекта

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

Автоматизация этих задач позволит перестать тратить время на рутину. Вы сможете сосредоточиться на действительно важных вещах, что значительно повысит эффективность вашей работы. Кроме того, вы примените на практике все свои знания о Python и даже узнаете что-то новое.

Давайте рассмотрим три проекта Python, которые помогли нам автоматизировать некоторые повседневные задачи на работе и, надеемся, помогут и вам!

1. Автоматизация отчетности в Excel

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

Сделать это один раз легко, но когда вам приходится делать это с определенной периодичностью, задача усложняется. К счастью, Python может помочь нам автоматизировать такие задачи. В следующий раз для создания отчета в Excel потребуется лишь пара щелчков мышью.

Подходы к решению

Для автоматизации Excel-отчетов можно использовать openpyxl и Pandas. Подробную инструкцию можно почитать в статье «Автоматизация отчетов в Excel с помощью Python». Обе библиотеки прекрасны и крайне полезны. Но у этого подхода есть недостаток: новичкам может потребоваться некоторое время, чтобы изучить openpyxl. А между тем, эта библиотека пригодится только для работы с Excel.

Читайте также:  Post xml with java

К счастью, есть более простой подход к автоматизации отчетов в Excel. Нам нужно просто установить библиотеку Python mitosheet (также известную как Mito). Эта библиотека позволяет нам группировать данные и вычислять сводную статистику с помощью интуитивно понятного интерфейса, подобного Excel. Самым приятным будет то, что Mito генерирует код для каждого редактирования. Поэтому мы сможем увидеть код Python, соответствующий каждому редактированию.

В приведенном ниже примере вы можете увидеть, как мы использовали интерфейс mitosheet для создания сводной таблицы. После создания сводной таблицы код создается автоматически. Удобно, не правда ли?

Чтобы автоматизировать создание сводных таблиц и другие задачи в Excel, необходимо установить библиотеку mitosheet. Для ее установки сначала откройте терминал и загрузите установщик Mito с помощью следующей команды:

python -m pip install mitoinstaller

Затем запустите установщик (выполнение этой команды может занять некоторое время):

python -m mitoinstaller install

Вот и все! Теперь вы можете значительно упростить себе жизнь с помощью mitosheet. Как создать свою первую сводную таблицу в Mito, можно узнать здесь.

2. Автоматизация визуализации данных

Большинство проектов по анализу данных заканчиваются презентацией, содержащей множество графиков. Раньше мы обновляли отчеты в Excel, а затем вручную создавали визуализации, такие как гистограммы, круговые и коробчатые диаграммы и т.д.

Однако это отнимает очень много времени, поэтому очень хотелось бы найти альтернативу. К счастью, в Python такая альтернатива есть. Существует пара библиотек, которые могут помочь нам автоматизировать построение визуализаций. Нам нужно будет только прочитать обновленные отчеты Excel с помощью Python, а все визуализации создадутся при запуске скрипта.

Решение

Чтобы автоматизировать визуализацию данных, сначала нам нужно написать код, создающий нужный нам график (желательно в файле Jupiter Notebook). Затем запишите, как должны выглядеть входные данные (файл Excel). Убедитесь, что имена столбцов, форма данных, тип данных и другие важные характеристики останутся такими же при следующем обновлении.

Python предлагает различные варианты для создания как стандартных, так и интерактивных визуализаций. Для этого можно использовать такие библиотеки, как Matplotlib и Seaborn. Кроме того, для создания интерактивных визуализаций вы можете использовать Pandas и Plotly.

Но изучение этих библиотек может занять у вас много часов. Здесь тоже может помочь Mito! Вы можете использовать библиотеку mitosheet для визуализации данных в пару щелчков мыши. Кроме того, автоматически будет генерироваться код на Python. Этот код можно использовать для автоматизации создания визуализации данных для будущих задач.

Давайте посмотрим, как это работает.

Здесь мы используем библиотеку mitosheet для создания гистограммы набора данных Netflix. Нам нужно только выбрать столбец, нажать кнопку графика и — вуаля! График создан, а код сгенерирован автоматически.

3. Автоматизация работы с сайтами

Одна из скучнейших задач, которую приходилось выполнять каждому младшему аналитику данных (да и не только им), заключается в ежедневной загрузке файлов на сайт клиента. Шаги были довольно простыми: перейди на сайт X, нажми эту кнопку, выбери вариант из раскрывающегося списка и нажми кнопку «Загрузить».

Это занимает около двух минут. Только вот эти шаги приходится повторять сотни раз в течение недели. Поэтому хорошо было бы автоматизировать эту задачу. Это можно сделать, например, с помощью Selenium. Это инструмент для управления браузерами, например Chrome, при помощи Python.

Решение

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

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

Источник

Использование библиотеки Python Control Systems Library для проектирования систем автоматического управления

С появлением библиотеки Python Control Systems Library [1], решение основных задач проектирования систем автоматического управления (САУ) средствами Python значительно упростилось и теперь практически идентично решению таких задач в математическом пакете Matlab.

Однако, проектирование систем управления с применение указанной библиотеки имеют ряд существенных особенностей, которых нет в документации [1], поэтому особенностям использования Python Control Systems Librar и посвящена данная публикация.

Начнём с инсталляции библиотеки. В документации говориться о загрузке двух модулей slycot и control, на самом деле для нормальной работы нужна ещё библиотека numpy+mkl, остальные устанавливаются автоматически при загрузке control.

Указанные модули можно скачать с сайта [2]. В документации так же сказано, что для интерфейса по умолчанию нужно просто импортировать контрольный пакет следующим образом: import control.

Однако, при таком импортировании библиотека не работает ни одном из примеров. Для импортирования библиотеки необходимо применить from control import* как и для импортировании окружения matlab: from control. matlab import *[1].

Рассматривать специализированную библиотеку Python Control Systems Library можно только применительно к задачам проектирования систем автоматического управления, поэтому мы так и поступим.

1. Модели соединений систем (функции tf и feedback)

Ввод передаточных функций:

# -*- coding: utf8 -*- from control.matlab import * f = tf(1, [1, 1]); g = tf(1, [2 ,1]);

Параллельное соединение блоков или систем:

# -*- coding: utf8 -*- from control.matlab import * f = tf(1, [1, 1]); g = tf(1, [2 ,1]); w = f + g print (w)

Последовательное соединение блоков или систем:

# -*- coding: utf8 -*- from control.matlab import * f = tf(1, [1, 1]); g = tf(1, [2 ,1]); w = f* g print (w)

a) Контур с отрицательной обратной связью:

# -*- coding: utf8 -*- from control.matlab import * f = tf(1, [1, 1]); g = tf(1, [2 ,1]); w = feedback(f, g) print(w)

б) Контур с положительной обратной связью:

# -*- coding: utf8 -*- from control.matlab import * f = tf(1, [1, 1]); g = tf(1, [2 ,1]); w = f/(1-f*g) print(w)

(2 s^2 + 3 s + 1)/(2 s^3 + 5 s^2 + 3 s)

При помощи функций tf и feedback можно моделировать соединений блоков и систем.

2. Динамические и частотные характеристики систем автоматического управления (САУ)

Зададим передаточную функцию САУ:

Найдем ее динамические и частотные характеристики:

# -*- coding: utf8 -*- from control.matlab import * """ Создадим LTI-объект с именем w, для этого выполним:""" num= [1., 2.] den= [3., 4., 5.,3] w= tf(num, den) """ Найдем полюса и нули передаточной функции с использованием команд pole, zero""" print('Передаточная функция САУ : \n %s'%w) print("Полюса: \n %s"%pole(w)) print("Нули:\n %s -\n "%zero(w)) 

-0.26392546+1.08251346j
-0.26392546-1.08251346j
-0. 80548241+0.j
Нули: -2

Построим переходную функцию командой step(w):

# -*- coding: utf8 -*- from control.matlab import * import matplotlib.pyplot as plt """ Создадим LTI-объект с именем w, для этого выполним:""" num= [1., 2.] den= [3., 4., 5.,3] w= tf(num, den) y,x=step(w) plt.plot(x,y,"b") plt.title('Step Responsse ') plt.ylabel('Amplitude') plt.xlabel('Time(sec)') plt.grid(True) plt.show()

Построим импульсную переходную функцию командой impulse(w):

# -*- coding: utf8 -*- from control.matlab import * import matplotlib.pyplot as plt """ Создадим LTI-объект с именем w, для этого выполним:""" num= [1., 2.] den= [3., 4., 5.,3] w= tf(num, den) y,x=impulse(w) plt.plot(x,y,"r") plt.title('impulse Responsse ') plt.ylabel('Amplitude') plt.xlabel('Time(sec)') plt.grid(True) plt.show()

Диаграмму Боде получим используя команду bode(w):

# -*- coding: utf8 -*- from control.matlab import * import matplotlib.pyplot as plt """ Создадим LTI-объект с именем w, для этого выполним:""" num= [1., 2.] den= [3., 4., 5.,3] w= tf(num, den) mag, phase, omega = bode(w, dB=True) plt.plot() plt.show()

Построение bode диаграммы имеет некоторые особенности, приведенные в листинге.

Построим Найквист-диаграмму командой nyquist(w):

import matplotlib.pyplot as plt from control.matlab import * num= [1., 2.] den= [3., 4., 5.,3] w= tf(num, den) plt.title('Nyquist Diagram ') plt.ylabel('Imaginary Axis') plt.xlabel('Real Axis') nyquist(w) plt.grid(True) plt.plot() plt.show()

Построение Найквист- диаграммы имеет некоторые особенности, приведенные в листинге.

Мы рассмотрели простые задачи, теперь попробуем совсем немного поднапрячь библиотеку Python Control Systems Library.

3. Найдем дискретную передаточную функцию исполнительного механизма, уравнения состояния которого имеют вид:

(1)

Для вычисления воспользуемся матричной экспонентой:

(2)

где h – интервал квантования.

Найдем ее преобразование Лапласа от (2), которое будет равно.

(3)

После подстановки в (3) матрицы А получим.

(4)

Вычислим обратную матрицу.

(5)

Откуда, осуществляя z – преобразование последней матрицы, найдем матрицу перехода дискретной системы Ad.

(6)

где h – интервал дискретизации по времени.

Матрица Bd в соответствии с (2) будет равна.

Тогда дискретный аналог модели исполнительного механизма будет выглядеть:

(7)

Этот пример на Python Control Systems Library для h=0,1 запишется так:

# -*- coding: utf8 -*- import matplotlib.pyplot as plt from control.matlab import * import numpy as np A=np.matrix([[-1,0],[1,0]]) B=np.matrix([[1],[0]]) C=np.matrix([[0,1]]) D=0 sn=ss(A,B,C,D) wd=tf(sn) print("Непрерывная модель: \n %s"%sn) print("Передаточная функция \n %s"%wd) y,x=step(wd) plt.plot(x,y,"b") plt.title('Step Responsse ') plt.ylabel('Amplitude') plt.xlabel('Time(sec)') plt.grid(True) plt.show() h=1 sd=c2d(sn,h) print("Дискретная модель : \n %s"%sd)

 A = [[-1 0] [ 1 0]] B = [[1] [0]] C = [[0 1]] D = [[0]]
A = [[0.36787944 0. ] [0.63212056 1. ]] B = [[0.63212056] [0.36787944]] C = [[0 1]] D = [[0]] dt = 1 

С использованием библиотеки на Python Control Systems Library получена математическая модель исполнительного механизма, основанная на системе дифференциальных уравнений (1). В модели использованы матричные операторы.

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

Источник

Оцените статью