Python для инженера: расчёты, обработка измерений и графики вместо громоздких таблиц Excel
Python для инженера — это короткие скрипты и тетради Jupyter, которые читают файл с регистратора или стенда, пересчитывают показания по формулам, проверяют единицы измерения, подбирают зависимость по точкам эксперимента и сохраняют график для отчёта. Для расчётов нужны NumPy и SciPy, для единиц — библиотека pint, для рисунков — matplotlib, а для связи с прибором по последовательному порту — pyserial. Ниже разобраны учебный пример с испытанием нагревателя, ловушки с температурой и погрешностями, порядок освоения и случаи, когда хватит Excel или Mathcad.
Содержание

Главный выигрыш здесь не в скорости, а в повторяемости. Книга Excel с тридцатью листами хранит расчёт в ячейках, и через полгода трудно понять, какая формула куда ссылается и что поправили вручную. Скрипт хранит расчёт как текст: его можно перечитать сверху вниз и запустить на новой партии файлов. Если логгер выдаёт по файлу на смену, один и тот же код обработает сорок файлов так же, как первый.
Какие задачи берёт на себя Python, а где хватит Excel или Mathcad
Типичные задачи выглядят так: решить систему линейных уравнений для балки или электрической цепи через numpy.linalg.solve, найти корень нелинейного уравнения через scipy.optimize, проинтегрировать уравнение нагрева или переходного процесса через scipy.integrate.solve_ivp, сгладить шумный сигнал фильтром из scipy.signal. Отдельный класс — пакетная обработка: собрать показания из десятков CSV, отбросить строки с обрывом датчика и сложить средние за интервал в одну таблицу.
Excel удобнее, когда расчёт разовый, данных немного, а результат откроет человек, которому нужна только таблица. Mathcad выигрывает, если расчётная записка должна выглядеть как формулы на бумаге. Python оправдан, когда расчёт повторяется, файлов много, нужна связь с прибором или в таблице уже завелись макросы, понятные только автору.
Учебный пример: испытание нагревателя по журналу логгера
Ситуация учебная. Логгер раз в секунду записывает время, температуру корпуса нагревателя, ток и напряжение и выгружает CSV, где разделитель столбцов — точка с запятой, а десятичный знак — запятая, как принято в русской локали. Нужно получить потребляемую мощность, постоянную времени нагрева и график для протокола.
import numpy as np, pandas as pd
from scipy.optimize import curve_fit
df = pd.read_csv("smena_01.csv", sep=";", decimal=",")
df["P"] = df["U"] * df["I"]
t = df["t_s"].to_numpy(); T = df["T_C"].to_numpy()
model = lambda t, T0, dT, tau: T0 + dT * (1 - np.exp(-t / tau))
popt, pcov = curve_fit(model, t, T, p0=(T[0], T[-1] - T[0], 300))
Без decimal=»,» показания прочитаются как строки, и умножение U на I упадёт. Начальное приближение p0 тоже важно: без него подбор стартует с единиц и на постоянной времени в сотни секунд может не сойтись. Затем matplotlib рисует точки, кривую модели и оси с единицами, а скрипт кладут рядом с данными, чтобы протокол можно было воспроизвести.
Единицы измерения: pint и ловушка с температурой
Библиотека pint хранит число вместе с единицей и не даёт сложить метры с секундами. Ошибку в размерности формулы скрипт покажет сразу, а не в цифре на последней странице отчёта. Но у температуры есть особенность, о которой узнают после первой странной ошибки.
Градусы Цельсия и Фаренгейта — шкалы со смещением нуля, поэтому документация pint о температуре запрещает с ними ряд действий. Запись 25.4 * ureg.degC по умолчанию вызывает исключение OffsetUnitCalculusError: величину создают явно, через Q_(25.4, ureg.degC). Прибавить к 10 °C скорость нагрева 0,5 K/мин, умноженную на 30 минут, тоже нельзя. Выхода два: перевести температуру в кельвины или выразить скорость в delta_degC/min, то есть в градусах разности, и тогда получится 25 °C. Разность двух температур pint сам превращает в delta_degC, и её уже можно умножать на массу и теплоёмкость.
Неочевидное следствие касается настройки autoconvert_offset_to_baseunit. Её включают, чтобы убрать мешающую ошибку, но по той же документации перед умножением и делением она переводит температуру в кельвины. Если в формулу теплоты по невнимательности попала сама температура 20 °C, а не разность, скрипт молча подставит 293,15 K, и результат окажется почти в 15 раз больше. Без настройки pint остановил бы расчёт. Поэтому в формулы с теплоёмкостью и теплопередачей подавайте разности, а OffsetUnitCalculusError считайте подсказкой.
Погрешности: почему числа расходятся с Excel
При переносе расчёта из таблицы первые расхождения обычно появляются в разбросе измерений. По документации numpy.std функция по умолчанию делит на N, а СТАНДОТКЛОН.В в Excel и метод std в pandas — на N − 1. На десяти замерах разница около 5 %, и её легко принять за ошибку в данных. Для выборочной оценки в NumPy указывают ddof=1.
Вторая ловушка — погрешности параметров после подбора кривой. Если передать в curve_fit паспортные погрешности приборов через sigma, то при absolute_sigma=False, как стоит по умолчанию, по документации SciPy учитываются только их относительные величины, а ковариационная матрица масштабируется по качеству подгонки. Чтобы опираться на реальные погрешности, нужно absolute_sigma=True.
Связь с прибором через последовательный порт
Стенды, мультиметры и контроллеры часто отдают данные по COM-порту или USB-переходнику, и pyserial читает их прямо из скрипта. В описании API pyserial у Serial по умолчанию скорость 9600 бод и timeout=None: чтение ждёт сколько угодно, пока не придёт нужное число байтов. Если прибор молчит из-за неверной скорости или кабеля, скрипт зависнет без сообщения. Поэтому timeout задают явно, а пустой ответ пишут в журнал как ошибку связи.
С чего начать и в каком порядке осваивать
Порядок идёт от данных, которые у вас уже есть, к приборам, которых может не оказаться под рукой. Без циклов и функций любая библиотека превращается в копирование чужого кода, а на массивах NumPy держатся и SciPy, и графики. Связь с оборудованием — последней, когда обработка уже работает на сохранённых файлах.
- Основы Python: переменные, условия, циклы, функции, файлы.
- NumPy: массивы, операции без циклов, линейная алгебра.
- Чтение CSV с логгера: разделители, десятичная запятая, пропуски, время.
- SciPy: корни, интегрирование, подбор зависимостей, фильтры.
- pint и учёт погрешностей в своих формулах.
- matplotlib: график для отчёта с подписями и единицами.
- pyserial на реальном приборе или его симуляторе.
Тетрадь Jupyter удобна как журнал расчёта: данные, формулы с пояснениями, результат и график лежат в одном документе. Перед передачей коллеге перезапустите её целиком, сверху вниз, чтобы результат не зависел от ячеек, выполненных вручную вразнобой.
Упражнения и как проверить результат
Лучшее упражнение — повторить в Python свой расчёт из Excel и добиться совпадения до последнего значащего знака. Каждое расхождение чему-то учит: то делитель в стандартном отклонении, то округление в промежуточной ячейке, то пропуск, который Excel проигнорировал, а NumPy превратил в nan. Второе — подобрать кривую по искусственным данным: сгенерируйте точки по известной формуле, добавьте шум и проверьте, что curve_fit восстанавливает заданные параметры.
Новички часто подают в тригонометрию NumPy градусы, хотя она ждёт радианы, пишут цикл по строкам вместо операции над массивом, сравнивают дробные числа через == вместо numpy.isclose и не записывают версии библиотек, из-за чего через год расчёт даёт другой результат.
Чему учат на курсах
Онлайн-курсов по Python именно для инженеров немного, и библиотеки в их описаниях названы не всегда. Поэтому смотрите на темы и практику: численные методы, файлы измерений, единицы и оборудование.
Ближе всего к теме курс Skillbox «Python для инженеров». По обзору на Учи.Онлайн он длится два месяца: основы языка, работа с файлами, проверка единиц измерения и обработка пропусков, затем символьные и численные вычисления, визуализация и взаимодействие с оборудованием. Итоговый проект — обработка эксперимента, расчётная модель или сбор показаний. Библиотеки и используемое оборудование на странице не названы, это стоит уточнить у школы.
Если Python нужен как часть большой инженерной профессии, посмотрите, как он встроен в длинные программы. Там он обычно служит для прототипов и разбора показаний датчиков, а основная нагрузка ложится на другие языки и предметы.
На курсе Skillbox «Программист дронов» Python идёт блоком «автоматизация инженерных расчётов»: обработка и визуализация данных, анализ показаний сенсоров, очистка данных и проверка единиц. Вся программа рассчитана на 13 месяцев и включает C++, математику и беспилотные системы; задания Python-блока на странице не перечислены.
Тем, кто уже пишет на Python, но спотыкается о математику расчёта, подойдёт узкий предметный курс: он не учит языку, зато показывает, какие формулы стоят за кодом.
Курс Skillbox «Математика для робототехников» рассчитан на три месяца: линейная алгебра, анализ, кинематика, динамика и статистика. Python используется для вычислений и моделирования, шесть практических задач проверяет эксперт. На старте нужны базовый Python и школьная алгебра с тригонометрией.
Как навык влияет на доход
Открытой статистики о надбавке инженеру за Python мы не нашли: в вакансиях конструкторов, технологов и испытателей он обычно стоит строкой «будет плюсом» рядом с Excel и профильными программами. Поэтому сумму не называем.
Влияние идёт через задачи. Инженер, который сам автоматизирует обработку испытаний и подключает стенд к компьютеру, может претендовать на места в испытательных лабораториях, НИОКР и автоматизации, где это записано в требованиях. Чтобы оценить рынок, сравните вакансии своей специальности с Python и без него в одном регионе и на одном уровне опыта, смотрите медиану вилок и уточняйте, указана сумма до вычета налога или на руки.
Как выбрать обучение
Перед оплатой найдите в учебном плане работу с файлами измерений, численные методы и практику с оборудованием или симулятором. Если программа целиком про веб-разработку или машинное обучение, инженерных расчётов в ней будет мало.
Сравнить онлайн-школы поможет рейтинг онлайн-школ с обучением Python. Он шире темы статьи, поэтому инженерный блок каждой программы сверяйте с планом. Готовность проверить просто: если вы перенесли свой расчёт из Excel в скрипт, получили те же числа и можете объяснить каждое расхождение, база уже есть.