Сегодня разбираем материал realpython.com о теме «Spyder: среда разработки для data science на Python». Практический разбор с шагами и примерами, который можно быстро применить в своей работе.
Когда я впервые искал удобную среду для работы с данными на Python, выбор оказался неочевидным. Spyder — одно из решений, которое сразу выделяется: это открытая Python IDE, специально созданная для учёных, инженеров и аналитиков данных.
Она предоставляет широкий спектр возможностей для построения графиков, анализа сценариев и профилирования. Spyder хорошо интегрируется с экосистемой data science и поддерживает расширение с помощью плагинов, как собственных, так и сторонних, а также обладает сравнительно простой кривой обучения.
При выборе среды разработки стоит учитывать её предназначение. Хотя Spyder и не так мощна и настраиваемакак в сравнении с Code, она отлично подходит для большинства рабочих процессов в области data science.
Если ваш основной фокус лежит на data science в Python, Spyder — это разумный выбор. Для более функциональной IDE или интенсивного использования ноутбуков рекомендуется рассмотреть вариантытакие как Jupyter или в сравнении с Code.
Начало работы со Spyder IDE
Установить Spyder можно несколькими способами: как самостоятельное приложение, через дистрибутив или из командной строки
Чтобы установить Spyder как самостоятельное приложение, перейдите на страницу загрузки. Сайт автоматически определит вашу операционную систему и предложит подходящий дистрибутив. После скачивания установочного файла откройте его и следуйте инструкциям.
Также можно установить дистрибутив Python, адаптированный для data science, например Anaconda или WinPython. Оба варианта включают Spyder в базовую установку
Скорее всего, вы захотите установить зависимости и полезные библиотеки для работы с данными в дополнение к Spyder. В этом случае сначала создайте виртуальное окружение Python, затем используйте следующую команду:
$ conda create -c conda-forge -n spyder-env spyder numpy scipy pandas matplotlib sympy cython
Процесс установки через pip аналогичен. Чтобы установить Spyder вместе с распространёнными пакетами, выполните:
$ python -m pip install spyder numpy scipy pandas matplotlib sympy cython
Для получения дополнительной информации об установке Spyder обратитесь к их руководству по установке
Из коробки интерфейс Spyder состоит из трёх панелей:
Слева вы видите код в панели Editor. В правом нижнем углу находится IPython Console. Здесь можно запускать код и просматривать предыдущие команды с помощью вкладки History. В правой верхней области расположены вкладки Help, Debugger, Files, Find и Code Analysis. О Variable Explorer, Plots и Profiler вы узнаете в следующих разделах.
По этой теме полезно отдельно посмотреть Составьте еженедельное расписание занятий, чтобы расширить контекст и сравнить подходы.
По этой теме полезно отдельно посмотреть Аннотации типов для декораторов в Python, чтобы расширить контекст и сравнить подходы.
Исследование данных с помощью Variable Explorer
Variable Explorer (проводник переменных) содержит подробную информацию о переменных в текущем состоянии выполнения. Он отображает тип, размер и значение переменных в вашей программе — и это один из тех инструментов, к которым я возвращаюсь постоянно при отладке сложных пайплайнов.
Чтобы увидеть Variable Explorer в действии, вы будете работать с набором данных Weather History с Kaggle, который содержит почасовые данные о погоде из Сегеда, Венгрия, с 2006 по 2016 год. Набор данных включает такие поля, как дата и время, температура, влажность и скорость ветра. Чтобы скачать его, перейдите по ссылке и нажмите Download. Для доступа к файлу вам понадобится бесплатный аккаунт Kaggle.
Запустите Spyder в выбранной директории проекта. Перед созданием файла Python, описанного ниже, сохраните набор данных о погоде как weatherHistory.csv в папке data/.
Затем создайте файл Python с именем weather.py в директории вашего проекта. При работе со Spyder рекомендуется иметь установленный пакет, например pandas, в вашем окружении Python. Здесь вы используете pandas для чтения ранее загруженных данных о погоде:
import pandas as pd
weather_data = pd.read_csv("data/weatherHistory.csv")
Запустите программу, нажав зелёную стрелку запуска на панели инструментов. Чтобы изучить этот DataFrame, откройте панель Variable Explorer
Variable Explorer отображает переменные, их типы, размеры и значения. Здесь можно изменять объекты Python, такие как строки, массивы NumPy и DataFrame.
Одна из интересных возможностей Spyder — возможность более детального изучения DataFrame. Нажмите в любом месте строки DataFrame. Появится окно просмотра DataFrame, отображающее данные в нём. Если вы хотите редактировать значения, это можно сделать непосредственно в этом табличном представлении.
Не забудьте нажать кнопку Save and Close, чтобы сохранить значение для текущей сессии. Обратите внимание, что это действие сохраняет значение только в памяти для текущей сессии, но не в самом файле данных
Меню Options, расположенное под значком меню (☰), позволяет фильтровать отображаемые объекты. Можно исключить определённые переменные — приватные, полностью написанные заглавными буквами или начинающиеся с заглавной буквы — а также неподдерживаемые типы данных. По умолчанию система исключает вызываемые объекты и модули. Также можно выбрать отображение минимальных и максимальных значений массивов NumPy вместо их значений.
Щёлкните правой кнопкой мыши по полю в Variable Explorer, чтобы редактировать значения, вставлять строки или столбцы, или изменять тип ячейки
Для получения дополнительной информации о Variable Explorer обратитесь к документации Spyder
Визуализация данных в панели Plots
Панель Plots отображает статические снимки ваших графиков для быстрого просмотра. Вы можете перелистывать их вперёд или назад, сохранять график, копировать его в буфер обмена или удалять из IDE. Поддерживается также масштабирование, а окно можно открепить и перенести на другой монитор.
Чтобы увидеть больше возможностей Spyder, создайте два графика с помощью pandas и matplotlib, которые вы установили ранее:
import pandas as pd
import matplotlib.pyplot as plt
weather_data = pd.read_csv("data/weatherHistory.csv")
weather_data_five_days = weather_data[:120]
plt.figure()
plt.plot(weather_data_five_days["Formatted Date"], weather_data_five_days["Temperature (C)"])
plt.title("Temperature Over Time")
plt.xlabel("Date")
plt.ylabel("Temperature")
plt.xticks([])
plt.show()
plt.figure()
ax = plt.axes(projection="3d")
ax.set( title="Temperature, Humidity, and Wind Speed", xlabel="Temperature (C)", ylabel="Humidity", zlabel="Wind Speed (km/h)", xlim=(0, 21), ylim=(0.5, 1), zlim=(0, 30)
)
ax.scatter( weather_data_five_days["Temperature (C)"], weather_data_five_days["Humidity"], weather_data_five_days["Wind Speed (km/h)"]
)
plt.show()
Код считывает файл данных и фильтрует его до первых пяти дней, то есть 120 строк, затем использует matplotlib для создания двух графиков. Запустите код и откройте панель Plots
По умолчанию графики, сгенерированные вашим кодом, отображаются только в панели Plots. Если вы хотите, чтобы они также появлялись в консоли, перейдите в меню Options в правом верхнем углу и снимите флажок Mute inline plotting.
Для перелистывания графиков нажмите стрелку влево в правом верхнем углу, чтобы перейти назад, или стрелку вправо, чтобы перейти вперёд. Дополнительные кнопки позволяют сохранить график, увеличить или уменьшить масштаб, либо удалить его из панели
Чтобы взаимодействовать с графиками, отображайте их в отдельных окнах. В Spyder нажмите Preferences, затем выберите IPython Console на левой панели и откройте вкладку Graphics. Переключите выпадающий список Graphics backend с Inline на Automatic, затем нажмите Apply и OK.
При повторном запуске кода графики появятся в отдельных интерактивных окнах. В этих окнах вы можете воспользоваться динамическими возможностями, например вращением трёхмерного графика
Выявление узких мест с помощью Profiler
Profiler (профилировщик) определяет время выполнения и количество вызовов для каждой функции и метода в файле. Изучая эту информацию, вы можете выявлять узкие места производительности в своём коде. Также можно сохранять результаты профилирования и сравнивать их между запусками.
В качестве примера предположим, что вы хотите извлечь подмножество данных о погоде, где влажность превышает заданный порог. Ваш коллега замечает, что эта операция в его коде выполняется дольше, чем ожидалось, и спрашивает вас, почему это происходит. Следующий код демонстрирует его реализацию:
import pandas as pd
def find_humidity_rows(df, target): results = [] for _, row in df.iterrows(): if row['Humidity'] >= target: results.append(row) results = pd.DataFrame(results) return results
weather_data = pd.read_csv("data/weatherHistory.csv")
hi_humidity = find_humidity_rows(weather_data, 0.90)
Вы знаете, что итерация по строкам DataFrame заведомо будет медленной, но стоит разобраться, на что именно Python тратит время
Когда вы запускаете Spyder Profiler, он показывает вам две величины:
- Local Time: Время, затраченное только на выполнение самой функции.
- Total Time: Время, затраченное на выполнение функции и всех вызываемых ею функций.
Когда вы смотрите на find_humidity_rows() в Profiler, вы видите следующие результаты: локальное время для этой функции составляет 62,23 мс, а общее время — целых 3,73 с. Для последующего сравнения вы сохраняете результаты профилирования.
Лучшим подходом является использование встроенных оптимизированных функций pandas, показанных ниже:
Теперь Profiler выдаёт для функции набор чисел, которые существенно отличаются от предыдущих результатов. Та же функция теперь имеет локальное время 48,67 мкс и общее время 905,33 мкс — весьма значительное улучшение.
Для сравнения двух подходов вы загружаете файл профиля, сохранённый из исходного кода. Информация в Profiler теперь показывает различия: функция улучшила своё локальное время на 62,18 мс, а общее время — на 3,73 с. Очевидно, что использование встроенной функции pandas — правильный путь
Для получения дополнительных сведений о профилировании в Python ознакомьтесь с материалом Profiling in Python: How to Find Performance Bottlenecks или уроком Profiling Before You Optimize из видеокурса Profiling Performance In Python.
Ограничения и подводные камни
Spyder ориентирован на рабочие процессы в области науки о данных и научного программирования, но не слишком подходит для разработки программного обеспечения общего назначения. Если вы работаете над полноценным программным проектом, вам, вероятно, лучше воспользоваться другим инструментом, например Visual Studio Code.
Spyder разработан специально для Python. Это отлично, если вы используете Python, но если ваш проект написан на другом языке или использует несколько языков, то Spyder вам не подойдёт.
Небольшое неудобство заключается в том, что некоторые сочетания клавиш по умолчанию могут показаться неудобными. Например, многие разработчики на Mac используют Cmd + Shift + Right для выделения текста от курсора до конца строки. К счастью, сочетания клавиш настраиваемы — немного подправив их, вы можете адаптировать их под предпочтительный рабочий процесс. Я сам потратил на это минут десять при первом запуске, и с тех пор работа в IDE стала заметно комфортнее.
Spyder — отличный выбор для специалистов по данным, которым нужна простая в использовании IDE с хорошими возможностями построения графиков, отладки и профилирования. Удобный доступ к Variable Explorer, Plots и Profiler делает его привлекательным выбором для быстрой итерации при анализе данных и для небольших проектов в области науки о данных или научного программирования.
В этом руководстве вы:
- Установили Spyder и настроили его для разработки на Python
- Изучили интерфейс Spyder, включая Editor и IPython Console
- Просматривали и изменяли переменные с помощью Variable Explorer
- Визуализировали данные с помощью панели Plots, используя pandas и Matplotlib
- Профилировали код для выявления и устранения узких мест производительности
Обладая этими навыками, вы можете уверенно использовать Spyder для исследования данных, визуализации и настройки производительности в своих проектах на Python
Чтобы изучить другие инструменты и рабочие процессы в экосистеме Python, ознакомьтесь со следующими связанными ресурсами Real Python:
- Python IDEs and Code Editors (Guide)
- Editors & IDEs
- PyCharm for Productive Python Development (Guide)
- Advanced Visual Studio Code for Python Developers
- Jupyter Notebook: An Introduction
Ответы на эти вопросы могут быть для вас полезными
Является ли Spyder полноценной IDE для Python?
Да. Spyder — это бесплатная IDE с открытым исходным кодом, ориентированная на Python и предназначенная для задач в области науки о данных и научных рабочих процессов.
Нужна ли Anaconda для установки Spyder?
Нет, Anaconda не обязательна. Spyder можно установить самостоятельно через pip или как отдельное приложение, хотя многие дистрибутивы, ориентированные на работу с данными, такие как Anaconda и WinPython, включают его в комплект.
Может ли Spyder работать с Jupyter notebooks?
Да, может — с помощью дополнительного плагина. Для активного использования ноутбуков лучше подойдут Jupyter или в сравнении с Code.
Как просматривать графики в интерактивном режиме в Spyder?
Измените графический бэкенд консоли IPython с Inline на Automatic в разделе Preferences, затем повторно запустите код, чтобы открыть интерактивные окна с возможностью вращения и масштабирования.
Чем Variable Explorer полезен при анализе данных?
Variable Explorer показывает тип, размер и значение каждой переменной в текущей сессии, позволяет открывать DataFrame в табличном представлении и редактировать значения напрямую — без необходимости добавлять отладочные print-вызовы в код.


