Краткое руководство по Python, чтобы познакомиться с наукой о данных

В 1989 году голландский программист Гвидо ван Россум, который сейчас работает в Dropbox (ранее в Google), изобрел Python. До недавнего времени этот язык не был популярным. Популярность резко выросла из-за его внедрения в проекты машинного обучения и доступности множества библиотек.

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

Хорошо, что этому нетрудно научиться. Фактически, Python - один из самых простых языков для изучения и использования, если вы знакомы с основными строительными блоками любого языка программирования.

В этом посте мы предлагаем простой способ освоить Python. Мы не предполагаем никаких предварительных знаний в области программирования. Таким образом, это для абсолютных новичков. В этом руководстве мы рассмотрим стандартные блоки, такие как переменные, функции, циклы, условия и т. Д., Чтобы вы познакомились с основами программирования. В конце этого поста мы рассмотрим некоторые из популярных и мощных структур данных в Python, которые помогут вам эффективно хранить и обрабатывать данные.

Python - это интерпретируемый язык. (К вашему сведению, C / C ++ - это скомпилированные языки.)
После того, как вы напишете свой код, компилятор начнет выполнять его построчно с начала файла.

Как можно писать и запускать программы из этого руководства? - Вы можете скопировать и вставить этот код в бесплатную записную книжку Python, такую ​​как Google Colab. Это готовая среда Python, которую вы можете использовать в качестве игровой площадки. Другой вариант - установить python и использовать интерактивную оболочку, набрав python в терминале или в командной строке.

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

Какие версии Python самые популярные? - У Python есть две основные версии: 2 и 3. Мы рекомендуем вам использовать версию 3, поскольку она существует уже некоторое время и поддерживает большинство существующих библиотек Python.

Хватит бить кусты. Давайте начнем.

Первая программа

Строки 1 и 2 - это комментарии Python. Комментарии Python пишутся со знаком # перед ними. Комментарии не выполняются компилятором; они предназначены для справки, чтобы вы могли понять свой код позже, а также другие.

Строка 3 - это суть этой первой программы. Он сообщает компьютеру напечатать «Hello World!» на экран вашего компьютера. Когда вы запустите вышеуказанную программу, вы увидите следующий вывод:

print - это встроенная функция, определяемая Python. Мы будем использовать print и многие другие встроенные функции Python, чтобы облегчить себе жизнь.

Стили программирования

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

  1. Неструктурированный
  2. Процедурный
  3. Объектно-ориентированный

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

В процедурном программировании мы группируем код в функциональные блоки, называемые функциями. Здесь есть два шага:

  • Определите (напишите) функцию
  • Вызов (вызов) функции

Вы пишете функцию один раз и вызываете столько раз, сколько хотите для ее выполнения. В этом посте мы в основном будем использовать неструктурированные и процедурные стили кодирования.

В объектно-ориентированном программировании вы идентифицируете схемы и создаете так называемый класс для каждой схемы. Мы рассмотрим объектно-ориентированное программирование на Python в одной из следующих статей.

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

Переменные

Переменные - это заполнители в памяти, в которых вы можете хранить различные данные.

Из основных типов данных вы можете иметь числовые (например, целые числа или числа с плавающей запятой) или строковые переменные. В зависимости от типа переменной (то есть строковой или числовой) Python выделяет разный объем памяти.

В отличие от языков программирования, таких как C, C ++ или Java, вы не указываете тип данных при создании переменной; Python автоматически определяет тип за вас. Поэтому Python называется языком с динамической типизацией. Хорошо знать такой жаргон, чтобы произвести впечатление на других :)

Предполагая, что вы установили Python 3 на свой компьютер, вы можете выполнять интерактивное кодирование, открыв оболочку (в командной строке Windows и в терминале MAC / Unix), набрав python.

Это приведет вас сюда. [Поскольку я установил несколько версий python, я вызываю Python 3, набирая python3.6]

$ python3.6
Python 3.6.1 (v3.6.1:69c0db5050, Mar 21 2017, 01:21:04) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

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

#integer variable
>>> x = 25
>>> print(x)
25

Переменная x хранит значение 25. Поскольку 25 является целым числом, Python предполагает, что переменная x имеет тип integer (для краткости int).

#string variable
>>> name = "Alice"
>>> print(name)
Alice

Переменная с именем name хранит значение «Алиса». Поскольку «Алиса» является строкой, Python предполагает, что переменная «имя» имеет строковый тип.

#assigning multiple times
>>> x = 25
>>> x = 10
>>> print(x)
10

Когда вы назначаете значения переменных несколько раз, старые значения заменяются новыми. В приведенном выше примере значение 25 заменяется на 10. Всегда существует только одно значение-заполнитель для x.

Числа и строки

Помимо целых чисел Python поддерживает другие числовые типы данных, такие как числа с плавающей запятой. Например,

#floating point numbers
>>> z = 1.53
>>> print(z)
1.53

Числовые переменные поддерживают стандартные математические операции, такие как сложение, вычитание, умножение, деление и модуль.

# Numerical operations
>>> a = 10
>>> b = 20 
#addition
>>> print(a+b)
30 
#subtraction
>>> print(a-b)
-10 
#division
>>> print(a/b)
0.5 
#modulus
>>> print(b%a)
0

В. Как вы умножаете a и b?

В. Скажите, что у нас есть еще одна переменная c. Его значение - 30. Как сложить все три значения переменных в одном операторе?

Теперь перейдем к струнам.

#define string variable firstname and assign value "Tim"
>>> firstname = "Tim" 
#print string
>>> print(firstname)
Tim 
#print the first character of the string variable
>>> print(firstname[0])
T
#print the second character of the string variable
>>> print(firstname[1])
i 
#print the length of the string
>>> print(len(firstname))
3
#print the first and second characters
>>> print(firstname[0:2])
Ti 
#print the second and third characters
>>> print(firstname[1:3])
im

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

В этом примере firstname - это массив символов. Он содержит три символа: T, i и m. Обратите внимание, что индекс начинается с 0 (а не с 1!). Итак, первым элементом массива является firstname[0].

Больше строковых операций:

#string concatenation (combining strings)
>>> lastname = "Cook"
>>> fullname = firstname + " " + lastname
>>> print(fullname)
Tim Cook

Обратите внимание, что переменная fullname представляет собой объединение трех строк - двух переменных firstname и lastname и одной постоянной строки «».

В. Что произойдет, если мы удалим постоянную строку из указанной выше переменной fullname?

В. Определите переменную для хранения «Hello World!». Как бы вы вывели из этой переменной только «Hello»?

Функции

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

print()— функция печати, принимает один аргумент и просто выводит переданный аргумент на экран. Например. print (firstname) - выводит значение переменной firstname.

len() - функция len, принимает один аргумент, список / массив и выводит количество элементов в списке. Помните, что строка - это массив, а функция len возвращает количество символов в строке. Например. len (имя) - возвращает длину строки имени.

Синтаксис функции:

def function_name(arguments):
    <function body>

def - ключевое слово, указывающее, что вы определяете функцию.

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

аргументы - это входные параметры; функция может принимать ноль или более аргументов. Например. len() принимает 1 аргумент.

function_body - это обычные операторы Python - обратите внимание, что они должны быть обозначены из имени функции, чтобы Python знал, что код принадлежит функции.

Функция может возвращать значение, а может и не возвращать. Например, функция len() возвращает длину входного параметра, тогда как функция print() ничего не возвращает; он просто выводит входной параметр на экран.

Приведенный выше код определяет простую функцию с именем add. Он принимает два аргумента x и y.

В теле функции (строки 3) мы вычисляем сложение двух входных аргументов. Поскольку это математическая операция, функция ожидает числовые входные параметры.

В строке 4 мы возвращаем вычисленное значение. Обратите внимание, что return - это зарезервированное слово Python специально для возврата значения из функции.

В строке 7 мы используем функцию, передавая 10 и 20 в качестве входного аргумента.

Строка 8 выводит результат 30.

В строке 11 мы повторно используем функцию, передавая разные аргументы 5 и 9. На этот раз она выводит 14.

В. Можете ли вы написать функцию с именем sub, которая принимает два аргумента и возвращает вычитание двух аргументов?

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

Вызов вышеуказанной функции в интерактивной подсказке Python:

>>>foo()
This function does not return any value

Обратите внимание, что он просто что-то печатает на экране. Печать на экране не возвращается. В функции должен быть оператор return, чтобы она возвращала что-то из нее.

Условия

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

Как показано на приведенной выше диаграмме, если условие равно true, Python выполняет блок «if code», в противном случае он выполняет блок «else code».

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

Итак, у нас есть:

function
   |
   |________ if-else block inside the function

Вы можете догадаться, что произойдет, если вы позвоните, test_condition(1)?

>>>test_condition(1)
SUCCESS

Вышеупомянутая функция имеет блок кода if-else. Если x равен 1, выводится «УСПЕШНО», в противном случае - «НЕ УДАЛОСЬ».

Условие называется логическим выражением. Это потому, что он оценивается как True или False.

Если True, выполняется блок if.

Если False, выполняется блок else.

Что будет, если позвонить test_condition(5)?

Да, вы угадали, он печатает FAILED.

>>>test_condition(5)
FAILED

Некоторые примеры условий (логические выражения):

x == y → проверьте, равно ли значение x значению y

x > y → проверить, больше ли x, чем y

name == “Tim” → проверьте, совпадает ли имя с Тимом

len(name) == 5 → проверьте, равна ли длина строковой переменной имени 5

В. Напишите логическое выражение, чтобы проверить, меньше ли x, чем y.

Петли

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

Есть два основных вида петель:

  • While петель
  • For петель

Давай попробуем по каждому из них

Циклы пока: он имеет следующий синтаксис:

while (condition):
    code-block

Пока condition равно True, блок кода выполняется многократно.

Давайте посмотрим на пример:

x = 0
while x < 5:
    x = x + 1
    print(x)

Можете ли вы угадать вывод приведенного выше фрагмента кода?

Условие - x ‹5 - пока x меньше 5, условие истинно и, следовательно, Python выполняет блок кода внутри цикла while.

Когда элемент управления впервые входит в цикл while, x равен 0, условие удовлетворяется. Первая строка в блоке кода while увеличивает значение x на 1 (так что оно становится 1). Затем он печатает x (который равен 1).

Теперь управление возвращается к началу цикла while. Python оценивает состояние. Теперь x равно 1. Поскольку 1 меньше 5, условие выполнено.

Затем он снова увеличивает значение на 1 - теперь x равен 2.

Затем он печатает значение 2.

Это продолжается так. В какой-то момент внутри цикла while x увеличивается до 5. Он выводит 5 внутри цикла. Затем он возвращается к началу цикла while. Теперь x равно 5, 5 не меньше 5, условие не выполняется, и Python больше не выполняет цикл while.

Итак, на выходе получаем:

1
2
3
4
5

Можете ли вы угадать вывод следующего кода?

x = 10
while x > 0:
    print(x)
    x = x - 2

Подсказка: печатает 5 чисел.

Для петель:

Есть еще один популярный тип цикла, который называется «цикл for». Синтаксис цикла for следующий:

for <a collection value> in <some collection>:
    code-block

Не волнуйтесь, если вы не понимаете, что написано выше, давайте разберемся с этим на примере.

Перед этим я хотел бы познакомить вас с диапазоном встроенных функций Python. range() создает последовательность чисел. Давайте посмотрим на несколько примеров.

range(1, 5)

Это создает последовательность из 1, 2, 3 и 4 (обратите внимание, что 5 исключена).

Другой пример:

range(0, 10, 2)

Третий параметр - размер шага. Размер шага по умолчанию - 1. При этом печатаются 0, 2, 4, 6 и 8.

Мы можем использовать это, чтобы написать тот же цикл while, который мы написали ранее, используя цикл for.

for x in range(1, 6):
    print(x)

Для второго примера цикла while:

for x in range(10, 0, -2):
    print(x)

Цикл for часто используется в Python для более интересных вещей. Мы рассмотрим некоторые из них позже в этом руководстве.

Библиотеки

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

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

Сначала вам нужно import добавить библиотеку в свою программу, а затем использовать ее функции. Предположим, вы создаете файл с именем first.py и хотите распечатать то, что передано в качестве первого аргумента командной строки.

import sys
first_argument = sys.argv[1]
print(first_argument)

Теперь вы запускаете эту программу следующим образом:

python first.py Hello

sys.argv[1] сохраняет значение первого аргумента, которым является «Hello». Итак, ваша программа напечатает Hello на экране.

Когда вы познакомитесь с Python, вы подружитесь со многими библиотеками Python, такими как pandas, matplotlib, numpy, scikit-learn и так далее.

Теперь давайте напишем программу, которая принимает два аргумента командной строки: second.py

import sys
first_argument = sys.argv[1]
second_argument = sys.argv[2]
print("{} {}".format(first_argument, second_argument))

Теперь вы запускаете код следующим образом:

python second.py Hello World!

Есть предположения о выходе? Да ты прав; он печатает «Hello World!» на экране. Первый аргумент - «Привет», а второй - «Мир!».

Структуры данных: список

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

Примеры:

# A list with values
names = ["Alice", "Bob", "Eve", "Tim", "Malory"]

Вы можете создать пустой список следующим образом:

names = list()

Добавить в список, который добавляет новый элемент в конец списка.

names.append("Thomas")
names.append("Mary")
print(names)

Выход:

["Thomas", "Mary"]

Просмотрите список:

names = ["Thomas", "Mary", "Tim"]
for name in names:
    print("Student: {}".format(name))

Результат:

Student: Thomas
Student: Mary
Student: Tim

Обратите внимание, как мы пишем цикл for. Цикл выбирает каждый элемент и присваивает его переменной с именем «name», и вы можете использовать эту переменную внутри цикла для написания своей бизнес-логики (в данном случае просто для печати на экране).

Другой пример:

# A list of numbers
ages = [25, 30, 22, 26, 32, 35, 31, 22, 27]

Как мы можем вычислить средний возраст?

Нам нужно просуммировать все значения и разделить на количество записей. Мы можем получить количество записей из функции len(ages).

count = len(ages)
sum = 0
for age in ages:
    sum = sum + age
avg = sum / count
print("Average age is {}".format(avg))

На выходе

Average age is 27.77777777777778

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

Строка 1: мы определяем список, называемый возрастом, и инициализируем его всеми значениями возраста.

Строка 2: Подсчитайте количество записей в списке возрастов и сохраните их в переменной с именем count. len - встроенная функция Python.

Строка 3: инициализировать переменную с именем sum нулевым значением. Мы собираемся использовать эту переменную для суммирования всех возрастных значений.

Строка 4: Для кода заголовка цикла - мы выбираем каждую запись из возраста и присваиваем ее переменной с именем age.

Строка 5: добавить текущее значение age к переменной sum на каждой итерации.

Строка 6: Теперь мы вне цикла for. Мы просто берем среднее значение.

Строка 7: вывести на экран среднее значение.

В. Можете ли вы написать цикл for для определения максимального возраста?

Структуры данных: Установить

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

# set with initial values
coin_sides = {"Head", "Tail"}
# an empty set
colors = set()

Установить и перечислить рядом:

>>> myset = set()
>>> mylist = list()
>>> myset.add("Apple")
>>> mylist.append("Apple")
>>> print(myset)
{'Apple'}
>>> print(mylist)
['Apple']

Что произойдет, если мы снова добавим «Яблоко» к обоим? Есть догадки?

>>> myset.add("Apple")
>>> mylist.append("Apple")
>>> print(myset)
{'Apple'}
>>> print(mylist)
['Apple', 'Apple']

Да, вы поняли - set хранит только одну копию каждого из разных значений, тогда как list хранит их все.

>>> myset.add("Orange")
>>> mylist.append("Orage")
>>> print(myset)
{'Orange', 'Apple'}
>>> print(mylist)
['Apple', 'Apple', 'Orage']

Цикл в точности похож на то, как вы зацикливаете списки:

for fruit in myset:
    print(fruit)

Результат:

Orange
Apple

Структуры данных: словарь

Python dictionary - еще одна популярная структура данных, которая позволяет хранить пары ключ-значение.

students = {"Alice":10, "Tim": 5}

students - это словарь Python с двумя записями. Ключи - «Алиса» и «Тим», а значения - 10 и 5.

Другой способ создать словарь:

students = dict()
students["Alice"] = 10
students["Tim"] = 5

Как перебрать словарь:

for key, value in students.items():
   print("Key = {} Value = {}".format(key, value))

Вы получите следующий результат:

Key = Alice Value = 10
Key = Tim Value = 5

Другой способ перебора словаря (обратите внимание, что этот метод менее эффективен по сравнению с приведенным выше, поэтому не рекомендуется)

for key in students:
   print("Key = {} Value = {}".format(key, students[key]))

Вы получите тот же результат, что и выше.

Файловый ввод-вывод

Как специалист по данным, вы довольно часто читаете и записываете в файлы. Сейчас мы собираемся показать основные файловые операции.

Скажем, у нас есть файл с именем «data.csv», в котором есть следующие значения, разделенные запятыми:

Alice,10
Tim,5
Mary,8

Строка 1: открыть файл с именем «data.csv» для чтения («r» - для чтения)

Строка 3: итерации по каждой строке в файле - каждая строка копируется в переменную под названием «строка».

Строка 4: split значение в строковой переменной через «,» - это создает массив из двух элементов; мы сохраняем этот массив в переменной с именем values

Строка 5: печатаем два значения

Строка 7: закрываем файл.

Результат выглядит следующим образом:

Name = Alice Age = 10
Name = Tim Age = 5
Name = Mary Age = 8

Ниже приводится другой способ написания того же кода с использованием ключевого слова «with». Обратите внимание, что в этом случае мы не вызываем close ().

Теперь приступим к записи в файл. Допустим, мы хотим записать в файл следующий контент.

Apple
Orange
Grape

Строка 1: Мы сохраняем контент, который хотим написать, в списке под названием фрукты.

Строка 3: Откройте файл с именем «fruit.txt» для записи. «W» - для письма.

Строка 5: Прокрутите каждый фрукт в списке фруктов.

Строка 6: Напишите каждый фрукт. Обратите внимание, что мы добавили символ новой строки «\ n» к каждой записи, чтобы гарантировать, что каждый фрукт записывается в новую строку.

Строка 8: После завершения записи вне цикла мы закрываем файл.

Это все на сегодня. Мы надеемся, что вам понравилась наша статья и вы узнали основы Python.

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

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

Удачного кодирования!

использованная литература