#3 Python для Data Science — встроенные функции и методы Python

Функции — одно из главных преимуществ языка Python как минимум при использовании их в проектах Data Science. Это третья часть серии материалов «Python для Data Science», в которой речь пойдет о функциях и методах.

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

Это практическое руководство!

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

Что такое функции и методы Python?

Начнем с основ. Предположим, что существует переменная:

a = 'Hello!'

Вот простейший пример функции Python:

len(a)
# Результат: 6

А вот пример метода Python:

a.upper()
# Результат: HELLO!

Функции и методы Python

Так что такое функции и методы Python? По сути, они превращают что-то в нечто другое. В случае этого примера ввод 'Hello!' дал вывод длины строки (6) и версию строки, переписанную с большой буквы: 'HELLO!'. Конечно, это не единственные функции. Их намного больше. Их комбинация пригодится в разных частях проекта — от очистки данных до машинного обучения.

Встроенные vs. пользовательские методы и функции

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

Самые важные встроенные функции Python для проектов Data Science

Функция в Python работают очень просто — ее нужно вызвать с заданными аргументами, а она вернет результат. Тип аргумента (например, строка, число, логическое значение и так далее) может быть ограничен (например, иногда нужно, чтобы это было именно целое число), но чаще аргументом может выступать значение любого типа. Рассмотрим самые важные встроенные функции Python:

print()
Эта функция уже использовалась в прошлых статьях. Она выводит различные значения на экран.

print("Hello, World!")

print выводит различные значения на экран

abs()
Возвращает абсолютную величину числа (то есть, целое число или число с плавающей точкой). Результат не может быть строкой, а только числовым значением.

abs(-4/3)

abs Возвращает абсолютную величину числа

round()
Возвращает округленное значение числа

round(-4/3)

round Возвращает округленное значение числа

min()
Возвращает наименьший объект в списке или из общего числа введенных аргументов. Это может быть в том числе и строка.

min(3,2,5)
min('c','a','b')

min Возвращает наименьший объект в списке

max()
Несложно догадаться, что это противоположность min().

sorted()
Сортирует список по возрастанию. Он может содержать и строки и числа.

a = [3, 2, 1]
sorted(a)

sorted Сортирует список по возрастанию

sum()
Суммирует значения списка. Он может содержать разные типы числовых значений, но стоит понимать, что с числами с плавающей запятой функция справляется не всегда корректно.

a = [3, 2, 1]
sum(a)
b = [4/3 , 2/3, 1/3, 1/3, 1/3]
sum(b)

sum Суммирует значения списка

len()
Возвращает количество элементов в списке или количество символов в строке.

len('Hello!')

type()
Возвращает тип переменной

a = True
type(a)

b = 2
type(b)

type Возвращает тип переменной

Это встроенные функции Python, которые придется использовать регулярно. Со всем списком можно ознакомиться здесь: https://docs.python.org/3/library/functions.html

С многими другими вы познакомитесь в следующих руководствах.

Самые важные встроенные методы Python

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


Методы для строк Python

Строковые методы используются на этапе очистки данных проекта. Например, представьте, что вы собираете информацию о том, что ищут пользователи на сайте, и получили следующие строки: 'mug', 'mug ', 'Mug'. Человеку известно, что речь идет об одном и том же, но для Python это три уникальные строки. И здесь ему нужно помочь. Для этого используются самые важные строковые методы Python:

a.lower()
Возвращает версию строки с символами в нижнем регистре.

a = 'MuG'
a.lower()

lower Возвращает версию строки с символами в нижнем регистре

a.upper()
Противоположность lower()

a.strip()
Если в строке есть пробелы в начале или в конце, метод их удалит.

a = ' Mug '
a.strip()

strip Удаляет пробелы в начале или в конце строки

a.replace(‘old’, ‘new’)
Заменяет выбранную строку другой строкой. Метод чувствителен к регистру.

a = 'muh'
a.replace('h', 'g')

replace Заменяет выбранную строку другой строкой

a.split(‘delimiter’)
Разбивает строку и делает из нее список. Аргумент выступает разделителем.

a = 'Hello World'
a.split(' ')

Примечание: в этом случае разделителем выступает пробел.

split Разбивает строку и делает из нее список

’delimeter’.join(a)
Объединяет элементы списка в строку. Разделитель можно указать заново.

a = ['Hello', 'World']
' '.join(a)

join Объединяет элементы списка в строку

Это были самые важные методы, для работы со строками в Python.

Методы Python для работы со списками

В прошлом материале речь шла о структурах данных Python. И вот к ним нужно вернуться снова. Вы уже знаете, как создавать списки и получать доступ к их элементам. Теперь узнаете, как менять их.

Используем уже знакомую собаку Freddie:

[dog] = ['Freddie', 9 , True, 1.1, 2001, ['bone', 'little ball']]

Теперь посмотрим, как можно изменять список.


a.append(arg)
Метод append добавляет элемент к концу списка. Предположим, что нужно добавить количество лап Freddie (4).

dog.append(4)
dog

Метод append добавляет элемент к концу списка

a.remove(arg)
Удалить любой из элементов можно с помощью метода .remove(). Для этого нужно указать элемент, который необходимо удалить, а Python уберет первый такой элемент в списке.

dog.remove(2001)
dog

Удалить любой из элементов можно с помощью метода remove

a.count(arg)
Возвращает количество указанных элементов в списке.

dog.count('Freddie')

count Возвращает позицию этого элемента в списке

a.clear()
Удаляет все элементы списка. По сути, он полностью удалит Freddie. Но не стоит волноваться, потом его можно вернуть.

dog.clear()
dog

clear Удаляет все элементы списка

Список всех методов для работы с Python можно найти здесь: https://docs.python.org/3/tutorial/datastructures.html

Методы Python для работы со словарями

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

И снова Freddie:

dog_dict = {'name': 'Freddie',
'age': 9,
'is_vaccinated': True,
'height': 1.1,
'birth_year': 2001,
'belongings': ['bone', 'little ball']}

dog_dict.keys()
Вернет все ключи словаря.

keys Вернет все ключи словаря

dog_dict.values()
Вернет все значения словаря.

values Вернет все значения словаря

dog_dict.clear()
Удалит все из словаря.

clear Удалит все из словаря

Для добавления элемента в словарь не обязательно использовать метод; достаточно просто указать пару ключ-значение следующим образом:

dog_dict['key'] = 'value'
dog_dict['name'] = 'Freddie'

Добавление элемента в словарь

Это все методы на сегодня.

Проверьте себя

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

  1. Есть список: test_yourself = [1, 1, 2, 2, 3, 3, 3, 3, 4, 5, 5]
  2. Посчитайте среднее значение элементов списка, используя знания, полученные из прошлых частей руководства.
  3. Посчитайте медиану, следуя тем же условиям.

.

.


.

.

.

.

Решение

sum(test_yourself) / len(test_yourself)

sum() суммирует значения элементов, а len() подсчитывает их количество. Если поделить одно значение на другое, то выйдет среднее. Результат: 2.909090

Встроенные функции и методы - задача 1

test_yourself[round(len(test_yourself) / 2) - 1]

Повезло, что в списке нечетное количество элементов.

Примечание: эта формула не сработает, если элементов будет четное количество.

len(test_yourself) / 2 подскажет, где в списке искать среднее число — это и будет медиана. Результат равен 5,5, но результат len() / 2 всегда будет на 0,5 меньше, чем реальное число, если в списке нечетное количество элементов (можете проверить на списке с 3 или 5 элементами). Округлим 5,5 до 6 с помощью round(len(test_yourself) / 2). Все верно — в данном случае внутри функции используется другая функция. Затем нужно вычесть единицу, потому что индексация начинается с нуля: round(len(test_yourself) / 2) - 1.

В конце концов результат можно подставить в качестве индекса для поиска его в списке: test_yourself[round(len(test_yourself) / 2 - 1]; или взять полученное число: test_yourself[5]. Результат — 3.

enter image description here

В чем разница между функциями и методами в Python?

После прочтения этой статьи у вас наверняка появился вопрос: «Зачем нужны и функции и методы, если они делают одно и то же?»

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

Сперва очевидное. Отличается синтаксис. Функция выглядит вот так: function(something), а метод вот так: something.method().

Так зачем и методы и функции нужны в Python? Официальный ответ заключается в том, что между ними есть небольшие отличия. Так, метод всегда относится к объекту (например, в dog.append(4) методу append() нужно объект dog). В функции объект не нужно использовать. Если еще проще, метод — это определенная функция. Все методы — это функции, но не все функции являются методами.

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

Вот еще один дополнительный совет: функции и методы — это как артикли (der, die, das) в немецком языке. Нужно просто выучить синтаксис и использовать их по правилам.

Как и в немецком, есть эмпирические правила, которые также должны помочь. Так, функции можно применять к разным типам объектов, а методы — нет. Например, sorted() — это функция, которая работает со строками, списками, числами и так далее. Метод upper() работает исключительно со строками.

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

Итого

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

Далее нужно будет разобраться с циклами и инструкциями if.