Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Python в аналитике Введение в дата-аналитику

Python — это язык программирования №1 в мире анализа данных. Именно на нем, помимо SQL, работает типичный аналитик данных.

Помимо этого, Python очень популярен и во всем мире в целом. Согласно опросу Stack Overflow от 2022 года Python входит в пятерку самых популярных языков программирования.

Согласно PYPL Index, он вообще стоит на первом месте:

eyJpZCI6ImMwMDc2OTZlYTRiNTYxOWRkYjVlYmMyMTU3YmNhN2ZiLnBuZyIsInN0b3JhZ2UiOiJjYWNoZSJ9?signature=7e58030a96c559d9c3f6f874e67e66458a18901ad887a25d327133ad2d6d29a8

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

Как писать код на Python

В зависимости от того, готовы ли отдать немного места на своем компьютере программе для работы с Python, существует 2 основных варианта для приобретения навыков программирования на Python:

Существует несколько способов работы с Python:

  • Скачать дистрибутив Anaconda, чтобы использовать его со средой разработки PyCharm или блокнотом Jupyter Notebook

  • Скачать последнюю версию официальной среды IDLE Python

  • Скачать и установить программу Visual Studio Code

  • Зарегистрироваться на сайте Kaggle или Google Collab

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

Среди всех способов мы выберем самый простой и подходящий для новичков — это дистрибутив Anaconda вместе с интерактивным блокнотом Jupyter Notebook.

Сам процесс установки достаточно простой. Скачав дистрибутив, вы увидите меню Anaconda Navigator и выберете Jupyter Notebook:

eyJpZCI6ImQ2MzBjMzRmZjg3MDU1OGExMTg0ZDlmYWJmYTllZTRjLnBuZyIsInN0b3JhZ2UiOiJjYWNoZSJ9?signature=8aee38be2c66a07ec47053ec26468d0854d00cfa138629fccd347aa325b996a1

Сам Jupyter Notebook выглядит так:

eyJpZCI6ImU0ZjMwNTY1Mjc2OGI2NWM0YmVmNWRjNjA3YzNlMjkwLnBuZyIsInN0b3JhZ2UiOiJjYWNoZSJ9?signature=0038b9bcea424509f4996a53129d0a502125b0a2da0ca41c519ad594a832302c

Для начала работы достаточно выбрать в меню пункт New → Python 3:

eyJpZCI6IjUwY2IwOGEyYTI2Y2RhNjQxOTBlYTNjMWIwNDA0NDk5LnBuZyIsInN0b3JhZ2UiOiJjYWNoZSJ9?signature=f96cfd28ec0df2de0a05d494e451405f9f07405f2a569eb27f40aac57ec12178

Ввод и вывод данных

Для начала разберемся с ключевыми терминами.

Вывод данных — это отображение текста и чисел в окне программы. Например, если мы хотим написать фразу “Hello, world”, нам потребуется функция print():

eyJpZCI6ImVlM2UxNWNiODdlNjk2MjVjMmQ0ZDU4M2YzOWQ3ZGRkLnBuZyIsInN0b3JhZ2UiOiJjYWNoZSJ9?signature=ab17612c35ecc445e275ffd746f4b90c749d8b1a98ad0cb920e2312b07638381

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

eyJpZCI6IjYwOTMxMDhmZGYxYjNhZGRjYTc3ZGJiY2M1MjAwNDVkLnBuZyIsInN0b3JhZ2UiOiJjYWNoZSJ9?signature=1e999474c5d9fce1f2d2e99d3859863943965e2f718d1d2c750e4fff98e88c4c

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

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

Есть два одобренных стиля, в которых называются переменные в Python:

  • CamelCase — каждое новое слово в составном названии переменной начинается с заглавной буквы

  • Underscore_notation — все слова в составных названиях разделяются нижним подчеркиванием

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

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

False

await

else

import

pass

None

break

except

in

raise

True

class

finally

is

return

and

continue

for

lambda

try

as

def

from

nonlocal

while

assert

del

global

not

with

async

elif

if

or

yield

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

eyJpZCI6ImNhZGU0NmQ5ODRjNjM2YTYxY2E4YmUyMTNkYWYzODFlLnBuZyIsInN0b3JhZ2UiOiJjYWNoZSJ9?signature=047e99fb4f0fe99019a670ea6d142bcea145b05c4e9dd9d6cc7c3b4ca1e6e700

Как видите, мы можем добавить строку внутри print() и вывести вместе с ней содержимое переменной name, в которой хранится введенное имя.

Чтобы сделать вывод более информативным, можно использовать f-строки:

print(f'Имя: {name}, Фамилия: {surname}, Возраст: {age}')

Кроме того, внутри print() можно поместить разные операции, арифметические и не только:

print(5 + 5)  # => 10

Также можно ввести сразу несколько значений в отдельные переменные, а затем вывести их все сразу на экран:

name, surname, age = input(), input(), int(input())
print(name, surname, age)

Вася
Петечкин
32
# => Вася Петечкин 32

Обратите внимание, что у последнего ввода появилась обертка int (сокращение от integer — целое число). Это прямое указание типа данных. В этом случае мы решили явно указать тип данных, потому что по умолчанию Python воспринимает любой ввод как тип данных string (строка).

Типы данных

Обсудим основные виды данных в Python и посмотрим на примеры:

Название

Обозначение

Пример

Неопределенное значение переменной

null, None

null, None

Логические переменные

bool

True, False

Целое число

int

3

Число с плавающей точкой

float

1.3

Комплексное число

complex

-5i

Список

list

['a', 'b', 'c']

Кортеж

tuple

('red', 'blue', 'green')

Диапазон

range

range(0,6) = 0, 1, 2, 3, 4, 5

Строка

str, string

“Ехал Грека через реку”

Множество

set

{'black', 'blue', 'white'}

Неизменяемое множество

frozenset

{'red', 'blue', 'green'}

Словарь

dict

{'color': 'red', 'model': 'VC6', 'dimensions': '30x50'}

Байты

bytes

b'\x00\x00\x00'

Массивы байт

bytearray

b'\x00\x00'

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

memoryview

0x1477a5813a00

Последние три типа вы вряд ли будете использовать в ближайшем будущем, а вот на остальные полезно обратить пристальное внимание.

Чтобы узнать тип данных, нужно воспользоваться встроенной функцией type():

a = 3.5
type(a) # float

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

  • int(age)

  • float(input())

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

Например, если переменная содержит текстовые данные, мы можем использовать с ней такие методы:

  • Конкатенация — print('Python''is''cool!')

  • Репликация — print('Повтори' * 5)

  • Перевод строки в верхний регистр — upper()

  • Проверка, состоит ли строка только из алфавитных символов — isalpha()

  • Проверка, состоит ли строка только из символов в нижнем регистре — islower()

  • Удаление начальных и конечных пробелов из строки — strip()

  • Замена одной подстроки на другую — replace(old, new[, num])

  • Объединение нескольких строк в одну строку с разделителем — join(strs)

В случае численных данных, арсенал доступных методов уже другой:

  • Арифметические действия — int_1+int_2

  • Округление с плавающей точкой — round (number, 3), где 3 обозначает количество знаков после запятой

  • Получение модуля — abs(v)

  • Конвертация типов чисел — int(5.5)

  • Генерация случайных чисел — random.randrange(1, 1000)

Условные операторы

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

Бывают такие условные операторы:

  • Операторы ветвления (if, elif, else)

  • Операторы цикла (while, break, continue, for)

Команда if — это аналог слова «если». Она содержит в себе логическое условие с двумя исходами:

  • Если условие истинно (равно True), то блок кода внутри команды if выполнится

  • Если условие ложно (равно False), то блок кода внутри команды if пропускается, а выполнение кода переходит на следующую строчку кода

В коде это выглядит так:

# Если число больше нуля, печатаем сообщение с этой информацией
# Если число не больше нуля, то пропускаем содержимое блока if
# Переходим к следующей команде
number = 1

if number > 0:
    print('Число больше нуля')
print('Идем дальше')

# => Число больше нуля
# => Идем дальше

Кроме if, есть еще две необязательные команды:

  • else — аналог слова «иначе». Блок кода внутри нее выполняется, если условие в команде if ложно. При этом в каждой конструкции с if может быть только одна команда else

  • elif — аналог фразы «иначе если». Она позволяет проверить истинность нескольких выражений и выполнить нужный блок кода в зависимости от результата проверки. У одной конструкции с if может быть любое количество команд elif

Чтобы закрепить эти знания, изучите пример кода с этими конструкциями:

if number > 0:
    print('Число больше 0')
elif number == 0:
    print('Число равно 0')
else:
    print('Число меньше 0')

Условные конструкции отрабатывают один раз. А если мы захотим проверить все элементы списка на соответствие заданному условию? Тогда придется проходить один и тот же фрагмент кода множество раз. В таком случае нужны не условные операторы, а циклы.

Циклы

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

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

В Python есть два типа цикличных выражений. Первый — это аналог слова «пока»:

while <condition>:
    <action>

Второй тип — это аналог слова «для»:

for <item> in <sequence>:
    <action>

Разберемся подробнее, в чем разница между ними:

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

  • Циклы for можно использовать один раз для работы над данными списка. В этом случае перебор значений в списке будет идти по умолчанию:

    • Несколько раз задача запускается с помощью циклов while

    • С помощью циклов for выполняется циклический перебор данных списка

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

С примером использования цикла while можно ознакомиться ниже:

apples = 5
# Запускаем цикл
while apples > 0:
    # Работаем внутри цикла, печатаем сообщение
    print('We have ', apples, ' apples')
    # Уменьшаем счетчик на 1
    apples -= 1
# Вышли из цикла
print('We have no apples any more!')

Цикл for проходится по любому итерируемому объекту — например, строке или списку. Во время каждого прохода выполняет тело цикла.

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

# Перебираем элементы списка
for element in shopping_list:
    print(element)

# Результат выполнения:
# => milk
# => bread
# => cucumber
# => butter

Циклы бывают громоздкими. Чтобы их переиспользовать, имеет смысл заворачивать их в функции.

Функции

Функция — это набор инструкций, объединенных для выполнения одной задачи. Блоки кода, однажды оформленные в виде функций, можно использовать в коде многократно. Для этого они и нужны: для решения повторяющейся задачи с помощью одного слова — имени функции.

Синтаксис функции можно увидеть на картинке ниже:

eyJpZCI6IjIzNjljYmRiMmNiZjBiY2Y4NmFjNTMzYmE0Y2I0ZTc2LnBuZyIsInN0b3JhZ2UiOiJjYWNoZSJ9?signature=00a89d1235e58c65d797d1b72d463011f4ae2e52fd29a5780ee94ff3d18cb8e1

Существуют некоторые правила для создания функций в Python:

  • Блок функции начинается с ключевого слова def, после которого следуют название функции и круглые скобки ()

  • Любые аргументы, которые принимает функция, должны находиться внутри этих скобок

  • После скобок идет двоеточие :

  • Затем с новой строки с отступом начинается тело функции

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

Выражение return прекращает выполнение функции и возвращает указанное после выражения значение. Выражение return без аргументов — это то же самое, что и выражение return None.

Напишем нашу первую функцию. Ее цель — выводить сумму слагаемых a и b:

def calc(a, b):
    print(a)
    print(b)
    return a + b

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

Первая задача

Наших знаний уже достаточно, чтобы решать самые простые задачи с помощью Python.

Представим, что нам нужно написать программу. Она должна получать от пользователя два вещественные числа:

  • a — длина прямоугольника

  • b — ширина прямоугольника

Затем программа выводит периметр и площадь заданного прямоугольника в следующем формате:

Площадь S = 88.0
Периметр P = 38.0

Звучит сложно, но мы уже можем написать такую программу:

a, b = float(input()), float(input())
print('Площадь S =', a * b)
print('Периметр P =', 2 * (a + b))

Выводы

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


Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Об обучении на Хекслете

Открыть доступ

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

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
от 5 025 ₽ в месяц
новый
Сбор, анализ и интерпретация данных
9 месяцев
с нуля
Старт 28 сентября

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»