какие задачи можно решать используя питон
Программирование на Python: нет смысла идти на платные курсы пока не разберетесь в бесплатных
Какая математическая база нужна для Python, чем он хорош для новичков и какие задачи можно решить с помощью этого языка программирования
Python часто советуют изучать тем, кто никогда раньше не программировал. Одно из его преимуществ — универсальность, за счёт которой он используется профессионалами в разных областях: от журналистики до продакт-менеджмента. Его можно применять для решения рутинных задач: например, чтобы визуализировать большой объём данных или составлять списки дел и покупок. Автор и менеджер программы «Анализ данных» в Яндекс.Практикуме Анна Чувилина рассказала как оптимизировать свой быт и работу при помощи программирования, какие библиотеки (шаблоны решений) могут использовать новички и как выбрать курс по изучению Python. Материал подготовлен Академией Яндекса
Почему Python советуют новичкам
Одно из главных преимуществ Python — низкий порог входа. Код на нём лаконичный и обычно сходу понятен даже тем, кто изучал другой язык. А подробная документация поможет разобраться в программировании с нуля.
Ресурсы для изучения Python:
Вокруг Python сформировались сообщества энтузиастов, которые пишут на этом языке. Например, в Москве есть группа Moscow Python: они проводят конференции и неформальные встречи и сотрудничают с крупными ИТ-компаниями.
Для Python существует объёмная система библиотек — готовых решений для тех или иных задач. Есть как алгоритмы для базовых математических операций, так и для сложных задач: например, распознавания картинок и звуков.
У языка много понятных приложений: его можно использовать для анализа данных и машинного обучения, бэкенда, веб-разработки, системного администрирования и игр. Конечно, при этом нужен разный набор навыков помимо программирования, но с Python можно начать осваивать почти любую предметную область.
Важно понимать, что для анализа данных язык программирования — это инструмент. Анализ данных можно проводить и в Excel, и на бумажке, а программирование — только один из вариантов того, как можно решать такие задачи.
Одно из распространённых приложений Python — работа с данными для продакт-менеджмента. Анализ данных позволяет менеджерам получать инсайты о поведении пользователей и принимать обоснованные решения. В крупных компаниях должности аналитиков и продакт-менеджеров обычно разделены, но в небольших проектах продактам нужно работать с данными самостоятельно.
Как понять, что вам нужен именно Python
Называть его «убийцей Excel» — некорректно. Многие команды и компании в России ведут весь учёт в обычных таблицах, и им этого достаточно. А Python нужен в тот момент, когда речь идет про действительно большие объемы данных. Например, у Яндекс.Музыки множество платящих пользователей, и их действия ежедневно генерируют какие-то события (лайки и прослушивания) — и терабайты данных. Хранить их в табличке Excel — из разряда фантастики.
В Python проще делать интерактивную и сложную визуализацию или проводить вычисления — для этого существуют библиотеки вроде Seaborn, matplot и Plotly. В Excel есть встроенный аппарат для решения математических задач (например, работы с данными), но для него нужно запоминать много названий операций — и работает он довольно неповоротливо. Кроме того, в Python можно быстрее и с разных сторон посмотреть на данные. Регрессию можно построить и в Excel, но зачем, когда в Python есть для этого готовые библиотеки?
Для статистических расчетов можно использовать R — люди с математическим образованием обычно осваивают его быстрее, чем Python. Однако большинству будет проще начать с Python.
Для разных задач анализа данных существуют коробочные решения. Например, Amplitude (для продуктовой аналитики), Mixpanel (для анализа поведения пользователей) Яндекс.Метрика и Google Analytics. При этом их использование часто платное.
Где применять Python, если вы не разработчик
Помимо анализа данных у языка есть и более простые приложения. Так, в учебниках по Python часто встречается задача с рассылками. В ней нужно создать рассылку, например, для людей, которые не сдали деньги на ремонт — найдя их данные в Excel-таблице. С помощью такого скрипта можно разослать письма по шаблону — и имена будут подставлены автоматически.
Python — про автоматизацию рутинных задач. Например, можно запустить скрипт, который подставляет пароли — и он автоматически откроет запароленные страницы или папки. Есть алгоритмы для того, чтобы автоматически создавать списки покупок или переименовывать фотографии определённым образом.
Люди, которые умеют писать код, придумывают такие вещи «на автомате». Например, маркетологи могут запустить скрипт для построения воронок продаж. А тестировщики — написать алгоритм, который будет подставлять данные в формы и тестировать приложения.
Если говорить про анализ данных, то многие начинают осваивать его из любопытства — чтобы найти инсайты в сфере, которую пока не исследовали. Например, можно определить социальные проблемы своего региона, анализируя опубликованную статистику. А если вы хотите через какое-то время попасть на стажировку или на работу, где нужен анализ данных, то такой кейс поможет вам показать свои навыки. Начать можно с простых, стандартных проектов, которые обычно предлагают тем, кто изучает Python.
Что нужно, чтобы выучить Python
Из математического аппарата кроме базовой арифметики для программирования ничего не нужно. Чтобы придумать, какой алгоритм использовать для решения той или иной задачи, важно структурное мышление — но это не математическая компетенция. Парадокс в том, что и развивать его нужно с помощью регулярной работы с задачами — важно быть готовым просидеть над, казалось бы, тривиальным заданием несколько часов и не отчаяться.
Для анализа данных, помимо школьной математики, понадобятся знания математической статистики и теории вероятности. Начинающему специалисту важнее всего освоить базовые понятия: уметь проверять гипотезы, знать, что такое доверительные интервалы, чем отличаются медиана и мода, понимать, как обозначать события и их вероятности.
Материалы по математике:
Тем, кто хочет заниматься анализом данных (как профессионально, так и для себя), важно развить критическое мышление. Например, нужно самому выделять критерии для сравнения объектов: тут нет какого-то стандартного решения. Ещё важно сходу видеть закономерности и аномалии в данных.
Изучать программирование и анализ данных можно и самому — я не рекомендую обращаться к платным курсам до тех пор, пока вы не посмотрели бесплатный контент.
Во-первых, он служит для профориентации: чтобы лучше понять, какие приложения есть у программирования или анализа данных для разных профессий. Во-вторых, даёт понять, сколько сил и времени нужно будет прикладывать для изучения.
Преимущества обучения на курсах в том, что на них можно получить чётко сформулированные практические задачи. Также преподаватели могут рассказать о том, как общаться с заказчиком и уточнять у него необходимую информацию.
Как выбрать образовательную программу
Выбирая образовательную программу, важно обратить внимание на преподавателей, которые его ведут или создавали для него контент, — можно посмотреть их профили на Facebook и узнать про профессиональный опыт.
Что касается цены, то по моему опыту, качество курса не всегда с ней коррелирует — поэтому ориентироваться нужно на то, сколько вам комфортно потратить на обучение.
Также стоит чётко сформулировать то, что хочется получить в результате, — и сделать это ключевым критерием для выбора. Бывают случаи, когда студенты приходят на курс по анализу данных для менеджеров и ожидают занятия по программированию — а их учат общаться с аналитиками и рассказывают общие вещи про то, как внедрять анализ данных. Зачастую проблема не в плохой организации или преподавателях, а в том, что человек сам не проверил, соответствует ли программа его задачам. Правило с постановкой целей работает не только на выбор программы, но и на обучение в целом — не стоит осваивать язык программирования, чтобы поставить галочку.
3 самых важных сферы применения Python: возможности языка
Существует множество областей применения Python, но в некоторых он особенно хорош. Разбираемся, что же можно делать на этом ЯП.
Если вы собираетесь изучать Python или совсем недавно начали его учить, вы точно задумывались, что же можно на нем сделать. Вопрос не простой, так как этот язык используется во многих сферах.
Но можно выделить 3 самых популярных направления применения Python:
Каждое из них заслуживает отдельного рассмотрения.
Веб-разработка
Относительно недавно в веб-разработке стали очень популярны Python-фреймворки, такие как Django и Flask. Они облегчают процесс написания на языке Python кода серверной части приложений. Это тот код, который запускается на сервере, а не на устройствах и браузерах пользователей (frontend-код). Если вы не знакомы с отличиями backend- и frontend-разработки, вам будет интересна заметка в конце статьи.
Зачем нужен веб-фреймворк?
Фреймворки позволяют легко и быстро создать базовую логику бэкенда. Она включает в себя сопоставление разных URL-адресов с частями Python-кода, работу с базами данных, создание HTML-представлений для отображения на устройствах пользователя.
Какой Python-фреймворк выбрать?
Django и Flask – два самых популярных веб-фреймворка, созданных для языка Python. Новичку следует выбрать один из них.
В чем разница между Django и Flask?
Другими словами, Flask – это, возможно, лучший выбор для начинающего разработчика, так как он содержит меньше компонентов. Кроме того, его стоит выбрать, если необходима тонкая настройка проекта.
Flask из-за своей гибкости лучше подходит для создания REST API.
С другой стороны, если стоит задача сделать что-то просто и быстро, вероятно, стоит выбрать Django.
Data Science: машинное обучение, анализ данных и визуализация
Прежде всего, следует разобраться, что такое машинное обучение.
Предположим, что вы хотите разработать программу, которая будет автоматически определять, что изображено на картинке.
Например, предлагая ей это изображение, вы хотите, чтобы программа опознала собаку.
А здесь она должна увидеть стол.
Возможно, вы думаете, что для решения этой задачи можно просто написать код анализа изображения. Например, если на картинке много светло-коричневых пикселей, делаем вывод, что это собака.
Или вы можете научиться определять на изображении края и границы. Тогда картинка с большим количеством прямых границ, вероятно, окажется столом.
Однако это довольно сложный и непродуманный подход. Что делать, если на фотографии изображена белая собака без коричневых пятен? Или если на картинке круглый стол?
Здесь вступает в игру машинное обучение. Обычно оно реализует некоторый алгоритм, который позволяет автоматически обнаруживать знакомый шаблон среди входных данных.
Вы можете предложить алгоритму машинного обучения, скажем, 1000 изображений собаки и 1000 снимков столов. Он выучит разницу между этими объектами. Затем, когда вы дадите ему новую картинку со столом или собакой, он сможет определить, что именно на ней изображено.
Это очень похоже на то, как учатся маленькие дети. Каким именно образом они узнают, что одна вещь похожа на стол, а другая – на собаку? Из большого количества примеров.
Вы ведь не даете ребенку четкую инструкцию: «Если нечто пушистое и светло-каштановое, значит, это собака». Напротив, вы говорите: «Это собака. Это тоже собака. И это. А это стол. И это тоже стол».
Алгоритмы машинного обучения в основном работают сходным образом.
Эта технология может применяться:
Среди самых популярных алгоритмов машинного обучения, о которых вы, вероятно, слышали:
Любой из вышеперечисленных алгоритмов может быть использован для решения задачи с собаками и столами на изображениях.
Способы применения Python для машинного обучения
Существуют разные библиотеки и фреймворки для машинного обучения на Python. Две самые популярные – это scikit-learn и TensorFlow.
Новичкам в машинном обучении лучше начать со scikit-learn. Более опытным разработчикам, которые столкнулись с проблемами эффективности, стоит присмотреться к TensorFlow.
Как изучать машинное обучение?
Для ознакомления с основами предмета прекрасно подойдут курсы Стэнфорда или Калтеха (Калифорнийский технический институт). Следует отметить, что для понимания материала требуются базовые знания в области математического анализа и линейной алгебры.
Затем можно переходить к практике на платформе Kaggle. Это сайт, на котором исследователи в области data science создают различные алгоритмы машинного обучения для решения реальных проблем. Победители получают солидные денежные призы. У них также есть отличные учебники для начинающих.
Анализ и визуализация данных
Чтобы понять, о чем идет речь, следует обратиться к простому примеру.
Предположим, вы работаете аналитиком данных в компании, которая продает товары через Интернет. Вы можете получить такую гистограмму:
Из этого графика можно понять, что в это воскресенье мужчины купили более 400 единиц продукта, а женщины – около 350. Ваша задача, как аналитика, придумать несколько возможных объяснений такой разницы.
Один из очевидных вариантов заключается в том, что этот продукт больше популярен у мужчин, чем у женщин. Другое объяснение может быть связано со слишком маленьким размером выборки, который привел к недостоверным результатам. Третий вариант – мужчины по какой-либо причине склонны покупать продукт по воскресеньям.
Чтобы разобраться, в чем дело, вы можете просмотреть данные за всю неделю и составить новый график.
Из схемы видно, что различие довольно устойчиво и проявляется не только по воскресеньям.
Можно сделать вывод, что наиболее убедительным объяснением является принципиально большая заинтересованность мужчин в этом продукте.
С другой стороны, график за неделю может выглядеть вот так.
Как здесь объяснить большую разницу в продажах в воскресенье?
Вы можете предположить, что мужчины в конце недели почему-то склонны покупать больше. Или это может оказаться простым совпадением.
Это упрощенный пример того, как выглядит реальный анализ данных.
Настоящие аналитики, например, в Google или Microsoft, делают то же самое, только их работа более сложная и комплексная.
Они используют язык запросов SQL, чтобы извлекать данные из баз. Затем для анализа и визуализации применяются специальные инструменты, например, Mathplotlib (для Python) или D3.js (для JavaScript).
Способы применения Python для анализа и визуализации данных
Одна из самых популярных библиотек для визуализации – Mathplotlib.
Новичкам следует начинать обучение с нее по двум причинам:
Как изучать анализ данных на Python?
Сначала следует изучить основы. Вот хорошее видео, посвященное данной теме:
Закрепить знания поможет курс по визуализации данных на Pluralsight. Получить его бесплатно можно, подписавшись на 10-дневную пробную версию.
Чтобы разобраться в основах статистики, пройдите курсы на Coursera и Khan Academy.
Автоматизация процессов
Одна из самых популярных сфер применения Python – это написание небольших скриптов для автоматизации различных рабочих операций и процессов.
В качестве примера можно привести систему обработки электронной почты. Для сбора статистики и анализа данных требуется подсчитывать количество входящих писем, содержащих определенные ключевые слова. Это можно делать вручную, или же написать простой скрипт, который все посчитает сам.
Есть несколько причин применения Python для задач автоматизации:
Встроенные приложения
Python является самым популярным языком программирования для Raspberry Pi.
Python и игры
Несмотря на то, что существует библиотека PyGame, популярность применения Python для создания игр невелика. Для серьезных проектов он не подходит.
Чтобы создавать хорошие мультиплатформенные игры, стоит присмотреться к одному из самых популярных движков Unity, работающем с языком C#.
Десктопные приложения
Вы можете создать парочку, используя Tkinter, но это не самое популярное решение.
Для этой задачи лучше использовать такие языки, как Java, C# и C++.
С недавних пор некоторые компании начали использовать для создания настольных приложений JavaScript. Например, десктопное приложение Slack было создано с помощью JavaScript-фреймворка Electron.
Преимущество написания настольных приложений на JavaScript заключается в том, что можно повторно использовать код веб-версии.
Python 3 или Python 2
Python 3 – это более современный и популярный выбор.
Пояснение о backend- и frontend-коде
Предположим, вы хотите сделать нечто, напоминающее Инстаграм.
Вам необходимо создать frontend-код для каждого типа устройств, который должен поддерживаться. Для этого могут использоваться разные языки программирования, например:
На каждом типе устройства будет запускаться свой набор кода. Он определит формат приложения, его внешний вид и т.д.
Однако вам требуется хранить личные данные и фотографии. Вы хотите использовать для этого свой сервер, а не устройства пользователей, чтобы подписчики могли просматривать фотографии друг друга.
Для решения этой задачи потребуется backend-код (server-side). Он будет выполнять следующие операции:
Сферы применения языка Python
Python – это не просто язык программирования. Это целый мир со своими возможностями, трудными задачами и способами их решений. Новичку, который только начал знакомство с языком, довольно трудно осознать, в каких областях могут пригодиться его знания.
На самом деле, выбор довольно огромный. Python с каждым днем всё активнее завоевывает рынок, и на сегодняшний день он занимает одну из лидирующих позиций среди все остальных языков, соревнуясь за первенство с «монолитами» индустрии.
Конечно, Питон никогда не сможет заменить низкоуровневые C и C++, ведь именно они способны практически полностью контролировать процессор, не займет место Java, предназначенный для разработки сложнейших приложений. Также, Python нельзя назвать аналогом JavaScript, который поддерживается огромной долей сайтов.
Но почему Питон всё ещё движется к своему Олимпу? По какой причине его не вытиснили конкуренты? Ведь даже сам создатель Python, Гвидо ван Россум, в далеком 1989 году заявил, что не пророчит своему языку популярность на рынке.
На самом деле, с Питоном всё максимально прозрачно – он простой и универсальный, поэтому может применяться для работы по многим направлениям.
Web-разработка
На Питоне можно делать весь backend интернет-ресурса, который будет выполняться на сервере. Делается это при помощи специальных фреймворков (Django и Flask), написанных на этом языке. С их помощью упрощается процесс обработки адресов, обращение к базам данный и создание HTML, отображающихся на пользовательских страницах.
На сегодняшний день сторонними разработчиками написано большое количество дополнительного инструментария, направленно на реализацию сетевых приложений. К примеру, инструмент HTMLGen позволяет создавать готовые классы под страницу на HTML, используя для этого язык Питон. А пакет mod_python облегчает запуск сценариев Apache, обеспечивая при этом стабильную работу шаблонов Python Server Pages.
Графический интерфейс
Если говорить о визуальной составляющей в сфере IT, то и здесь Python может показать себя как вполне эффективный инструмент, решающий массу задач. Создавая современные графические интерфейсы на Питоне, можно легко подстроиться под стилистику ОС, в чьей среде создается приложение. Специально для этих целей были созданы дополнительные библиотеки для построения интерфейса – PythonCard и Dabo, облегчающие процесс работы.
Базы данных
Разработчики современной версии Питона создали максимально простой и понятный доступ практически к любым базам данных. Так, на сегодняшний день, в рабочей среде языка находится программный интерфейс, который позволяет пользоваться базами прямиком из сценария с помощью запросов SQL. Также, код, написанный на Python, может с минимальными доработками использоваться для баз данных MySQL и Oracle.
Системное программирование
Ещё одна монетка в копилку возможностей Python – это интерфейсы языка, которые позволяют управлять службами операционных систем Windows, Linux и др. Благодаря этому, Питон открывает массу возможностей для создания портативных программ. Не секрет, что этот язык применяется для написания приложений, используемых системными администраторами. Таким образом, Python ускоряет поиск и открытие файлов, запуск приложений, облегчает вычисления и многое другое.
Сложные вычислительные процессы
Это та самая сфера, где Питон может потягаться в своих возможностях с FORTRAN или C++. Специальное расширение NumPy, написанное для математических расчётов, прекрасно функционирует с массивами, интерфейсами уравнений и другими данными. Как только расширение устанавливается на компьютер, Python без проблем проходит интеграцию с библиотеками формул.
Но NumPy предназначен не только для вычислений. Помимо своей основной задачи, с его помощью можно создавать анимированные элементы и прорисовывать объекты в среде 3D, производя при этом параллельные вычисления. Например, популярное дополнение ScientificPython может похвастаться собственными библиотеками, которые созданы для вычислительных процессов в сфере науки.
Помимо расчётов, Python позволяет визуализировать полученные данные, что довольно удобно.
Машинное обучение
Помимо основного инструментария, у Python есть дополнительные библиотеки и фреймворки, позволяющие работать в области машинного обучения. Особой популярностью пользуются scikit-learn и TensorFlow. Scikit-learn отличается тем, что в него уже встроены самые распространенные алгоритмы обучения. TensorFlow, в свою очередь – это низкоуровневая библиотека, которая открывает возможности для создания алгоритмов пользователя.
Процессы машинного обучения, основанные на языке программирования Python, помогают реализовывать системы распознавания лиц и голоса, создавать нейронные сети, глубокое обучение и многое другое.
Автоматизация процессов
Сегодня одним из самых востребованных способов использования языка Питон является создание мелких скриптов, автоматизирующих некоторые рабочие процессы. Например, можно написать вполне простой код, который будет «самостоятельно» работать с письмами на электронной почте. Если человеку необходимо отсортировывать письма с определенными ключевыми словами или фразами, то вручную это сделать довольно проблематично, а вот скрипт справится с этой задачей без проблем.
Почему для этого лучше всего использовать именно Python? Во-первых, он отличается вполне простым синтаксисом, который позволяет с легкостью разрабатывать сценарии. А во-вторых, сам код не проходит компиляцию перед запуском, что заметно облегчает процесс отладки.
Игровая индустрия
Изучая Python, не стоит бояться пробовать свои силы, выполняя простые задачи, создавая элементарные скрипты, даже если они кажутся вам слишком шаблонными. Ведь только таким образом вы сможете подобрать для себя подходящее направление, в котором захотите развиваться и строить карьеру.