Вы находитесь на странице: 1из 37

Введение в программные

средства анализа данных


Основы языка Python. Структура данных

Михейкина Л.А., 2021


Содержание курса
Тема Лекции Практические

Основы языка. Структура данных 2 4


Строковые величины. Работа с
2 4
датами
Функции. Работа с данными
2 4
разных форматов

Pandas. Группировка данных 2 4


Объединение таблиц. Очистка
2 4
данных

Feature Engineering. 2 4
Возможности библиотеки Numpy
2 4
для работы с данными

Работа с html страницами и API 2 4


Дистрибутив Anaconda. Jupyter Notebook
Anaconda —  это широко распространенный дистрибутив для использования
Python в сфере анализа данных. Его основное преимущество в том, что при 
установке Python уже идёт вместе с большинством инструментов,
необходимых для того, чтобы заниматься анализом данных.

Из основных инструментов стоит отметить, что в составе Anaconda


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

Также в Anaconda входит множество дополнительных библиотек, которые


незаменимы в вопросах анализа данных, например, Pandas и Numpy, а также
различные библиотеки для создания визуализаций, с которыми мы
познакомимся в дальнейшем в рамках курса.
Таким образом, Anaconda избавляет от необходимости самостоятельно
устанавливать и настраивать среду разработки для Python, а также от
необходимости добавлять вручную в Python дополнительные библиотеки.

Аналоги
Также задания можно выполнять в среде Google Colaboratory. Это облачный инструмент, аналогичный Jupyter Notebook, для работы с которым
необходим аккаунт Google

https://www.anaconda.com/products/individual-d
:

Как работать в Jupyter Notebook?


1. Создание папки для работы в Юпитере

2. Создание первого ноутбука

3. Ячейка может быть двух типов: код или текст в


специальной разметке Markdown

Таким образом, в ноутбуке можно комбинировать


код и текст. Также можно добавлять в ноутбуки
изображения (в том числе гифки) или
визуализации, даже интерактивные,  с которыми
можно взаимодействовать. Это очень удобно для
интерактивного взаимодействия с данными, а
также нужно, чтобы документировать какие-то
элементы кода, дополняя их подробным
описанием.
Запуск и прерывание выполнения кода
Если ваша программа зависла, то можно прервать ее выполнение выбрав на панели меню пункт Kernel
-> Interrupt

Для добавления новой ячейки используйте Insert->Insert Cell Above и Insert->Insert Cell Below

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

Ctrl+Enter – выполнить содержимое ячейки

Shift+Enter – выполнить содержимое ячейки и перейти на ячейку ниже

Alt+Enter – выполнить содержимое ячейки и вставить новую ячейку ниже.


.

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


Создадим новый блокнот (или запускаем Jupyter Notebook) и напишем следующий код:

Код состоит из всего одной  функции  print(), её задача    — вывести значение, которое подаётся в  указанную
функцию. Это значение носит название "аргумент функции". У функции print в аргумент передается выводимое
значение, но другие функции могут иметь другие задачи.

Также в функцию print можно передать несколько значений, например:


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

Знак в выражении (например, "плюс" или "минус") в Python называется оператором. Основные
операторы перечислены в таблице ниже. Среди них особое внимание нужно уделить последним трём,
поскольку их синтаксис может быть непривычным.

Что нужно сделать? Оператор в Python Пример


Сложить + 2+3=5
Вычесть - 5-2=3
Умножить * 2*3=6
Разделить / 6/3=2
Получить целую часть от деления // 7 // 3 = 2
Получить остаток от деления % 7%3=1
Возвести в степень ** 2 ** 3 = 8

У Python нет собственного оператора для извлечения корней, однако извлечение корней всегда можно
представить в виде возведения в степень, например, 4 ** (1/2) = 2.

В сложных вычислениях можно использовать скобки, чтобы отделить одни действия от других и назначить каким-то из них «приоритет».Например, Python без
труда посчитает такое выражение, если вводить его целиком: ((123 - 33)**5 + 123 / (4 + 76)) % 13. Нет необходимости делить это выражение на отдельные
действия.
Переменные. Типы данных
В Python можно хранить значения в переменных.

a=
my_name = "Слава"

Если в переменных лежат числа, то их можно складывать, вычитать, умножать, одним словом, делать все то же,
что и с числами.
a=1
b=1
c=a+b

Правила наименования переменны

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


• имена переменных не должны повторять уже встроенные в Python имена, например, print, str, in и т.д.;
• имена переменных могут содержать только буквы, цифры и нижнее подчёркивание; 
• имена переменных не должны начинаться с цифры;
• очень желательно, чтобы имена переменных выражали суть переменной и не были слишком
длинными.

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

Целые числа, числа с плавающей запятой и комплексные числа относятся к группе чисел. В Python они представлены классами int, oat и complex.
5

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

type(«студенты")

Мы можем преобразовывать значения из одного типа в другой с помощью таких функций, как int(), oat(), str() и т.д.

a = oat(2)

С переменным с типом int и oat можно применять все операции, описанные ранее. 

Важно помнить следующие правила работы с типами

• если хотя бы одна из переменных принадлежит к типу oat, результат вычисления тоже получит тип oat; 
• при операции деления результат всегда вернётся с типом oat, даже если оба исходных числа принадлежат к типу int. 

К строковым (текстовым) переменным, как ни странно, тоже применимы некоторые из изученных операторов — это операторы + и *.  Так, оператор + «склеит»
воедино две строки, а оператор * продублирует строку нужное количество раз, объединив результат в одну строку.
fl
fl
:

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

Если не присваивать введённые пользователем данные никакой переменной, то они просто выведутся на
экране, а если присвоить, сохранятся под именем переменной, но не выведутся на экран.

В этом случае необходимо отдельно вызвать переменную.

ведённые пользователем через input() данные всегда рассматриваются как строковые (имеют тип string),
даже в том случае, когда он вводит числа.

Пример 1: Программа, которая просит пользователя ввести его имя и сохраняет результат в переменную user_name.

user_name = input('Введите своё имя: \n')

Пример 2: Программа, которая умножает 5 на целочисленный множитель, введённый пользователем.


multiplier = int(input('Введите множитель для числа 5: \n')
print(5*multiplier)

Пример 3: Программа, которая получает на вход два числа, a и b, и выводит на экран число a в степени b.
a = oat(input('Введите основание степени: \n')
b = oat(input('Введите показатель степени: \n')
# В функции print() можно в качестве аргументов
# перечислять через запятую все нужные для вывода данны
print('Полученное число:', a**b)
fl
fl
)

Условия
Кроме математических, в Python есть также и условные операторы, они позволяют включать в программу условия, при которых то или иное действие будет
выполнено.
Условный оператор в Python обозначается как if. Пусть у нас есть переменная а, содержащая число; мы хотим проверить, чётное ли это число, и вывести
соответствующую информацию на экран.
a=
if a % 2 == 0
print('Число чётное.')

следует обратить внимание на оператор == (двойное «равно»), который мы использовали. В отличие от привычного «равно» он используется не для
присваивания значений, а для сравнения двух объектов между собой. Оператор else также требует после себя двоеточия и отступа с новой строки.

Основные логические операции


Оператор Обозначение
> больше
>= больше или равно
< меньше
<= меньше или равно
!= не равно
равно

Иллюстрация с сайта https://ppt-online.org/
4

Условия: IF ... ELIF ... ELSE


В случае, когда нужно проверять несколько условий последовательно, на помощь приходит ещё один полезный оператор — elif. Он занимает место между if
и else и может повторять действие много раз.

a=
b=
if a == b
print('Числа равны.'
elif a < b
print('Первое число меньше второго.'
else
print('Первое число больше второго.')

Синтаксис оператора elif повторяет синтаксис if: после самого оператора следует проверяемое
условие, затем — двоеточие, отступ с новой строки и результат при выполнении этого условия.

Первым действием проверяет исполнение того условия, которое следует за if, если условие
соблюдается,  то  выполняет операцию после двоеточия, если не соблюдается,  —    проверяет
исполнение условия, которое следует за elif, если это условие соблюдается,  —    выполняет
операцию после двоеточия, если нет, —  выполняет операцию, следующую за else.

Иллюстрация с сайта https://ppt-online.org/
5

Простые и составные условия


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

Рассмотрим пример. Будем считать слово приятным, если в нём встречаются какие-либо из сонорных согласных: л, м, н. Будем считать слово неприятным,
если в нём нет перечисленных сонорных согласных и при этом встречаются какие-либо из шипящих согласных: ч, ш, щ. В иных случаях будем считать
слово нейтральным. Как бы выглядел код, определяющий, к какой группе относится заданное слово?

and or
Вход Выход Вход Выход
True и True True True и True True
True и False False True и False True
False и True False False и True True
False и False False False и False False

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

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

Пример:
нужно проверить на чётность все числа в диапазоне от 30 до 41 включительно и вывести результат для каждого из них на экран.
for i in range(30, 42): # Условия для прохода по цикл
# Тело цикл
if i%2 == 0
print('Число', i, 'чётное'
else
print('Число', i, 'нечётное')

По умолчанию нижняя граница диапазона в функции range() равна нулю, а не единице, а указанная верхняя граница не
включается.

Пример Соответствующий диапазон и функция enumerate(), которая возвращает пары вида «счётчик-
range(10) от 0 до 9 элемент». Её можно применять, например, к строкам. 
range(1, 10) от 1 до 9
range(1, 10, 2) от 1 до 9 с шагом 2, т.е. 1, 3, 5,

for i, letter in enumerate('Привет!')


#Здесь i - номер итерации, а letter - символ номер i из строки 'Привет!
print(i, letter)

I – параметр (счетчик) цикла, A – начальное значение параметра, B – его


конечное значение, а N – шаг цикла (приращение счетчика).
:

'

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

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

sum_squares =
for i in range(20, 30)
sum_squares += i**(1/2
print(sum_squares

output: 49.41177778422102

В этом примере для каждого числа от 20 до 29 включительно выполняется тело цикла, в данном случае это прибавление к переменной sum_squares корня числа i,
после чего сумма корней выводится на экран.

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

for x in range(6)
print(x
else
print("Цикл завершен!"

output:

Цикл завершен!
1
2
3
4
5

Управление выполнением цикла


Иногда на работу программы может повлиять внешний фактор. В таких случаях программа может прекратить выполнение цикла или пропустить цикл. Для этого
используются операторы  break и continue. В Python оператор break позволяет прервать цикл при возникновении внешнего фактора. Оператор break нужно
поместить сразу после оператора цикла (обычно после выражения if).

for i in range(5)
i = i+
if i == 3
brea
print('Идёт итерация цикла №', i
print('Выполнение цикла закончено'

Output
Идёт итерация цикла №
Идёт итерация цикла №
Выполнение цикла закончено

В этой программе запускается цикл для i от 0 до 4. Каждый цикл выводит на экран информацию о том, какая итерация идёт в
текущий момент. Оператор if определяет условие прерывания цикла (в данном случае это равенство i трём). После цикла идёт ещё
один print, который информирует нас о завершении работы цикла. Как только значение i достигает 3, выполнение цикла
прекращается оператором break. 

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

Операторы break и continue  можно использовать вместо вложенного условного кода или для оптимизации
цикла.Вернёмся к предыдущему примеру и попробуем использовать оператор continue вместо break. В отличие от
break при использовании оператора continue код будет выполняться даже после прерывания цикла, когда
переменная i = 3.

Иллюстрация с сайта https://www.programiz.com/
:

Цикл while
Цикл while («пока») позволяет выполнить одну и ту же последовательность действий, пока проверяемое условие истинно. Условие записывается до тела
цикла и проверяется до выполнения тела цикла. Как правило, цикл while используется, когда невозможно определить точное значение количества проходов
исполнения цикла.

money =
year =
yearly_multiplier = 1.0

while money < 2


money = money*yearly_multiplie
year +=
else
print('Деньги удвоятся через', year, 'лет'

Output
Деньги удвоятся через 12 лет

Каждую итерацию цикла проверяется условие того, что money < 2. Если условие выполняется, то выполняется и тело цикла, в котором к year прибавляется 1, а
money умножается на 1.06 (+6%). Как только мы получили удвоение денег, то есть money >= 2, цикл перестаёт выполняться, и выполняется блок кода после
else, который выводит нужное количество лет. 

Синтаксис
В цикле while, как и в цикле for, можно применять операторы break и continue.Несмотря на удобность для
while условие некоторых задач, цикл while таит в себе и опасность. Если условие цикла while всегда выполняется (например,
тело цикл while True: ), то цикл не будет завершаться, произойдёт "зацикливание". В таком случае тело цикла будет
else выполняться бесконечное количество раз. 
код, выполняющийся при завершении цикла.
:

Что такое список?


Список в Python — это упорядоченная изменяемая коллекция объектов произвольных типов.

Важно!
Когда мы называем список коллекцией, мы имеем в виду, что в одном
списке может храниться множество объектов (например, чисел или
строковых величин).
Говоря о том, что списки представляют собой упорядоченные коллекции,
мы обращаем внимание на то, что каждый элемент в списке имеет свой
порядковый номер.
Упоминание об изменяемости списков означает, что в процессе
исполнения кода можно изменять состав элементов списка и
последовательность их расположения.
Выражение «произвольных типов» означает, что в списке могут
храниться данные, относящиеся к любым типам из тех, с которыми
работает Python.

Создание списка
1 Первый способ создания пустого (т.е. не содержащего никаких элементов) списка связан с использованием конструктора типов list:

my_list = list()

Другой вариант создания списка предполагает использование квадратных скобок, в которые заключаются элементы списка. Если
2 мы используем скобки без каких-либо элементов, список получится пустым:

my_list = []

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

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

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

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

Метод split
Данный метод применяется к строковым объектам и позволяет разбивать их на элементы, разделенные каким-либо символом (пробелом,
запятой, тире или даже целой последовательностью символов). Каждый элемент после применения метода split становится отдельным
элементом списка.
Работа с индексами
Порядковый номер элемента списка называется индекс.

Важно!
В Python, как и во многих других языках программирования,
индексация элементов списка начинается не с единицы, а с нуля.
Таким образом, самый первый элемент списка имеет индекс [0].

Для обращения к элементу списка необходимо указать имя переменной, в которой хранится список, а далее в квадратных скобках
указать индекс нужного элемента. Например, в созданном на предыдущем шаге списке animals, элемент с индексом [0] — это кошка; с
индексом 2 — хомяк, с индексом 3 — морская свинка.

Списки можно читать не только слева направо, но и справа налево. Для того, чтобы обратиться к элементу списка, просматривая его
содержимое в обратном порядке, мы можем использовать так называемую отрицательную индексацию. При использовании
отрицательных индексов самый последний элемент списка будет иметь индекс [-1], предпоследний — [-2], и так далее.

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

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

colors = ['красный', 'оранжевый', 'жёлтый', 'зелёный', 'голубой', 'синий', 'фиолетовый']

При команде colors[1:4] получим названия трёх цветов: оранжевый, жёлтый и зелёный. Элемент с индексом [4] не будет включен в состав среза.
Это особенность синтаксиса, которую нужно запомнить и использовать при работе со срезами.

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

colors[2:5]

colors[2:-2]

colors[-5:-2]
Работа со срезами
Индексы, указывающие на первый элемент среза и элемент, следующий за последним, называют границами срезов. При создании среза
элемент, чей индекс указан в качестве верхней границы, не будет включен в срез.

Для решения этой задачи можно воспользоваться простым трюком: не указывать верхнюю границу среза вовсе. Такая форма
записи трактуется интерпретатором Python как "до конца списка".

Таким же образом можно не указывать и нижний индекс, т.е. первый элемент среза, в случае, если вы хотите извлекать элементы из начала
списка:
Работа со срезами
Иногда нужно извлечь из списка не все значения подряд, а, например, каждый третий элемент, или только четные элементы. Для выполнения при
создании среза нам понадобится ещё один параметр — шаг. Шаг указывается после верхней и нижней границ среза и отделён от них двоеточием. 

rabbits = ['Пушок', 'Дружок', 'Мурзик', 'Барсик', 'Эдуард', 'Ушастик', 'Роджер', 'Трус']

Выберем каждого второго кролика начиная с Пушка

rabbits[0:7:2]

Данный код извлекает из списка кроликов с первого (индекс [0]) до последнего (индекс [7], данный кролик не включается в срез) и из полученного
набора выбирает только кроликов с индексами 0, 0+2, 0+2+2, 0+2+2+2. Если нужно включить в срез первый и (или) последний элементы, то можно
не задавать соответствующие границы
Работа со списками
Особенность любого объектно-ориентированного языка то, что при работе с разными типами объектов можно использовать только
определенные  методы. Например, операцию сложения можно применять как к числовым, так и к строковым типам, а вот умножать можно
только число на число или целое число на строку. 
Append
- добавление нового элемента в список

- создание списка с нуля

Создание элементов списка


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

Порядок сортировки (по возрастанию или по убыванию) задаётся с помощью параметра reverse.

При установке параметра reverse = False происходит сортировка списка по возрастанию, а при reverse = True список сортируется по убыванию. Те же
принципы работают и со списками, содержащими строковые данные
Статистические показатели списка

Минимальное
значение

Максимальное
значение

Подсчет количества
элементов
Генераторы списков
Python — это язык программирования со своей философией, суть которой заключается в создании краткого, структурированного, легко
читаемого кода.
Для достижения этих задач в Python используется несколько мощных конструкций, позволяющих создавать краткий, но ёмкий и
эффективный код. Одна из таких конструкций — это генераторы списков (list comprehensions). Генератор списка позволяет создать
список и заполнить его данными, используя всего одну строку кода.
Работа со словарями
Отличаются словари от списков тем, что элементом словаря является не одно, а
мя Телефон два значения. Первое называется ключом, второе — значением.
Мария Никитина 79033923029
Егор Савичев 78125849204 employee_base = {'Мария Никитина': '+79033923029'}
Александр Пахомов 79053049385
Алина Егорова 79265748370 ключ значение
Руслан Башаров 79030598495 Элементы словаря добавляются в него через запятую.

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

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

Метод setdefault. Он позволяет назначить ключу словаря определенное значение. Однако если этот ключ в словаре уже есть, то это
значение будет оставлено без изменений.
Перебор элементов словаря
Для перебора ключей и значений словаря есть три основных способа:
• ключи,
• значения,
• ключей и значений одновременно. Метод keys
Перебор элементов словаря
При замене keys на values в каждом шаге цикла в переменную попадут только значения словаря

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

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

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

contacts =
    'Борискин Владимир':
        'tel': '5387'
        'position': 'менеджер
  }
  
    'Сомова Наталья':
        'tel': '5443'
        'position': 'разработчик
  }
}
 

'

'

Хранение данных с помощью словарей и списков


Записи о событиях, которые совершаются в ходе выполнения программы или использования программы пользователями, чаще всего
записываются в файлы, которые называются логами. Логи хранятся в базах данных или в файлах.
Одним из форматов, в которых хранятся логи, является формат JSON. Этот формат позволяет хранить данные в структурном виде, то есть в
виде списков, словарей, а также более сложных вложенных конструкций. Файл в формате JSON можно открыть в обычном браузере

Словарь содержит различные параметры, такие как

• идентификатор события (id);


• идентификатор клиента (client_id);
• идентификатор пользователя (user_id);
• категория действия (category);
• действие, которое совершил пользователь (action);
• дополнительные параметры события (options).
:

Библиотека json
Для того чтобы открыть JSON-файл с помощью Python и прочитать данные, можно воспользоваться библиотекой JSON. Сейчас нам не
стоит заострять внимание на особенностях её использования.

import jso
with open('data.json', 'rb') as in le
    data = json.load(in le)

Здесь 'data.json' указывает на путь к файлу. Чтобы код сработал корректно, нужно чтобы файл с данными хранился в той же папке, в
которой вы создали ноутбук с кодом.  от код открывает файл 'data.json' и затем преобразует JSON в объекты, с которыми может
работать Python: в словари и списки. Всё это записывается в переменную data.
n

fi
fi
:

Источники:
1. ОФициальный сайт Anaconda https://www.anaconda.com/distribution/#windows
2. Google Colaboratory https://colab.research.google.com/drive/1ZTFTxeAs9BFVv6hLvIMpq0DnUBYzOsKU#scrollTo=kkhU2dWvBaFO
3. Данные платформы skillfactory.ru
4. Платформа http://pythonicway.com
5. Справка по Markdown https://github.com/sandino/Markdown-Cheatsheet
6. Python Documentation https://docs.python.org/3.7/library/functions.html#print

Дополнительные ссылки:
1. Организация словаря: https://habr.com/ru/post/247843/
2. Функции Python https://www.internet-technologies.ru/articles/funkcii-print-v-python.html
3. Jupiyter Notebook https://devpractice.ru/python-lesson-6-work-in-jupyter-notebook/
4. Операторы Python http://pythonicway.com/python-operators
5. Циклы http://inf-w.ru/?page_id=7077
6. Функция enumerate https://pythonz.net/references/named/enumerate/
7. Информация по циклу while https://rtfm.co.ua/books-translations/python_s_nulya/python-s-nulya-chast-5-cikly/python-s-nulya-chast-5-cikly-cikl-while/

Спасибо за внимание!

s/d/1p3qcq9LD4chy-Lvtn1DaJJfLtb4ho3Ef1ob3NeA9SP0/edit?
usp=sharing

Вам также может понравиться