Что именно вы можете сделать с Python? Вот три основных применения Python.
Если вы думаете об изучении Python или недавно начали его изучать, вы можете спросить себя:
«Для чего конкретно я могу использовать Python?»
На этот вопрос сложно ответить, потому что для Python так много приложений.
Но со временем я заметил, что есть 3 основных популярных приложения для Python:
- Веб-разработка
- Data Science — включая машинное обучение, анализ данных и визуализацию данных
- Scripting (автоматизация процессов)
Давайте поговорим о каждом из них по очереди.
Web Development (Веб-разработка)
Веб-фреймворки, основанные на Python, такие как Django и Flask, в последнее время стали очень популярными для веб-разработки.
Эти веб-фреймворки помогают вам создавать код на стороне сервера (внутренний код) в Python. Это код, который выполняется на вашем сервере, а не на пользовательских устройствах и браузерах (интерфейсный код). Если вы не знакомы с разницей между внутренним кодом и внешним кодом.
Но подождите, зачем мне веб-фреймворк (web framework)?
Framework- это веб-инфраструктура, которая облегчает создание общей логики бэкэнда. Она включает сопоставление различных URL-адресов с частями кода Python, работу с базами данных и генерацию HTML-файлов, которые пользователи видят в своих браузерах.
Какой веб-фреймворк Python мне следует использовать?
Django и Flask являются двумя наиболее популярными веб-фреймворками Python. Я бы рекомендовал использовать один из них, если вы только начинаете.
В чем разница между Django и Flask?
Есть прекрасная статья на эту тему Гарета Двайера, поэтому позвольте мне процитировать ее здесь:
<начало цитаты>
Основные отличия:
- Flask обеспечивает простоту, гибкость и полный контроль. Он позволяет вам решить, как вы хотите реализовать вещи).
- Django предоставляет комплексные возможности: вы получаете из коробки административную панель, интерфейсы базы данных, ORM [объектно-реляционное отображение] и структуру каталогов для ваших приложений и проектов.
Вы, вероятно, должны выбрать:
- Flask, если вы сосредоточены на опыте и возможностях обучения, или если вы хотите больше контролировать, какие компоненты использовать (например, какие базы данных вы хотите использовать и как вы хотите взаимодействовать с ними).
- Django, если вы сосредоточены на конечном продукте. Особенно, если вы работаете над простым приложением, таким как новостной сайт, интернет-магазин или блог, и вы хотите, чтобы всегда был один, очевидный способ сделать что-то.
<конец цитаты>
Другими словами, если вы новичок, Flask, вероятно, будет лучшим выбором, поскольку в нем меньше компонентов, с которыми приходится иметь дело. Кроме того, Flask — лучший выбор, если вы хотите больше настроек.
С другой стороны, если вы хотите создать что-то просто и быстро, Django, вероятно, позволит вам быстрее этого добиться.
Теперь, если вы хотите изучить Django, я рекомендую книгу под названием Django для начинающих. Вы можете найти это здесь.
Хорошо, давайте перейдем к следующей теме!
Data Science — включая машинное обучение, анализ данных и визуализацию данных
Прежде всего, давайте рассмотрим, что такое машинное обучение.
Я думаю, что лучший способ объяснить, что такое машинное обучение, — это показать вам простой пример.
Допустим, вы хотите разработать программу, которая автоматически определяет, что на картинке.
Итак, учитывая эту картинку ниже (Рисунок 1), вы хотите, чтобы ваша программа распознала, что это собака.
Здесь ваша программа распознала, что это стол.
Вы можете сказать, ну, я могу просто написать код для этого. Например, если на изображении много светло-коричневых пикселей, то мы можем сказать, что это собака.
Или, может быть, вы можете выяснить, как обнаружить края на изображении. Тогда, вы можете сказать, что если есть много прямых ребер, то это стол.
Тем не менее, это неверный подход. Что если на фото белая собака без коричневых пятен? Что, если на рисунке показаны только круглые части стола?
Здесь вступает в игру машинное обучение.
Машинное обучение обычно реализует алгоритм, который автоматически обнаруживает шаблон в заданном входном сигнале.
Вы можете дать, например, 1000 изображений собаки и 1000 изображений стола алгоритму машинного обучения. Затем он узнает разницу между собакой и столом. Когда вы дадите ему новое изображение собаки или стола, он сможет узнать, кто это.
Я думаю, что это немного похоже на то, как ребенок учится новым вещам. Как ребенок узнает, как выглядит собака, а как стол? Вероятно, из множества примеров.
Вы, вероятно, явно не говорите ребенку: «Если что-то пушистое и имеет светло-каштановые волосы, то это, вероятно, собака».
Вы, вероятно, просто скажете: «Это собака. Это тоже собака. И этот стол. Это тоже стол.
Алгоритмы машинного обучения работают почти так же.
Вы можете применить ту же идею к:
- системы рекомендаций (например, YouTube, Amazon и Netflix)
- распознавание лица
- распознавание голоса
и среди других приложений.
Популярные алгоритмы машинного обучения, о которых вы, возможно, слышали:
- Нейронные сети
- Глубокое обучение
- Метод опорных векторов
- Random forest
Вы можете использовать любой из вышеперечисленных алгоритмов для решения задачи с маркировкой изображения, которую я объяснил ранее.
Python для машинного обучения
Существуют популярные библиотеки для машинного обучения и платформы для Python. Два самых популярных из них — это scikit-learn и TensorFlow.
- Scikit-Learn поставляется с некоторыми популярными встроенными алгоритмами для машинного обучения. Я упомянул некоторые из них выше.
- TensorFlow — это более низкоуровневая библиотека, которая позволяет создавать собственные алгоритмы машинного обучения.
Если вы только начинаете работать над проектом машинного обучения, я бы рекомендовал вам начать с scikit-learn. Более опытным разработчикам я бы посоветовал изучать TensorFlow.
Как мне научиться машинному обучению?
Для изучения основ машинного обучения, я бы порекомендовал курсы машинного обучения в Стэнфорде или в Калифорнийском Технологическом Институте.
Обратите внимание, что вам нужны базовые знания математического анализа и линейной алгебры, чтобы понять некоторые материалы этих курсов.
Затем я буду практиковать то, что вы узнали на одном из этих курсов с Kaggle. Это веб-сайт, на котором люди соревнуются в создании лучшего алгоритма машинного обучения для конкретной задачи. У них также есть хорошие учебники для начинающих.
А как насчет анализа данных и визуализации данных?
Чтобы помочь вам понять, как они могут выглядеть, приведу здесь простой пример.
Допустим, вы работаете в компании, которая продает некоторые продукты в Интернете.
Затем, как аналитик данных, вы можете нарисовать гистограмму продаж.
Из этого графика мы можем сказать, что мужчины купили более 400 единиц некоторого продукта, а женщины купили около 350 единиц этого продукта именно в это воскресенье.
Как аналитик данных, вы можете придумать несколько возможных объяснений этой разницы.
Одно очевидное возможное объяснение состоит в том, что этот продукт более популярен у мужчин, чем у женщин. Другое возможное объяснение может быть в том, что размер выборки слишком мал, и это различие было вызвано случайно. И еще одним возможным объяснением может быть то, что мужчины склонны покупать этот продукт чаще только по воскресеньям по какой-то причине.
Чтобы понять, какое из этих объяснений является правильным, вы можете нарисовать другой график, подобный этому.
Вместо того, чтобы показывать данные только за воскресенье, мы смотрим на данные за целую неделю. Как вы можете видеть из этого графика, мы видим, что эта разница довольно постоянна в разные дни.
Из этого небольшого анализа вы можете сделать вывод, что наиболее убедительным объяснением этого различия является то, что этот продукт просто более популярен среди мужчин, чем среди женщин.
С другой стороны, что, если вместо этого вы увидите такой график?
Тогда чем объясняется разница в воскресенье?
Можно предположить, что мужчины почему-то покупают больше этого продукта только в воскресенье. Или, возможно, это было просто совпадение, что мужчины купили этот товар больше в воскресенье.
Итак, это упрощенный пример того, как анализ данных может выглядеть в реальном мире.
Работа по анализу данных, которую я выполнял, работая в Google и Microsoft, была очень похожа на этот пример — только более сложная. Я фактически использовал Python в Google для такого анализа, а JavaScript использовал в Microsoft.
Я использовал SQL в обеих этих компаниях для получения данных из наших баз данных. Затем для анализа и визуализации применяются специальные инструменты Python и Matplotlib (в Google) или JavaScript и D3.js (в Microsoft) для визуализации и анализа этих данных.
Анализ данных / визуализация с помощью Python
Одна из самых популярных библиотек для визуализации данных — Matplotlib.
Это хорошая библиотека для начала, потому что:
- С чего начать
- На этом основаны некоторые другие библиотеки, такие как seaborn. Итак, изучение Matplotlib поможет вам изучить эти и другие библиотеки позже.
Как мне научиться анализировать / визуализировать данные с помощью Python?
Сначала вы должны изучить основы анализа и визуализации данных. Когда я искал хорошие ресурсы для этого в Интернете, я не мог найти ни одного. Итак, я закончил делать видео на YouTube на эту тему:
Введение в анализ данных / визуализация с помощью Python и Matplotlib
Автоматизация процессов (Scripting)
Что такое автоматизация процессов?
Под автоматизацией процессов обычно понимается написание небольших программ, предназначенных для автоматизации простых задач.
Итак, позвольте мне привести пример из моего личного опыта здесь.
Я работал в небольшом стартапе в Японии, где у нас была система поддержки по электронной почте. Это была система для нас, чтобы отвечать на вопросы клиентов, отправленных нам по электронной почте.
Когда я работал там, у меня была задача подсчитать количество писем, содержащих определенные ключевые слова, чтобы мы могли проанализировать полученные письма.
Мы могли бы сделать это вручную, но вместо этого я написал простую программу / простой скрипт для автоматизации этой задачи.
Тогда мы использовали Ruby, но Python также является хорошим языком для такого рода задач. Python подходит для этого типа задач в основном потому, что он имеет относительно простой синтаксис и на нем легко писать. Также можно быстро написать что-нибудь маленькое и протестировать.
А как насчет встроенных приложений?
Я не эксперт по встроенным приложениям, но знаю, что Python работает с Rasberry Pi. Это вроде одна из популярных железок среди любителей радиоборудования.
А как насчет игр на Python?
Вы можете использовать библиотеку PyGame для разработки игр, но это не самый популярный игровой движок. Вы могли бы использовать его для создания хобби-проекта, но я лично не выбрал бы его, если вы серьезно относитесь к разработке игр.
Скорее, я бы рекомендовал начать работу с Unity и с C #, который является одним из самых популярных игровых движков. Это позволяет создавать игры для многих платформ, включая Mac, Windows, iOS и Android.
А как насчет настольных приложений на Python?
Вы можете сделать это с помощью Python, используя Tkinter, но он также не является самым популярным выбором.
Вместо этого, компании начали использовать языки как Java, C # и C ++ так как они более популярны для этого.
В последнее время некоторые компании также начали использовать JavaScript для создания настольных приложений.
Например, настольное приложение Slack было построено с использованием фреймворка Electron. Это позволяет создавать настольные приложения с помощью JavaScript.
Лично, если бы я создавал настольное приложение, я бы выбрал JavaScript. Это позволяет вам повторно использовать часть кода из веб-версии, если она у вас есть.
Python 3 или Python 2?
Я бы порекомендовал Python 3, поскольку он более современный и более популярный на данный момент.
Примечание: о Back-end и Fron-tend коде (на тот случай, если вы не знакомы с терминами):
Допустим, вы хотите сделать что-то вроде Instagram.
Вам нужно будет создать front-end code для каждого типа устройства, которое вы хотите поддерживать.
Вы можете использовать, например:
- Swift for iOS
- Java for Android
- JavaScript for web browsers
Каждый набор кода будет работать на каждом типе устройства / браузера. Это будет набор кода, который определяет, каким будет макет приложения, как должны выглядеть кнопки при их нажатии и т. Д.
Однако вам все равно понадобится возможность хранить информацию и фотографии пользователей. Вы захотите хранить их на своем сервере, а не только на устройствах своих пользователей, чтобы подписчики каждого пользователя могли просматривать его / ее фотографии.
Вот тут-то и появляется бэкэнд-код / код на стороне сервера. Вам нужно написать некоторый бэкэнд-код, чтобы сделать что-то вроде:
- Следить за добавлениями в друзья и подписки
- Сжимать фотографии, чтобы они не занимали много места для хранения
- Рекомендовать фотографии и новые аккаунты каждому пользователю
Итак, в этом и заключается разница между Back-end и Fron-tend кодом.
Кстати, Python — не единственный хороший выбор для написания кода серверного кода. Есть много других популярных вариантов, включая Node.js, который основан на JavaScript.