Этот туториал — отправная точка моего большого проекта — «От нуля до практика машинного обучения (ML)». Основная идея состоит в том, чтобы научить всех Python и ML, независимо от их образования.

Это руководство предназначено для всех, кто интересуется Python. Особенно для тех, кто только начинает и не может перейти от намерения к действию. Вы здесь, что означает, что вы серьезно относитесь к изучению Python, и я ценю это.

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

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

Потому что Python — это мощный и популярный язык программирования общего назначения. И самое главное, Python разработан в соответствии с одобренной OSI лицензией с открытым исходным кодом, что позволяет свободно использовать и распространять его даже в коммерческих целях.

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

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

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

Я рад поделиться с вами своим путешествием по Python и показать вам путь от полного новичка до практикующего машинного обучения.

А попутно я поделюсь с вами некоторыми своими проектами на Python — такими как анализ научных статей о COVID-19, создание приложения для повышения производительности, отслеживание веса с нуля на Python и многое другое. Я считаю, что каждый из них может предложить что-то интересное и новое.

Но прежде чем мы погрузимся в эти проекты, мы хотим понять следующие темы:

  • Часть 0. Стандартные математические операции (+, -, *, /)
  • Часть 1. Привет, мир!
  • Часть 2. Переменные и их типы
  • Часть 3. Комментарии и как их писать
  • Часть 4. Списки и несколько полезных операций с ними
  • Часть 5. Циклы (for, while)
  • Часть 6. Функции

Здесь мы начинаем наше путешествие по Python…

Часть 0. Стандартные математические операции

Независимо от того, работаете ли вы непосредственно в скрипте Python (.py) или в интерактивном блокноте Jupyter (.ipynb), вы можете одинаково хорошо использовать код.

Я буду использовать Jupyter Notebook. Вот очень краткое руководство по установке Jupyter Notebook:

  1. Скачать Анаконда. Рекомендуется загрузить последнюю версию Anaconda Python 3 (в настоящее время Python 3.7).
  2. Установите загруженную версию Anaconda, следуя инструкциям на странице загрузки.
  3. Поздравляем, вы установили Jupyter Notebook! Чтобы запустить ноутбук, просто введите терминал:
jupyter notebook

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

Далее я покажу, как выполнять стандартные математические операции в Python. Это так же просто, как взять два числа или переменные и выполнить желаемую операцию следующим образом.

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

Это покажет индикацию In [x] и Out [x] для ввода и вывода заданного числа.

Совет для профессионалов.Вместо того, чтобы нажимать эту кнопку, вы можете нажать SHIFT+ВВОД (горячая клавиша), чтобы выполнить данную ячейку. Это облегчит вашу жизнь в будущем.

Часть 1. Привет, мир!

Теперь мы знаем, как выполнять эти основные операции. Следующим шагом будет print кое-что. Самая естественная фраза — Hello World!

Всем известно, что для того, чтобы стать программистом, нужно написать программу, которая поприветствует мир, т. е. Hello World программу. Для этого в Python мы можем использовать команду print(object).

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

Поздравляем! Теперь вы официально программист!

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

Часть 2. Переменные и их типы

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

Давайте поговорим о стандартных типах переменных в Python:

  • Число (Целое как 5, Плавающее как 3,1415 — число похоже на целое, но имеет десятичную часть). Есть также длинные и сложные числа, но, насколько мне известно, они используются реже.
  • Строка (пример: «Hello World!» — строка — это последовательность/набор символов. Предложение состоит из букв, поэтому строка состоит из символов. Строковое значение — это любое число между одинарным или двойным цитаты)
  • Список (тип, который содержит элементы, разделенные запятыми, заключенные в квадратные скобки [ ], элементы могут быть различными по типу! Это большая разница с массивами в языке C .Пример: [1, ‘2’, 3], список можно модифицировать/изменить)
  • Кортеж (аналогично списку, заключенному в круглые скобки ( ), не может быть обновлен. Пример: (1, ‘2’, 3))
  • Словарь (аналогично списку, но вместо индексов используются пары ключ-значение, заключенные в фигурные скобки { }, ключ обычно представляет собой число или строку, но соответствующее значение может быть любым объектом Python. Пример: {'name': 'Harry Potter', 'profession':'magician', 'dept': 'Gryffindor'} )
  • Я бы также добавил логическое значение, которое может принимать значения True или False. Этот тип переменной очень удобен для проверки заданного условия. Например, если a больше, чем b, или если данный файл существует в данной папке/каталоге.

Как проверить тип переменной?

Чтобы проверить тип любой переменной, мы просто используем команду type() следующим образом:

Вывод может быть, например, int, float, str или list для целых чисел, чисел с плавающей запятой, строк или списков соответственно.

Как преобразовать один тип в другой?

Мы можем захотеть изменить тип переменной. Для этого мы должны использовать соответствующее имя типа для преобразования. Например, если мы хотим преобразовать float → int, мы можем использовать int() следующим образом:

Имейте в виду, что преобразование числа с плавающей запятой в целое число может полностью обрезать десятичную часть, поэтому мы можем потерять важную информацию, например:

Мы также можем преобразовать числа в строки и обратно, используя str(), или строки в числа следующим образом:

Однако, если строка не является числом, ее нельзя преобразовать в число:

Однако можно получить число, соответствующее данному символу.

Примечание.Существует способ преобразовать символ в число с помощью команды ord() — это даст число данного символа.

Компьютеры хранят данные в виде чисел. Даже такие символы, как a, b, k, s и т. д., сохраняются как числа. Итак, у каждого символа есть свой соответствующий номер. Заинтересованный читатель может захотеть взглянуть на таблицу ASCII, стандарт кодирования символов для электронной связи.

Несколько слов о List VS. Кортеж VS. Словарь

Список может быть обновлен, в то время как кортеж не может быть обновлен. Например, давайте создадим две фиктивные переменные (список и кортеж) и попробуем изменить их, чтобы увидеть допустимый синтаксис.

Результат будет [1, 2, 3].

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

Та же самая процедура с кортежем приведет к ошибке, потому что нам не разрешено обновлять кортеж.

Вывод дает следующее исключение:
TypeError: ‘tuple’ object does not support item assignment.

Теперь, что насчет словарей.? Словарь представляет собой набор пар ключ-значение. Он не упорядочен по какому-либо определенному порядку/индексу. Я хотел бы дать общий обзор того, что может предложить Python, но словарь — это то, чем я сам долгое время не пользовался, когда начал изучать Python. Это выглядело немного сложнее, чем простой список, например, поэтому я не видел необходимости его использовать. Итак, чем полезен словарь?

Полезно использовать словарь, когда у вас есть набор уникальных ключей, сопоставленных со значениями, а для упорядоченного набора элементов лучше использовать список. Например, в науке о данных нам приходится иметь дело с базами данных. Они могут быть в виде словарей: столбец — это ключ, а соответствующий элемент строки — это значение. Вот пара ключ-значение!

Часть 3. Комментарии и как их писать

Иногда бывает так, что работаешь над кодом и оставляешь его на 1 неделю. Вернувшись к тому же самому коду, невозможно понять, что происходит внутри! И иногда это может быть очень неприятно. Говорю из своего опыта:

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

Итак, как писать комментарии:

  1. Чтобы прокомментировать одну строку кода, мы используем # (хэш). Все, что находится за ним, будет отображаться другим цветом, отличным от кода, и будет игнорироваться во время выполнения.
  2. Чтобы прокомментировать несколько строк, мы используем тройные кавычки ''' … many comments … ''' или тройные двойные кавычки """ … many comments … """.

Рассмотрим несколько наглядных примеров в каждом случае:

Этот код вообще не даст никакого вывода, потому что нет задачи для запуска.

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

Одиночный VS. Двойные кавычки?

В конце концов, это не имеет большого значения.

В случае с многострочными комментариями вам может быть интересно, в чем разница между одинарными и двойными кавычками? Нет никакой разницы. Единственная разница возникает при использовании строк! Например, как бы вы распечатали предложение: It’s me, Ruslan, используя пару одинарных кавычек?

Использование апострофа завершало бы строку, поэтому одним из способов было бы использование двойной кавычки для заключения всей строки, а другим - использование обратной косой черты \, которая показывает, что следующий символ является специальным символом.

То же самое и с многострочным комментарием — использование обоих типов кавычек делает наш комментарий более гибким.

Вы могли заметить, что вывод ячейки кода сверху дает строку внутри закомментированной части. Его можно игнорировать. Обратите внимание, что \n также является специальным символом, обозначающим новую строку.

Часть 4. Списки и несколько полезных операций с ними

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

Здесь мы еще немного поговорим о списках и двух особенно полезных и интересных операциях над ними — Extend и Append.

Прежде всего, напомним, что Список — это набор элементов. Он может быть любого типа и может содержать внутри еще один список:

Чтобы получить длину списка, используйте команду len()

Для доступа к любому элементу списка мы используем L[index]

Примечание.Индексирование в Python начинается с 0, а не с 1. Таким образом, к первому элементу будет обращаться как L[0], и в нашем случае он будет равен строке «Hello World».

Также есть возможность доступа к элементам списка с конца списка. Для этого мы можем использовать отрицательную индексацию, например L[-index]

Теперь поговорим о двух интересных операциях над списками и о том, чем они отличаются — Extend VS. Добавить:

  • Extend используется для расширения (вставки) элементов одного списка в другой список.
  • Добавить используется для вставки всего списка в другой список.

Например, давайте определим два списка L1 и L2

Чтобы расширить элементы одного списка в другой, мы используем атрибут списка .extend.

В итоге в нашем списке 4 элемента.

Чтобы дополнить тот же список L1 всем списком L2, мы вызываем, как вы уже догадались, атрибут .append

В результате наш список имеет только 3 элемента, а 2-й элемент представляет собой список из двух элементов сам по себе.

Часть 5. Циклы (for, while)

Существует два типа петель, а именно for и while. Циклы чрезвычайно полезны, особенно при работе со списками и массивами, например базами данных.

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

Рассмотрим эти два случая по отдельности.

Для цикла

Мы можем использовать цикл for, когда хотим выполнить итерацию определенное количество раз или выполнить итерацию по определенным элементам массива.

Для цикла он определяется ключевым словом for, индексирующей переменной, ключевым словом in, некоторым списком итераций и двоеточием :. Все, что стоит за двоеточием, находится внутри цикла и должно быть написано с правильным отступом (используйте для этого пробелы или кнопку Tab)

Примечание. Помните, что индексы Python начинаются с 0, а не с 1, и range указывает диапазон чисел между двумя заданными числами.

Примечание. Переменная итерации (индекс) может называться как угодно, даже pineapple. Как правило, он называется i, что указывает на индекс.

Как я упоминал ранее, мы также можем перебирать элементы массива. Вместо range() мы просто используем сам массив:

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

Совет для профессионалов. Причудливым дополнением к циклу for было бы использование метода enumerate вместо метода range. Он будет автоматически определять индекс элемента вместо того, чтобы перебирать диапазон длины списка.

Когда мы используем enumerate, важно присвоить как индексную переменную, так и фактическое значение, например i, color. Я бы посчитал эту опцию несколько продвинутой и не всегда необходимой.

Когда я начинал с Python, я не знал, что он существует. Определенно не обязательно использовать этот метод в каждом цикле for, но иногда это может сделать код немного чище и приятнее.

Пока цикл

Мы можем использовать цикл while в основном, когда что-то зависит от определенного условия, например, быть True/False или если i < 10.

Цикл while определяется ключевым словом while, условием и двоеточием. Например,

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

Часть 6. Функции

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

Функция — это блок или группа организованного и многократно используемого кода. Он используется для выполнения одного связанного действия. Использование функций может не только помочь сохранить код в чистоте, но и повысить скорость его вычислений.

Мы уже видели несколько встроенных функций Python, таких как len(), print(), type() и т. д. Они очень полезны, но, на мой взгляд, чтобы получить максимальную отдачу от Python, нам нужно создать собственную функцию для конкретной задачи.

Как определить функцию?

Это простые правила для определения функции в Python:

  • Подобно циклу for или while, функциональный блок начинается с ключевого слова def, за которым следует имя функции и круглые скобки ( ).
  • Функция может иметь (необязательные) входные параметры. Они должны быть помещены в эти круглые скобки. Мы даже можем определить некоторые параметры внутри этих скобок.
  • Двоеточие : разделяет заголовок функции и ее тело.
  • Тело функции может иметь строку документации (docstring). Это необязательный оператор, указывающий информацию о функции. В одном из моих предыдущих руководств я упомянул строки документации. Пожалуйста, обратитесь туда, если вы хотите узнать больше об этом.
  • Чтобы выйти из функции, мы можем предоставить оператор return с (необязательным) выражением. Оператор return без аргументов аналогичен return None.

Пример простой функции:

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

Давайте также посмотрим еще один простой пример:

Эти простые примеры иллюстрируют принцип использования функций в Python. Чем больше программа, чем она сложнее, тем больше функций лучше использовать для поддержания порядка.

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

Глобальный VS. Локальные переменные

Глобальные переменные объявляются вне любой функции, поэтому их можно использовать (доступ к ним) в любой функции программы.

Локальные переменные объявляются внутри функции и могут использоваться только внутри этой конкретной функции.

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

Сейчас это может немного сбивать с толку, но когда вы привыкнете к этой идее, все станет лучше.

Это также проясняет, почему использование функций может ускорить код. Определение функций означает наличие большего количества локальных переменных. Каждый из них занимает меньше места в памяти. Это означает, что программе не нужно хранить много информации глобально, а только тогда, когда она должна ее использовать (внутри функций).

Выводы

С функциями мы завершаем этот урок. Опять же, основная идея — научить всех Python и машинному обучению (ML). Прежде чем мы перейдем к части машинного обучения, я хотел бы, чтобы все были на одной волне. Здесь мы уже рассмотрели ряд тем. Проявив немного терпения, мы доберемся туда в мгновение ока.

Помните, практика ведет к прогрессу.

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

Спасибо, что дочитали до конца. Надеюсь, вы узнали что-то новое. Если вы хотите подключиться, у вас есть какие-либо вопросы, предложения и/или вы обнаружили какую-либо ошибку, пожалуйста, не стесняйтесь обращаться ко мне через LinkedIn.

P.S.: Если вам нравится этот непрерывный опыт чтения на этой прекрасной платформе Medium.com, подумайте о том, чтобы поддержать авторов этого сообщества, подписавшись на членство ЗДЕСЬ. Он стоит всего 5 долларов США в месяц и поддерживает всех авторов.