Что именно вы можете делать с Python? Вот 3 основных приложения Python.

Если вы думаете об изучении Python - или если вы недавно начали его изучать - вы можете спросить себя:

«Для чего именно я могу использовать Python?»

На этот вопрос сложно ответить, потому что для Python существует очень много приложений.

Но со временем я заметил, что есть 3 основных популярных приложения для Python:

  • Веб-разработка
  • Наука о данных - включая машинное обучение, анализ данных и визуализацию данных
  • Сценарии

Поговорим о каждом из них по очереди.

Веб-разработка

Веб-фреймворки, основанные на Python, такие как Django и Flask , в последнее время стали очень популярными для веб-разработки.

Эти веб-фреймворки помогают создавать серверный код (бэкэнд-код) на Python. Это код, который работает на вашем сервере, а не на устройствах пользователей и в браузерах (интерфейсный код). Если вы не знакомы с разницей между внутренним и внешним кодом, см. Мою сноску ниже.

Но подождите, зачем мне веб-фреймворк?

Это потому, что веб-фреймворк упрощает построение общей логики серверной части. Это включает сопоставление различных URL-адресов фрагментам кода Python, работу с базами данных и создание файлов HTML, которые пользователи видят в своих браузерах.

Какую веб-платформу Python мне следует использовать?

Django и Flask - две из самых популярных веб-фреймворков Python. Я бы порекомендовал использовать один из них, если вы только начинаете.

В чем разница между Django и Flask?

На эту тему есть отличная статья Гарета Дуайера, поэтому позвольте мне процитировать ее здесь:

te>

Основные контрасты:

  • Flask обеспечивает простоту, гибкость и детальный контроль. Это бесхитростный (он позволяет вам решать, как вы хотите реализовать вещи).
  • Django предоставляет комплексный интерфейс: вы получаете панель администратора, интерфейсы базы данных, ORM [объектно-реляционное сопоставление] и структуру каталогов для ваших приложений и проектов из коробки.

Вам, вероятно, следует выбрать:

  • Flask, если вы сосредоточены на опыте и возможностях обучения или хотите больше контролировать, какие компоненты использовать (например, какие базы данных вы хотите использовать и как вы хотите с ними взаимодействовать).
  • Django, если вы сосредоточены на конечном продукте. Особенно, если вы работаете над простым приложением, например, новостным сайтом, электронным магазином или блогом, и хотите, чтобы всегда был единый очевидный способ ведения дел.

te>

Другими словами, если вы новичок, Flask, вероятно, будет лучшим выбором, потому что в нем меньше компонентов, с которыми приходится иметь дело. Кроме того, Flask - лучший выбор, если вам нужно больше настроек.

С другой стороны, если вы хотите создать что-то прямолинейное, Django, вероятно, позволит вам сделать это быстрее.

Теперь, если вы хотите изучить Django, я рекомендую книгу под названием Django for Beginners. Вы можете найти это здесь.

Вы также можете найти здесь бесплатные образцы глав этой книги.

Ладно, перейдем к следующей теме!

Наука о данных - включая машинное обучение, анализ данных и визуализацию данных

Прежде всего, давайте рассмотрим , что машинное обучение является .

Я думаю, что лучший способ объяснить, что такое машинное обучение, - это привести простой пример.

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

Итак, учитывая это изображение ниже (Рисунок 1), вы хотите, чтобы ваша программа распознала, что это собака.

Original text


Учитывая этот другой ниже (рисунок 2), вы хотите, чтобы ваша программа распознала, что это таблица.

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

Или, может быть, вы сможете выяснить, как определить края изображения. Тогда, можно сказать, если прямых краев много, то это стол.

Однако такой подход довольно быстро усложняется. Что, если на картинке есть белая собака без каштановой шерсти? Что делать, если на картинке показаны только круглые части стола?

Здесь на помощь приходит машинное обучение.

Машинное обучение обычно реализует алгоритм, который автоматически обнаруживает шаблон в заданных входных данных.

Вы можете передать алгоритму машинного обучения, скажем, 1000 изображений собаки и 1000 изображений стола. Затем он узнает разницу между собакой и столом. Когда вы дадите ему новое изображение собаки или стола, он сможет распознать, что это за изображение.

Я думаю, это чем-то похоже на то, как ребенок учится новому. Как ребенок узнает, что одно похоже на собаку, а другое на стол? Наверное, из кучи примеров.

Вероятно, вы не скажете ребенку прямо: «Если что-то пушистое и у него светло-каштановые волосы, то это, вероятно, собака».

Вы, вероятно, просто сказали бы: «Это собака. Это тоже собака. А это стол. Это тоже стол ».

Алгоритмы машинного обучения работают примерно так же.

Вы можете применить ту же идею к:

  • системы рекомендаций (например, YouTube, Amazon и Netflix)
  • распознавание лица
  • распознавание голоса

среди других приложений.

Популярные алгоритмы машинного обучения, о которых вы, возможно, слышали, включают:

  • Нейронные сети
  • Глубокое обучение
  • Опорные векторные машины
  • Случайный лес

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

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 на эту тему:

Я также закончил полный курс по этой теме на Pluralsight, который вы можете пройти бесплатно, подписавшись на их 10-дневную бесплатную пробную версию.

Я бы рекомендовал их обоих.

После изучения основ анализа и визуализации данных также будет полезно изучение основ статистики на таких веб-сайтах, как Coursera и Khan Academy.

Сценарии

Что такое скриптинг?

Сценарии обычно относятся к написанию небольших программ, предназначенных для автоматизации простых задач.

Итак, позвольте мне привести здесь пример из моего личного опыта.

Раньше я работал в небольшом стартапе в Японии, где у нас была система поддержки по электронной почте. Это была система, позволяющая нам отвечать на вопросы, которые клиенты отправляли нам по электронной почте.

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

Мы могли бы сделать это вручную, но вместо этого я написал простую программу / простой скрипт для автоматизации этой задачи.

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

А как насчет встроенных приложений?

Я не специалист по встроенным приложениям, но знаю, что Python работает с Rasberry Pi. Кажется, это популярное приложение среди любителей оборудования.

А что насчет игр?

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

Скорее, я бы порекомендовал начать работу с Unity с C #, который является одним из самых популярных игровых движков. Он позволяет создавать игры для многих платформ, включая Mac, Windows, iOS и Android.

А как насчет настольных приложений?

Вы можете создать его на Python, используя Tkinter, но это тоже не самый популярный вариант.

Напротив, похоже, что для этого более популярны такие языки, как Java, C # и C ++.

В последнее время некоторые компании начали использовать JavaScript и для создания настольных приложений.

Например, настольное приложение Slack было построено с использованием чего-то под названием Electron. Он позволяет создавать настольные приложения с помощью JavaScript.

Лично, если бы я создавал настольное приложение, я бы выбрал вариант JavaScript. Он позволяет повторно использовать часть кода из веб-версии, если она у вас есть.

Однако я тоже не эксперт по настольным приложениям, поэтому, пожалуйста, дайте мне знать в комментарии, если вы не согласны или согласны со мной по этому поводу.

Python 3 или Python 2?

Я бы порекомендовал Python 3, так как он более современный и на данный момент более популярный вариант.

Сноска: примечание о внутреннем коде и внешнем коде (на случай, если вы не знакомы с терминами):

Допустим, вы хотите сделать что-то вроде Instagram.

Затем вам нужно будет создать интерфейсный код для каждого типа устройства, которое вы хотите поддерживать.

Вы можете использовать, например:

  • Swift для iOS
  • Java для Android
  • JavaScript для веб-браузеров

Каждый набор кода будет работать на каждом типе устройства / браузера. Это будет набор кода, который определяет, каким будет макет приложения, как должны выглядеть кнопки при нажатии на них и т. Д.

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

Вот где вступает в действие код бэкэнда / серверный код. Вам нужно будет написать некоторый бэкэнд-код, чтобы делать такие вещи, как:

  • Следите за тем, кто за кем следит
  • Сжимайте фотографии, чтобы они не занимали много места
  • Рекомендуют фотографии и новые учетные записи для каждого пользователя в обнаружении функции

Итак, в этом разница между внутренним и внешним кодом.

Кстати, Python - не единственный хороший выбор для написания бэкэнд / серверного кода. Есть много других популярных вариантов, включая Node.js, основанный на JavaScript.

Понравилась эта статья? Тогда вам также может понравиться мой канал на YouTube.

У меня есть образовательный канал на YouTube под названием CS Dojo с более чем 440 000 подписчиков, где я создаю больше контента, подобного этой статье.

Например, вам могут понравиться эти видео:

В любом случае, спасибо, что прочитали мою статью!