#статьи
Исчерпывающий гайд по самому популярному фреймворку в ML от эксперта по data science и машинному обучению.
Иллюстрация: Катя Павловская для Skillbox Media
Журналист, редактор. Фанат виртуальности во всех её видах — потому о ней и пишет.
Об авторе
Ph. d. в области машиностроения, доцент Нишского университета. Основная специализация: гибридные методы оптимизации и машинное обучение в энергетике. Владеет несколькими языками программирования, среди которых Python, C#, C и JavaScript.
Pandas DataFrame активно применяют в data science, машинном обучении, научных вычислениях и многих других областях, связанных с активным использованием данных.
Эти структуры во многом похожи на SQL, таблицы Excel и Calc. Однако зачастую DataFrame быстрее, проще в использовании и мощнее — ведь это неотъемлемая часть экосистемы Python и NumPy.
Из этой статьи вы узнаете:
- Что такое DataFrame в Pandas и как его создать.
- Как получить доступ, изменить, добавить, отсортировать, отфильтровать и удалить данные.
- Как обрабатывать пропущенные значения.
- Как работать с временными рядами.
- Как быстро визуализировать данные.
Pandas DataFrame (или просто дата фреймы) — это структуры, которые состоят из:
-
данных, организованных в двух измерениях — строках и столбцах;
- и соответствующих этим строкам и столбцам меток.
Мы будем писать код в интерактивной консоли Python. Чтобы начать работу с Pandas, нужно импортировать её модуль:
>>> import pandas as pd
Если в вашем окружении нет библиотеки Pandas, установите её с помощью пакетного менеджера PIP.
Сразу приступим к практике. Представьте такую ситуацию: наша компания ищет Python-разработчиков в новую команду. Кандидатов так много, что отбирать их вручную, было бы слишком долго, поэтому нас попросили написать программу для анализа результатов тестирования.
Нас интересуют имена кандидатов (name), города проживания (city), возраст (age) и количество баллов, которое они получили в тесте по программированию (py-score):
namecityage
py-score101XavierMexico City4188.0102AnnToronto2879.0103JanaPrague3381.0104YiShanghai3480.0105RobinManchester3868.0106AmalCairo3161.0107NoriOsaka3784.0
В этой таблице первая строка содержит метки столбцов (name, city и так далее). Первый столбец содержит метки строк (101, 102 и так далее). Все остальные ячейки заполняются значениями данных.
Есть несколько способов создать data frame. В большинстве случаев используют конструктор и передают данные в виде двумерного списка, кортежа или массива NumPy. Также их можно переформатировать в словарь, Pandas Series или другие типы данных, которые в этой статье не рассматриваются.
Предположим, нам нужен словарь:
>>> data = {
... 'name': ['Xavier', 'Ann', 'Jana', 'Yi', 'Robin', 'Amal', 'Nori'],
... 'city': ['Mexico City', 'Toronto', 'Prague', 'Shanghai',
... 'Manchester', 'Cairo', 'Osaka'],
... 'age': [41, 28, 33, 34, 38, 31, 37],
... 'py-score': [88.0, 79.0, 81.0, 80.0, 68.0, 61.0, 84.0]
... }
>>> row_labels = [101, 102, 103, 104, 105, 106, 107]
В данном случае data— это переменная Python, которая ссылается на словарь, содержащий данные кандидатов. Она содержит метки столбцов:
- 'name'
- 'city'
- 'age'
- 'py-score'
А row_labels ссылается на список, содержащий метки строк, представляющих собой числа в диапазоне от 101 до 107.
Создадим Pandas DataFrame:
>>> df = pd.DataFrame(data=data, index=row_labels)
>>> df
name city age py-score
101 Xavier Mexico City 41 88.0
102 Ann Toronto 28 79.0
103 Jana Prague 33 81.0
104 Yi Shanghai 34 80.0
105 Robin Manchester 38 68.0
106 Amal Cairo 31 61.0
107 Nori Osaka 37 84.0
Здесь df — это переменная, содержащая ссылку на наш объект DataFrame. Он выглядит точно так же, как и приведённая выше таблица кандидатов, и имеет следующие функции:
- Метки строк от 101 до 107;
- Метки столбцов 'name', 'city', 'age' и 'py-score';
- Данные: имена кандидатов, города, возраст и результаты тестов Python.
В таблице представлены метки и данные из df: красные — метки столбцов, синие — метки строк, зелёные — данные.
0namecityage
py-score101XavierMexico City4188.0102AnnToronto2879.0103JanaPrague3381.0104YiShanghai3480.0105RobinManchester3868.0106AmalCairo3161.0107NoriOsaka3784.0
Иногда объекты Pandas DataFrames настолько большие, что просматривать все строки одновременно становится неудобно. Чтобы увидеть первые несколько элементов, воспользуйтесь методом head(), а для показа последних — tail(). С помощью необязательного параметра n в скобках можно регулировать количество строк, которое вы хотите отобразить:
>>> df.head(n=2)
name city age py-score
101 Xavier Mexico City 41 88.0
102 Ann Toronto 28 79.0>>> df.tail(n=2)
name city age py-score
106 Amal Cairo 31 61.0
107 Nori Osaka 37 84.0
Примечание. В зависимости от ситуации Pandas DataFrame можно рассматривать как словарь столбцов или как Pandas Series с дополнительными функциями.
Доступ к столбцам в Pandas DataFrame можно получить так же, как к значениям из словаря, — это самый удобный способ:
>>> cities = df['city']
>>> cities
101 Mexico City
102 Toronto
103 Prague
104 Shanghai
105 Manchester
106 Cairo
107 Osaka
Name: city, dtype: object
Если имя столбца — строка, представленная в виде действительного идентификатора Python, для доступа к нему можно также использовать запись через точку, то есть тем же путём, как и для атрибута экземпляра класса. Попробуем извлечь таким способом всё тот же столбец с меткой 'city', содержащей данные о местонахождении наших кандидатов:
>>> df.city
101 Mexico City
102 Toronto
103 Prague
104 Shanghai
105 Manchester
106 Cairo
107 Osaka
Name: city, dtype: object
Обратите внимание: мы извлекли как данные, так и соответствующие метки строк:
Инфографика: Катя Павловская для Skillbox MediaКаждый столбец Pandas DataFrame — это экземпляр класса Pandas.Series — структуры, которая содержит одномерные данные и их метки. Вызвать любой элемент из объектов Series можно так же, как из словаря, то есть используя его метку в качестве ключа:
>>> cities[102]
'Toronto'
В данном случае 'Toronto' — это значение данных, а 102 — соответствующая метка. В следующем разделе приведены другие способы вызвать элемент Pandas DataFrame.
Доступ ко всей строке можно получить с помощью аксессора .loc[]:
>>> df.loc[103]
name Jana
city Prague
age 33
py-score 81.0
Name: 103, dtype: object
На этот раз мы извлекли строку, соответствующую метке 103, содержащую данные кандидатки по имени Jana. Кроме самих значений данных мы видим и метки соответствующих столбцов:
Инфографика: Катя Павловская для Skillbox MediaВозвращаемая строка — тоже экземпляр Pandas.Series.
Как уже упоминалось, существует несколько способов создать дата фрейм. В этом разделе вы научитесь делать это с помощью конструктора DataFrame, используя:
- словари Python;
- списки Python;
- двумерные массивы NumPy;
- файлы.
Есть и другие методы, о которых вы можете узнать из официальной документации.
Начнём с импорта NumPy, который пригодится нам дальше:
>>> import numpy as np
>>> import Pandas as pd
Вот и всё. Теперь создадим несколько видов DataFrame.
Как вы уже знаете, Pandas DataFrame можно создать из словаря Python:
>>> d = {'x': [1, 2, 3], 'y': np.array([2, 4, 8]), 'z': 100}
>>> pd.DataFrame(d)
x y z
0 1 2 100
1 2 4 100
2 3 8 100
Ключи словаря — это метки столбцов DataFrame, а значения словаря — это значения данных в соответствующих столбцах DataFrame. Они могут содержаться в кортеже, списке, одномерном массиве NumPy, объекте Pandas Series или в одном из нескольких других типов данных. Можно также указать значение, которое будет скопировано по всему столбцу.
Можно менять порядок столбцов с помощью параметра columns, а меток строк — с помощью index:
>>> pd.DataFrame(d, index=[100, 200, 300], columns=['z', 'y', 'x'])
z y x
100 100 2 1
200 100 4 2
300 100 8 3
Как видите, мы указали метки строк 100, 200 и 300, при этом изменив порядок столбцов: z, y, x.
Другой способ создать Pandas DataFrame — использовать список словарей:
>>> l = [{'x': 1, 'y': 2, 'z': 100},
... {'x': 2, 'y': 4, 'z': 100},
... {'x': 3, 'y': 8, 'z': 100}]
>>> pd.DataFrame(l)
x y z
0 1 2 100
1 2 4 100
2 3 8 100
Опять же, ключи словаря — это метки столбцов, а значения словаря — это значения данных в DataFrame.
В качестве значений данных можно также использовать вложенные списки и даже списки списков. В этих случаях лучше явно указывать метки столбцов, строк или и того и другого:
>>> l = [[1, 2, 100],
... [2, 4, 100],
... [3, 8, 100]]
>>> pd.DataFrame(l, columns=['x', 'y', 'z'])
x y z
0 1 2 100
1 2 4 100
2 3 8 100
Аналогично можно использовать список кортежей — просто замените ими вложенные списки в приведённом выше примере.
Вы можете передать двумерный массив NumPy в DataFrame так же, как и в вышеприведённом случае с вложенным списком:
>>> arr = np.array([[1, 2, 100],
... [2, 4, 100],
... [3, 8, 100]])
>>> df_ = pd.DataFrame(arr, columns=['x', 'y', 'z'])
>>> df_
x y z
0 1 2 100
1 2 4 100
2 3 8 100
Хотя этот пример выглядит похожим на предыдущий, у него есть одно преимущество: вы можете указать необязательный параметр copy. Когда для copy установлено значение False (настройка по умолчанию), данные из массива NumPy не копируются. Это означает, что исходные данные из массива назначаются DataFrame Pandas. Если вы измените массив, ваш DataFrame тоже изменится:
>>> arr[0, 0] = 1000
>>> df_
x y z
0 1000 2 100
1 2 4 100
2 3 8 100
Как видите, когда вы изменяете первый элемент arr, вы также изменяете df_.
Примечание. Отсутствие копирования значений данных может значительно сэкономить время и вычислительную мощность при работе с большими объёмами данных.
Если же указать copy=True, вместо фактических значений в df_ будет создана копия значений arr.
Вы можете сохранять и загружать данные и метки из Pandas DataFrame в различные типы файлов, включая CSV, Excel, SQL, JSON и другие, и наоборот. Это очень мощная функция.
Сохраним DataFrame кандидатов в файл CSV с помощью метода to_csv():
>>> df.to_csv('data.csv')
Приведённый выше оператор создаст CSV-файл, вызываемый с помощью data.csv из рабочего каталога:
,name,city,age,py-score
101,Xavier,Mexico City,41,88.0
102,Ann,Toronto,28,79.0
103,Jana,Prague,33,81.0
104,Yi,Shanghai,34,80.0
105,Robin,Manchester,38,68.0
106,Amal,Cairo,31,61.0
107,Nori,Osaka,37,84.0
Загрузим его с помощью read_csv():
>>> pd.read_csv('data.csv', index_col=0)
name city age py-score
101 Xavier Mexico City 41 88.0
102 Ann Toronto 28 79.0
103 Jana Prague 33 81.0
104 Yi Shanghai 34 80.0
105 Robin Manchester 38 68.0
106 Amal Cairo 31 61.0
107 Nori Osaka 37 84.0
index_col=0 указывает на то, что метки строк должны быть расположены в первом столбце CSV-файла.
Теперь, когда мы создали DataFrame, можно извлекать из него информацию. Для этого типа объектов в Pandas доступны следующие действия:
- получение и изменение меток строк и столбцов в виде последовательностей;
- представление данных в виде массивов NumPy;
- проверка и настройке типов данных;
- анализ размеров объектов DataFrame.
Можно получить метки строк DataFrame с помощью атрибутов index и метки столбцов с помощью columns:
>>> df.index
Int64Index([1, 2, 3, 4, 5, 6, 7], dtype='int64')
>>> df.columns
Index(['name', 'city', 'age', 'py-score'], dtype='object')
Как и в любой другой последовательности в Python, вы можете получить любой элемент объекта df.columns:
>>> df.columns[1]
'city'
Помимо этих доступны другие операции последовательности, включая итерацию по меткам строк или столбцов. Однако в них редко возникает необходимость, так как Pandas предлагает другие виды итераций в DataFrames, которые вы увидите далее.
Этот подход можно использовать и для изменения меток:
>>> df.index = np.arange(10, 17)
>>> df.index
Int64Index([10, 11, 12, 13, 14, 15, 16], dtype='int64')
>>> df
name city age py-score
10 Xavier Mexico City 41 88.0
11 Ann Toronto 28 79.0
12 Jana Prague 33 81.0
13 Yi Shanghai 34 80.0
14 Robin Manchester 38 68.0
15 Amal Cairo 31 61.0
16 Nori Osaka 37 84.0
В этом примере numpy.arange() используется для создания новой последовательности меток строк, которая содержит целые числа от 10 до 16. Имейте в виду: если вы попытаетесь изменить определённый элемент index или columns, вы получите ошибку TypeError.
Иногда вам может понадобиться извлечь данные из Pandas DataFrame без меток. Чтобы получить массив NumPy с немаркированными данными, используйте метод to_numpy() или свойство values:
>>> df.to_numpy()
array([['Xavier', 'Mexico City', 41, 88.0],
['Ann', 'Toronto', 28, 79.0],
['Jana', 'Prague', 33, 81.0],
['Yi', 'Shanghai', 34, 80.0],
['Robin', 'Manchester', 38, 68.0],
['Amal', 'Cairo', 31, 61.0],
['Nori', 'Osaka', 37, 84.0]], dtype=object)
И to_numpy(), и values дают один и тот же результат: они возвращают массив NumPy с данными из DataFrame Pandas:
Инфографика: Катя Павловская для Skillbox MediaОднако в официальной документации Pandas рекомендуется использовать to_numpy(), потому что это более гибкий инструмент с полезными параметрами:
- dtype — используется, когда нужно указать тип данных результирующего массива. Значение умолчанию — None;
- copy — если хотите использовать исходные данные из DataFrame, установите этот параметр в False. Если хотите скопировать данные, установите True.
Тем не менее вам, скорее всего, чаще будет встречаться values, особенно в старых программах, потому что to_numpy() впервые был представлен только в Pandas 0.24.0.
Типы данных, или dtypes, важны, поскольку определяют объём памяти, который использует ваш DataFrame, скорость вычислений и уровень точности расчётов.
Pandas в основном построен на типах данных NumPy. Однако в Pandas 1.0 появились собственные дополнительные типы:
Типы данных для каждого столбца Pandas DataFrame можно получить с помощью dtypes:
>>> df.dtypes
name object
city object
age int64
py-score float64
dtype: object
Как видите, dtypes возвращает объект Series с именами столбцов в качестве меток и соответствующими типами данных в качестве значений.
Если вы хотите изменить тип данных одного или нескольких столбцов, используйте astype():
>>> df_ = df.astype(dtype={'age': np.int32, 'py-score': np.float32})
>>> df_.dtypes
name object
city object
age int32
py-score float32
dtype: object
Самый важный и единственный обязательный параметр для astype() — dtype. Его можно задавать как тип данных или словарь. В случае со словарём ключи будут именами столбцов, а значения — типами данных.
Как видите, типы данных для столбцов age и py-score в DataFrame df — int64 и float64 соответственно, то есть 64-битные (или 8-байтовые) целые числа и числа плавающей точкой. А в df_ для тех же столбцов устанавливаются 32-битные (4-байтовые) типы.
Атрибуты ndim, size и shape отображают, соответственно, количество измерений, количество значений данных по каждому измерению и общее количество значений данных:
>>> df_.ndim
2
>>> df_.shape
(7, 4)
>>> df_.size
28
Экземпляры DataFrame имеют два измерения (строки и столбцы), поэтому ndim имеет значение 2. С другой стороны, у объекта Series только одно измерение, поэтому для него ndim будет отображаться как 1.
В атрибуте shape хранится кортеж с количеством строк (в данном случае 7) и столбцов (4). Наконец, size отображает целое число, равное количеству значений в DataFrame (28).
С помощью memory_usage() можно узнать, сколько памяти занимает каждый столбец:
>>> df_.memory_usage()
Index 56
name 56
city 56
age 28
py-score 28
dtype: int64
Как видите, memory_usage() возвращает объект Series с именами столбцов в качестве меток и памяти в байтах в качестве данных. Если вы хотите исключить использование памяти столбцом, содержащим метки строк, установите необязательный аргумент index=False.
В приведённом выше примере последние два столбца age и py-score используют по 28 байтов памяти: столбцы имеют семь значений, каждое из которых представляет собой целое число, занимающее 32 бита, или 4 байта. 7 целых чисел, умноженных на 4 байта, дают в общей сложности 28 байтов.
Вы уже знаете, как вызвать определённую строку или столбец Pandas DataFrame в виде объекта Series:
>>> df['name']
10 Xavier
11 Ann
12 Jana
13 Yi
14 Robin
15 Amal
16 Nori
Name: name, dtype: object
>>> df.loc[10]
name Xavier
city Mexico City
age 41
py-score 88
Name: 10, dtype: object
В первом примере доступ к столбцу осуществляется с помощью name — так же, как к элементу из словаря, с использованием его метки в качестве ключа. Аналогично, если метка столбца — допустимый идентификатор Python, вы можете использовать для доступа к нему оператор точку. Во втором примере получаем строку по метке с помощью loc[].
В дополнение к loc[], Pandas предлагает метод iloc[], который извлекает строку или столбец по их целочисленному индексу. В большинстве случаев можно использовать любой из них:
>>> df.loc[10]
name Xavier
city Mexico City
age 41
py-score 88
Name: 10, dtype: object
>>> df.iloc[0]
name Xavier
city Mexico City
age 41
py-score 88
Name: 10, dtype: object
df.loc[10] возвращает строку с меткой 10. Точно так же df.iloc[0] возвращает строку с отсчитываемым от нуля индексом 0, то есть первую строку. Как видите, оба оператора возвращают одну и ту же строку в качестве объекта Series.
Всего у Pandas четыре аксессора:
- loc[] — принимает метки строк и столбцов, выдаёт Series или DataFrames. Можно использовать как для получения целых строк или столбцов, так и для их частей.
- iloc[] — принимает отсчитываемые от нуля индексы строк и столбцов, выдает Series или DataFrames.Также годится и для целых строк (столбцов), и для их частей.
- at[] — принимает метки строк и столбцов, выдаёт одно значение данных.
- iat[] — принимает отсчитываемые от нуля индексы строк и столбцов, выдаёт одно значение данных.
loc[] и iloc[] более эффективные: они поддерживают срезы и индексирование в стиле NumPy. Получим с их помощью доступ к столбцу:
>>> df.loc[:, 'city']
10 Mexico City
11 Toronto
12 Prague
13 Shanghai
14 Manchester
15 Cairo
16 Osaka
Name: city, dtype: object
>>> df.iloc[:, 1]
10 Mexico City
11 Toronto
12 Prague
13 Shanghai
14 Manchester
15 Cairo
16 Osaka
Name: city, dtype: object
df.loc[:, 'city'] выдаёт столбец city. Конструкция среза [ :] в месте метки строки означает, что должны быть включены все строки. df.iloc[:, 1] выдаёт тот же столбец, поскольку отсчитываемый от нуля индекс 1 относится ко второму столбцу city.
Как и в случае с NumPy, вы можете использовать срезы вместе со списками или массивами вместо индексов, чтобы получить несколько строк или столбцов:
>>> df.loc[11:15, ['name', 'city']]
name city
11 Ann Toronto
12 Jana Prague
13 Yi Shanghai
14 Robin Manchester
15 Amal Cairo
>>> df.iloc[1:6, [0, 1]]
name city
11 Ann Toronto
12 Jana Prague
13 Yi Shanghai
14 Robin Manchester
15 Amal Cairo
Как видно из представленных выше примеров, можно использовать:
-
срезы для получения строк с метками от 11 до 15, которые эквивалентны индексам от 1 до 5;
-
списки для получения столбцов name и city, которые эквивалентны индексам 0 и 1.
Оба оператора возвращают пересечение из искомых пяти строк и двух столбцов.
Следует отметить важное различие между loc[] и iloc[]. Когда мы задали в loc[] метки строк 11:15, то получили строки 11–15. А когда в iloc[] задали индексы 1:6, то получили строки с индексами от 1 до 5.
Причина в том, что в iloc[] остановка среза исключительная, то есть второй индекс не показывается в выдаваемых значениях. Это похоже на срезы в Python и массивы NumPy. А в loc[] индексы инклюзивны, то есть оба включаются в выдаваемые значения.
Вы можете пропускать строки и столбцы в iloc[] так же, как и при нарезке кортежей, списков и массивов NumPy:
>>> df.iloc[1:6:2, 0]
11 Ann
13 Yi
15 Amal
Name: name, dtype: object
В этом примере мы указываем нужные индексы строк с помощью среза 1:6:2. Это означает, что выборка элементов начинается со строки с индексом 1 (вторая строка), останавливается перед строкой с индексом 6 (седьмая строка) и пропускает каждую вторую строку.
Вместо среза вы можете использовать встроенный класс Python slice(), а также numpy.s[] или pd.IndexSlice[]:
>>> df.iloc[slice(1, 6, 2), 0]
11 Ann
13 Yi
15 Amal
Name: name, dtype: object
>>> df.iloc[np.s_[1:6:2], 0]
11 Ann
13 Yi
15 Amal
Name: name, dtype: object
>>> df.iloc[pd.IndexSlice[1:6:2], 0]
11 Ann
13 Yi
15 Amal
Name: name, dtype: object
Используя loc[] и iloc[], можно также получать определённые значения данных. Однако, когда вам нужно только одно значение, Pandas рекомендует использовать специализированные методы доступа at[] и iat[]:
>>> df.at[12, 'name']
'Jana'
>>> df.iat[2, 0]
'Jana'
Здесь at[] используется для получения имени одного кандидата, с помощью соответствующих меток столбца и строки, а iat[] для получения того же имени с помощью индексов.
Чтобы изменить DataFrame через аксессор, нужно задать последовательность Python, массив NumPy или число:
>>> df.loc[:, 'py-score']
10 88.0
11 79.0
12 81.0
13 80.0
14 68.0
15 61.0
16 84.0
Name: py-score, dtype: float64
>>> df.loc[:13, 'py-score'] = [40, 50, 60, 70]
>>> df.loc[14:, 'py-score'] = 0
>>> df['py-score']
10 40.0
11 50.0
12 60.0
13 70.0
14 0.0
15 0.0
16 0.0
Name: py-score, dtype: float64
Оператор df.loc[:13, 'py-score'] = [40, 50, 60, 70] изменяет первые четыре элемента в строках от 10 до 13 столбца py-score, используя значения из предоставленного списка. df.loc[14:, 'py-score'] = 0 устанавливает остальные значения в этом столбце в 0.
В следующем примере показано, как получить доступ к элементам через iloc[], используя отрицательные индексы:
>>> df.iloc[:, -1] = np.array([88.0, 79.0, 81.0, 80.0, 68.0, 61.0, 84.0])
>>> df['py-score']
10 88.0
11 79.0
12 81.0
13 80.0
14 68.0
15 61.0
16 84.0
Name: py-score, dtype: float64
Здесь мы изменили последний столбец ('py-score'), который соответствует целочисленному индексу столбца -1.
Pandas предоставляет несколько удобных методов для вставки и удаления строк и столбцов.
Допустим, нам нужно добавить нового человека в свой список кандидатов на работу. Для этого создадим новый объект Series:
>>> john = pd.Series(data=['John', 'Boston', 34, 79],
... index=df.columns, name=17)
>>> john
name John
city Boston
age 34
py-score 79
Name: 17, dtype: object
>>> john.name
17
Объект john хранит метки, соответствующие меткам столбцов из df, поэтому нам понадобится index=df.columns.
Поместим новую строку john в конец df с помощью append():
>>> df = df.append(john)
>>> df
name city age py-score
10 Xavier Mexico City 41 88.0
11 Ann Toronto 28 79.0
12 Jana Prague 33 81.0
13 Yi Shanghai 34 80.0
14 Robin Manchester 38 68.0
15 Amal Cairo 31 61.0
16 Nori Osaka 37 84.0
17 John Boston 34 79.0
Обратите внимание, как Pandas использует атрибут john.name со значением 17, чтобы указать метку для новой строки.
Мы добавили новую строку с помощью append(). Удалить её можно с помощью метода drop(), указав параметр labels:
>>> df = df.drop(labels=[17])
>>> df
name city age py-score
10 Xavier Mexico City 41 88.0
11 Ann Toronto 28 79.0
12 Jana Prague 33 81.0
13 Yi Shanghai 34 80.0
14 Robin Manchester 38 68.0
15 Amal Cairo 31 61.0
16 Nori Osaka 37 84.0
Если вы зададите inplace=True, исходный DataFrame будет изменён, а метод вернёт None.
Самый простой способ вставить столбец в DataFrame — следовать той же процедуре, которую используют при добавлении элемента в словарь. Например, вот как можно добавить столбец, содержащий баллы кандидатов по тесту JavaScript:
>>> df['js-score'] = np.array([71.0, 95.0, 88.0, 79.0, 91.0, 91.0, 80.0])
>>> df
name city age py-score js-score
10 Xavier Mexico City 41 88.0 71.0
11 Ann Toronto 28 79.0 95.0
12 Jana Prague 33 81.0 88.0
13 Yi Shanghai 34 80.0 79.0
14 Robin Manchester 38 68.0 91.0
15 Amal Cairo 31 61.0 91.0
16 Nori Osaka 37 84.0 80.0
Вы можете также добавить новый столбец с одним значением:
>>> df['total-score'] = 0.0
>>> df
name city age py-score js-score total-score
10 Xavier Mexico City 41 88.0 71.0 0.0
11 Ann Toronto 28 79.0 95.0 0.0
12 Jana Prague 33 81.0 88.0 0.0
13 Yi Shanghai 34 80.0 79.0 0.0
14 Robin Manchester 38 68.0 91.0 0.0
15 Amal Cairo 31 61.0 91.0 0.0
16 Nori Osaka 37 84.0 80.0 0.0
В DataFrame df теперь есть дополнительный столбец, заполненный нулями. Однако такой способ не позволяет указать расположение нового столбца. Если это важно, можно использовать insert(). Попробуем вставить ещё один столбец с результатами теста Django:
>>> df.insert(loc=4, column='django-score',
... value=np.array([86.0, 81.0, 78.0, 88.0, 74.0, 70.0, 81.0]))
>>> df
name city age py-score django-score js-score total-score
10 Xavier Mexico City 41 88.0 86.0 71.0 0.0
11 Ann Toronto 28 79.0 81.0 95.0 0.0
12 Jana Prague 33 81.0 78.0 88.0 0.0
13 Yi Shanghai 34 80.0 88.0 79.0 0.0
14 Robin Manchester 38 68.0 74.0 91.0 0.0
15 Amal Cairo 31 61.0 70.0 91.0 0.0
16 Nori Osaka 37 84.0 81.0 80.0 0.0
Параметр loc определяет расположение, или отсчитываемый от нуля индекс нового столбца в дата-фрейме. column устанавливает метку нового столбца, а value указывает значения данных для вставки.
Можно удалить один или несколько столбцов так же, как и в обычном словаре Python, используя оператор del:
>>> del df['total-score']
>>> df
name city age py-score django-score js-score
10 Xavier Mexico City 41 88.0 86.0 71.0
11 Ann Toronto 28 79.0 81.0 95.0
12 Jana Prague 33 81.0 78.0 88.0
13 Yi Shanghai 34 80.0 88.0 79.0
14 Robin Manchester 38 68.0 74.0 91.0
15 Amal Cairo 31 61.0 70.0 91.0
16 Nori Osaka 37 84.0 81.0 80.0
Теперь в df нет колонки total-score. Ещё одно сходство со словарями заключается в том, что можно использовать метод pop(), который удаляет указанный столбец и возвращает его. Это означает, что вы могли бы написать что-то вроде df.pop('total-score') вместо del.
Также можно удалить один или несколько столбцов с помощью drop(). Нужно лишь указать метки нужных столбцов с помощью параметра labels и выставить аргумент axis=1:
>>> df = df.drop(labels='age', axis=1)
>>> df
name city py-score django-score js-score
10 Xavier Mexico City 88.0 86.0 71.0
11 Ann Toronto 79.0 81.0 95.0
12 Jana Prague 81.0 78.0 88.0
13 Yi Shanghai 80.0 88.0 79.0
14 Robin Manchester 68.0 74.0 91.0
15 Amal Cairo 61.0 70.0 91.0
16 Nori Osaka 84.0 81.0 80.0
Например, сейчас мы удалили столбец age.
По умолчанию, drop() выдаёт дата-фрейм без указанных столбцов, если вы не передадите inplace=True.
Основные арифметические операции вроде сложения, вычитания, умножения и деления в Pandas Series и объектах DataFrame производятся так же, как и в массивах NumPy:
>>> df['py-score'] + df['js-score']
10 159.0
11 174.0
12 169.0
13 159.0
14 159.0
15 152.0
16 164.0
dtype: float64
>>> df['py-score'] / 100
10 0.88
11 0.79
12 0.81
13 0.80
14 0.68
15 0.61
16 0.84
Name: py-score, dtype: float64
Кроме того, можно вставлять новые столбцы с более сложными арифметическими действиями. Например, попробуем рассчитать total (общий балл) наших кандидатов в виде линейной комбинации их баллов по Python, Django и JavaScript:
>>> df['total'] =\
... 0.4 * df['py-score'] + 0.3 * df['django-score'] + 0.3 * df['js-score']
>>> df
name city py-score django-score js-score total
10 Xavier Mexico City 88.0 86.0 71.0 82.3
11 Ann Toronto 79.0 81.0 95.0 84.4
12 Jana Prague 81.0 78.0 88.0 82.2
13 Yi Shanghai 80.0 88.0 79.0 82.1
14 Robin Manchester 68.0 74.0 91.0 76.7
15 Amal Cairo 61.0 70.0 91.0 72.7
16 Nori Osaka 84.0 81.0 80.0 81.9
В большинстве программ с NumPy и SciPy в качестве аргументов можно передавать Pandas Series и объекты DataFrame, вместо массивов NumPy. Чтобы проиллюстрировать это, попробуем рассчитать результаты тестов кандидатов, используя процедуру NumPy numpy.average().
Вместо того чтобы передавать массив NumPy в numpy.average(), передадим часть DataFrame:
>>> import numpy as np
>>> score = df.iloc[:, 2:5]
>>> score
py-score django-score js-score
10 88.0 86.0 71.0
11 79.0 81.0 95.0
12 81.0 78.0 88.0
13 80.0 88.0 79.0
14 68.0 74.0 91.0
15 61.0 70.0 91.0
16 84.0 81.0 80.0
>>> np.average(score, axis=1,
... weights=[0.4, 0.3, 0.3])
array([82.3, 84.4, 82.2, 82.1, 76.7, 72.7, 81.9])
Переменная score ссылается на DataFrame с оценками по Python, Django и JavaScript. Используем score в качестве аргумента numpy.average() и получим линейную комбинацию столбцов с указанными весами.
Но это ещё не всё! Вы можете использовать массив NumPy, возвращаемый average() как новый столбец df. Сначала удалите существующий столбец total из df, а затем добавьте новый:
>>> del df['total']
>>> df
name city py-score django-score js-score
10 Xavier Mexico City 88.0 86.0 71.0
11 Ann Toronto 79.0 81.0 95.0
12 Jana Prague 81.0 78.0 88.0
13 Yi Shanghai 80.0 88.0 79.0
14 Robin Manchester 68.0 74.0 91.0
15 Amal Cairo 61.0 70.0 91.0
16 Nori Osaka 84.0 81.0 80.0
>>> df['total'] = np.average(df.iloc[:, 2:5], axis=1,
... weights=[0.4, 0.3, 0.3])
>>> df
name city py-score django-score js-score total
10 Xavier Mexico City 88.0 86.0 71.0 82.3
11 Ann Toronto 79.0 81.0 95.0 84.4
12 Jana Prague 81.0 78.0 88.0 82.2
13 Yi Shanghai 80.0 88.0 79.0 82.1
14 Robin Manchester 68.0 74.0 91.0 76.7
15 Amal Cairo 61.0 70.0 91.0 72.7
16 Nori Osaka 84.0 81.0 80.0 81.9
Результат такой же, как и в предыдущем примере, но здесь вместо того, чтобы писать собственный код, мы использовали готовую функцию NumPy.
Сортировать Pandas DataFrame можно с помощью sort_values():
>>> df.sort_values(by='js-score', ascending=False)
name city py-score django-score js-score total
11 Ann Toronto 79.0 81.0 95.0 84.4
14 Robin Manchester 68.0 74.0 91.0 76.7
15 Amal Cairo 61.0 70.0 91.0 72.7
12 Jana Prague 81.0 78.0 88.0 82.2
16 Nori Osaka 84.0 81.0 80.0 81.9
13 Yi Shanghai 80.0 88.0 79.0 82.1
10 Xavier Mexico City 88.0 86.0 71.0 82.3
В этом примере дата-фрейм сортируется по значениям в столбце js-score. Параметр by задает метку строки или столбца для сортировки, ascending указывает сортировать элементы по возрастанию (True) или по убыванию (False). По умолчанию элементы сортируются по убыванию. Параметр axis определяет, что будет сортироваться: строки (axis=0) или столбцы (axis=1).
Если вы хотите отсортировать по нескольким столбцам, просто передайте списки в качестве аргументов для by и ascending:
>>> df.sort_values(by=['total', 'py-score'], ascending=[False, False])
name city py-score django-score js-score total
11 Ann Toronto 79.0 81.0 95.0 84.4
10 Xavier Mexico City 88.0 86.0 71.0 82.3
12 Jana Prague 81.0 78.0 88.0 82.2
13 Yi Shanghai 80.0 88.0 79.0 82.1
16 Nori Osaka 84.0 81.0 80.0 81.9
14 Robin Manchester 68.0 74.0 91.0 76.7
15 Amal Cairo 61.0 70.0 91.0 72.7
В этом случае DataFrame сортируется по столбцу total, но если два значения совпадают, их порядок определяется значениями из столбца py-score.
Необязательный параметр inplace также можно использовать с sort_values(). По умолчанию оно установлено в False, что обеспечивает выдачу нового DataFrame. Когда вы установите inplace=True, существующий DataFrame изменится и sort_values() вернёт None.
Если вы когда-нибудь пробовали сортировать значения в Excel, то подход Pandas может показаться вам более эффективным и удобным. Когда у вас есть большие объёмы данных, Pandas значительно превосходит Excel.
Фильтрация данных — ещё одна суперспособность Pandas. Она работает аналогично индексации логических массивов в NumPy.
Если применить какую-либо логическую операцию к объекту Series, получится ещё одна серия с логическими значениями True и False:
>>> filter_ = df['django-score'] >= 80
>>> filter_
10 True
11 True
12 False
13 True
14 False
15 False
16 True
Name: django-score, dtype: bool
В данном случае df['django-score'] >= 80. То есть True присваивается строкам, в которых оценка по Django больше или равна 80, а False —для строк с оценкой Django меньше 80.
Теперь у вас есть серия filter_, заполненная булевыми значениями. Выражение df[filter_] выдаёт Pandas DataFrame со строками df, где в filter_ стоит True:
>>> df[filter_]
name city py-score django-score js-score total
10 Xavier Mexico City 88.0 86.0 71.0 82.3
11 Ann Toronto 79.0 81.0 95.0 84.4
13 Yi Shanghai 80.0 88.0 79.0 82.1
16 Nori Osaka 84.0 81.0 80.0 81.9
Как видите, в filter_[10], filter_[11], filter_[13] и filter_[16] стоит True, а в filter_[12], filter_[14] и filter_[15] — False, поэтому соответствующие строки не появляются в df[filter_].
Вы можете создавать сложные выражения, комбинируя логические операции со следующими операторами:
- NOT( ~)
- AND( &)
- OR( |)
- XOR( ^)
Например, попробуем получить DataFrame с кандидатами, чьи результаты py-score и js-score больше или равны 80:
>>> df[(df['py-score'] >= 80) & (df['js-score'] >= 80)]
name city py-score django-score js-score total
12 Jana Prague 81.0 78.0 88.0 82.2
16 Nori Osaka 84.0 81.0 80.0 81.9
Выражение (df['py-score'] >= 80) & (df['js-score'] >= 80) задаёт True в строках, где py-score и js-score больше или равны 80, и False — в остальных. В этом случае только строки с метками 12 и 16 удовлетворяют обоим условиям.
Для некоторых операций, требующих фильтрации данных, удобнее использовать where():
>>> df['django-score'].where(cond=df['django-score'] >= 80, other=0.0)
10 86.0
11 81.0
12 0.0
13 88.0
14 0.0
15 0.0
16 81.0
Name: django-score, dtype: float64
В данном примере условие — df['django-score'] >= 80. Значения DataFrame или Series, которые вызываются, при использовании where() останутся True и будут заменены значением в параметре other (в данном случае 0.0), если условие не выполняется.
Pandas предоставляет множество статистических методов для DataFrames. Базовую статистику для числовых столбцов в DataFrame можно получить с помощью метода describe():
>>> df.describe()
py-score django-score js-score total
count 7.000000 7.000000 7.000000 7.000000
mean 77.285714 79.714286 85.000000 80.328571
std 9.446592 6.343350 8.544004 4.101510
min 61.000000 70.000000 71.000000 72.700000
25% 73.500000 76.000000 79.500000 79.300000
50% 80.000000 81.000000 88.000000 82.100000
75% 82.500000 83.500000 91.000000 82.250000
max 88.000000 88.000000 95.000000 84.400000
В этом примере describe() возвращает новый DataFrame с количеством строк, указанным в count, а также средним значением, стандартным отклонением, минимумом, максимумом и квартилями столбцов.
Если вы хотите получить конкретную статистику для некоторых или всех ваших столбцов, можно вызвать такие методы, как mean() или std():
>>> df.mean()
py-score 77.285714
django-score 79.714286
js-score 85.000000
total 80.328571
dtype: float64
>>> df['py-score'].mean()
77.28571428571429
>>> df.std()
py-score 9.446592
django-score 6.343350
js-score 8.544004
total 4.101510
dtype: float64
>>> df['py-score'].std()
9.446591726019244
При применении к Pandas DataFrame эти методы позволяют выдать Series с результатами для каждого столбца. При применении к объекту Series или одному столбцу будут выданы скаляры.
Узнать больше о статистических вычислениях в Pandas, и ознакомиться с описательной статистикой в Python можно в этой статье. А изучить работу с корреляцией в NumPy, SciPy и Pandas — в этой.
Отсутствующие данные очень распространены в науке о данных и машинном обучении. К счасть, у Pandas есть очень мощные функции для работы с ними. Более того, в его документации есть целый раздел, посвящённый работе с отсутствующими данными.
Pandas обычно представляет отсутствующие данные значениями NaN (не число). В Python вы можете получить NaN с помощью float('nan'), math.nan или numpy.nan. Начиная с Pandas 1.0, используются также BooleanDtype, Int8Dtype, Int16Dtype, Int32Dtype и Int64Dtype. Вот пример работы с отсутствующим значением:
>>> df_ = pd.DataFrame({'x': [1, 2, np.nan, 4]})
>>> df_
x
0 1.0
1 2.0
2 NaN
3 4.0
Переменная df_ относится к DataFrame с одним столбцом x и четырьмя значениями. Третье значение NaN по умолчанию считается отсутствующим.
Многие методы Pandas опускают значения NaN при выполнении вычислений, если только они явно не указаны:
>>> df_.mean()
x 2.333333
dtype: float64
>>> df_.mean(skipna=False)
x NaN
dtype: float64
В первом примере df_.mean() вычисляет среднее значение без учёта NaN (третьего значения). Он просто принимает 1.0, 2.0 и 4.0 и выдаёт их среднее значение, равное 2.33.
Однако, если вы с помощью skipna=False прикажете mean() не пропускать NaN, то он будет возвращать их там, где отсутствует значение.
В Pandas есть несколько способов заполнения или замены отсутствующих значений другими значениями. Один из самых удобных — fillna(). Он позволяет заменять NaN на:
- указанные значения,
- значение выше пропущенного значения,
- значение ниже пропущенного значения.
Вот как вы можете применить параметры, упомянутые выше:
>>> df_.fillna(value=0)
x
0 1.0
1 2.0
2 0.0
3 4.0
>>> df_.fillna(method='ffill')
x
0 1.0
1 2.0
2 2.0
3 4.0
>>> df_.fillna(method='bfill')
x
0 1.0
1 2.0
2 4.0
3 4.0
В первом примере fillna(value=0) вставляет число 0.0, которое указано в value. Во втором fillna(method='ffill') заменяет отсутствующее значение тем, что расположено над ним, то есть 2.0. А в третьем fillna(method='bfill') вставляет то, что расположено ниже отсутствующего значения, то есть 4.0.
Другой популярный вариант — применить интерполяцию и заменить отсутствующие значения интерполированными с помощью interpolate():
>>> df_.interpolate()
x
0 1.0
1 2.0
2 3.0
3 4.0
Также можно использовать необязательный параметр inplace с fillna(). Это позволит:
- Создавать и возвращать новый DataFrame, когда inplace=False;
- Изменять существующий DataFrame на None когда inplace=True.
По умолчанию параметр inplace равен False. Однако его полезно устанавливать в True, во время работы с большими объёмами данных для предотвращения ненужного и неэффективного копирования.
В некоторых ситуациях может потребоваться удалить строки или даже столбцы, в которых отсутствуют значения. Сделать это можно с помощью dropna():
>>> df_.dropna()
x
0 1.0
1 2.0
3 4.0
В приведённом выше примере метод dropna() удаляет строку с NaN, вместе с её меткой. Он также имеет необязательный параметр inplace, который ведёт себя так же, как .fillna() и .interpolate().
Как мы уже знаем, метки строк и столбцов DataFrame можно получить в виде последовательностей с помощью атрибутов index и columns. Их можно использовать также для перебора меток и получения или установки значений данных. Однако Pandas предоставляет несколько более удобных методов итерации:
Каждая итерация items() и iteritems() возвращает кортеж с именем и данными столбца в виде объекта Series:
>>> for col_label, col in df.iteritems():
... print(col_label, col, sep='\n', end='\n\n')
...
name
10 Xavier
11 Ann
12 Jana
13 Yi
14 Robin
15 Amal
16 Nori
Name: name, dtype: object
city
10 Mexico City
11 Toronto
12 Prague
13 Shanghai
14 Manchester
15 Cairo
16 Osaka
Name: city, dtype: object
py-score
10 88.0
11 79.0
12 81.0
13 80.0
14 68.0
15 61.0
16 84.0
Name: py-score, dtype: float64
django-score
10 86.0
11 81.0
12 78.0
13 88.0
14 74.0
15 70.0
16 81.0
Name: django-score, dtype: float64
js-score
10 71.0
11 95.0
12 88.0
13 79.0
14 91.0
15 91.0
16 80.0
Name: js-score, dtype: float64
total
10 82.3
11 84.4
12 82.2
13 82.1
14 76.7
15 72.7
16 81.9
Name: total, dtype: float64
Каждая итерация с помощью iterrows() даёт кортеж с именем строки и данными строки в виде серии:
>>> for row_label, row in df.iterrows():
... print(row_label, row, sep='\n', end='\n\n')
...
10
name Xavier
city Mexico City
py-score 88
django-score 86
js-score 71
total 82.3
Name: 10, dtype: object
11
name Ann
city Toronto
py-score 79
django-score 81
js-score 95
total 84.4
Name: 11, dtype: object
12
name Jana
city Prague
py-score 81
django-score 78
js-score 88
total 82.2
Name: 12, dtype: object
13
name Yi
city Shanghai
py-score 80
django-score 88
js-score 79
total 82.1
Name: 13, dtype: object
14
name Robin
city Manchester
py-score 68
django-score 74
js-score 91
total 76.7
Name: 14, dtype: object
15
name Amal
city Cairo
py-score 61
django-score 70
js-score 91
total 72.7
Name: 15, dtype: object
16
name Nori
city Osaka
py-score 84
django-score 81
js-score 80
total 81.9
Name: 16, dtype: object
Точно так же itertuples() перебирает строки и на каждой итерации (опционально) даёт именованный кортеж с индексом и данными:
>>> for row in df.loc[:, ['name', 'city', 'total']].itertuples():
... print(row)
...
Pandas(Index=10, name='Xavier', city='Mexico City', total=82.3)
Pandas(Index=11, name='Ann', city='Toronto', total=84.4)
Pandas(Index=12, name='Jana', city='Prague', total=82.19999999999999)
Pandas(Index=13, name='Yi', city='Shanghai', total=82.1)
Pandas(Index=14, name='Robin', city='Manchester', total=76.7)
Pandas(Index=15, name='Amal', city='Cairo', total=72.7)
Pandas(Index=16, name='Nori', city='Osaka', total=81.9)
Имя кортежа устанавливается параметром name. Дополнительно можно указать, включать ли метки строк в index (по умолчанию установлен в True).
Pandas отлично справляется с временными рядами. Хотя эта функция частично основана на datetimes и timedeltas, Pandas обеспечивает гораздо большую гибкость.
Попробуем создать дата-фрейм, используя почасовые данные о температуре за день.
Начнём со списка (кортежа, массива NumPy или другого типа данных) со значениями данных, которые будут представлять собой почасовую температуру, указанную в градусах Цельсия:
>>> temp_c = [ 8.0, 7.1, 6.8, 6.4, 6.0, 5.4, 4.8, 5.0,
... 9.1, 12.8, 15.3, 19.1, 21.2, 22.1, 22.4, 23.1,
... 21.0, 17.9, 15.5, 14.4, 11.9, 11.0, 10.2, 9.1]
Переменная temp_c ссылается на список значений температуры.
Следующий шаг — создание последовательности дат и времени. Для этого в Pandas есть очень удобная функция date_range(), ранжирующая аргументы, которые вы используете для указания начала или конца диапазона, количества периодов, частоты, часового пояса и так далее:
>>> dt = pd.date_range(start='2019-10-27 00:00:00.0', periods=24,
... freq='H')
>>> dt
DatetimeIndex(['2019-10-27 00:00:00', '2019-10-27 01:00:00',
'2019-10-27 02:00:00', '2019-10-27 03:00:00',
'2019-10-27 04:00:00', '2019-10-27 05:00:00',
'2019-10-27 06:00:00', '2019-10-27 07:00:00',
'2019-10-27 08:00:00', '2019-10-27 09:00:00',
'2019-10-27 10:00:00', '2019-10-27 11:00:00',
'2019-10-27 12:00:00', '2019-10-27 13:00:00',
'2019-10-27 14:00:00', '2019-10-27 15:00:00',
'2019-10-27 16:00:00', '2019-10-27 17:00:00',
'2019-10-27 18:00:00', '2019-10-27 19:00:00',
'2019-10-27 20:00:00', '2019-10-27 21:00:00',
'2019-10-27 22:00:00', '2019-10-27 23:00:00'],
dtype='datetime64[ns]', freq='H')
Теперь создадим DataFrame. Во многих случаях удобно использовать значения даты и времени в качестве меток строк:
>>> temp = pd.DataFrame(data={'temp_c': temp_c}, index=dt)
>>> temp
temp_c
2019-10-27 00:00:00 8.0
2019-10-27 01:00:00 7.1
2019-10-27 02:00:00 6.8
2019-10-27 03:00:00 6.4
2019-10-27 04:00:00 6.0
2019-10-27 05:00:00 5.4
2019-10-27 06:00:00 4.8
2019-10-27 07:00:00 5.0
2019-10-27 08:00:00 9.1
2019-10-27 09:00:00 12.8
2019-10-27 10:00:00 15.3
2019-10-27 11:00:00 19.1
2019-10-27 12:00:00 21.2
2019-10-27 13:00:00 22.1
2019-10-27 14:00:00 22.4
2019-10-27 15:00:00 23.1
2019-10-27 16:00:00 21.0
2019-10-27 17:00:00 17.9
2019-10-27 18:00:00 15.5
2019-10-27 19:00:00 14.4
2019-10-27 20:00:00 11.9
2019-10-27 21:00:00 11.0
2019-10-27 22:00:00 10.2
2019-10-27 23:00:00 9.1
К DataFrame с данными временных рядов можно применить срезы, чтобы получить только часть информации:
>>> temp['2019-10-27 05':'2019-10-27 14']
temp_c
2019-10-27 05:00:00 5.4
2019-10-27 06:00:00 4.8
2019-10-27 07:00:00 5.0
2019-10-27 08:00:00 9.1
2019-10-27 09:00:00 12.8
2019-10-27 10:00:00 15.3
2019-10-27 11:00:00 19.1
2019-10-27 12:00:00 21.2
2019-10-27 13:00:00 22.1
2019-10-27 14:00:00 22.4
В этом примере показано, как извлечь значения температуры между 05:00 и 14:00. Pandas понимает, что метки строк — это значения даты и времени, и соответственно их интерпретирует.
Если вы хотите разбить день на четыре шестичасовых интервала и получить среднюю температуру для каждого из них, в Pandas есть метод resample(), который можно комбинировать с другими, например с mean():
>>> temp.resample(rule='6h').mean()
temp_c
2019-10-27 00:00:00 6.616667
2019-10-27 06:00:00 11.016667
2019-10-27 12:00:00 21.283333
2019-10-27 18:00:00 12.016667
Каждая строка соответствует одному шестичасовому интервалу. Например, значение 6.616667 представляет собой среднее значение первых шести температур из дата-фрейма temp, тогда как 12.016667 — среднее значение последних шести значений температуры.
Вместо mean() можно применить min() или max(). Аналогично можно использовать sum() для получения сумм значений данных. Вы можете свернуть окно, выбрав другой набор смежных строк для вычислений.
Первое окно начинается с первой строки в DataFrame и включает столько смежных строк, сколько вы укажете. Затем можно переместить окно вниз на одну строку, опуская первую строку и добавляя ту, которая идёт сразу после последней, и снова вычислить ту же статистику. Процесс нужно повторять, пока вы не дойдёте до последней строки DataFrame. Для этого в Pandas есть метод rolling():
>>> temp.rolling(window=3).mean()
temp_c
2019-10-27 00:00:00 NaN
2019-10-27 01:00:00 NaN
2019-10-27 02:00:00 7.300000
2019-10-27 03:00:00 6.766667
2019-10-27 04:00:00 6.400000
2019-10-27 05:00:00 5.933333
2019-10-27 06:00:00 5.400000
2019-10-27 07:00:00 5.066667
2019-10-27 08:00:00 6.300000
2019-10-27 09:00:00 8.966667
2019-10-27 10:00:00 12.400000
2019-10-27 11:00:00 15.733333
2019-10-27 12:00:00 18.533333
2019-10-27 13:00:00 20.800000
2019-10-27 14:00:00 21.900000
2019-10-27 15:00:00 22.533333
2019-10-27 16:00:00 22.166667
2019-10-27 17:00:00 20.666667
2019-10-27 18:00:00 18.133333
2019-10-27 19:00:00 15.933333
2019-10-27 20:00:00 13.933333
2019-10-27 21:00:00 12.433333
2019-10-27 22:00:00 11.033333
2019-10-27 23:00:00 10.100000
Параметр window определяет размер скользящего временного окна.
В приведённом выше примере третье значение (7.3) представляет собой среднюю температуру за первые три часа (00:00:00, 01:00:00 и 02:00:00). Четвёртое — среднюю температуру за часы 02:00:00, 03:00:00 и 04:00:00. Последнее — среднюю температуру за последние три часа, 21:00:00, 22:00:00 и 23:00:00. Первые два значения отсутствуют, так как для их вычисления не хватило данных.
Pandas позволяет визуализировать данные или создавать графики на основе DataFrames с использованием Matplotlib в фоновом режиме, поэтому построение графиков в Pandas очень похоже на работу с Matplotlib.
Для работы с графиками сначала нужно импортировать модуль matplotlib.pyplot:
>>> import matplotlib.pyplot as plt
Теперь вы можете создавать графики с Pandas.DataFrame.plot() и визуализировать их с plt.show():
>>> temp.plot()
<matplotlib.axes._subplots.AxesSubplot object at 0x7f070cd9d950>
>>> plt.show()
Команда plot() отображает объект plot, который выглядит так:
Инфографика: Катя Павловская для Skillbox MediaТот же результат можно получить, применив plot.line(). У plot() и plot.line() есть много необязательных параметров, которые позволяют указать внешний вид графика.
Для сохранения изображения используется объединённая команда get_figure().savefig():
>>> temp.plot().get_figure().savefig('temperatures.png')
В результате график сохраняется в рабочем каталоге как файл temperatures.png.
Pandas DataFrame позволяет создавать разные типы графиков. Например, с помощью plot.hist() можно визуализировать данные кандидатов в виде гистограммы:
>>> df.loc[:, ['py-score', 'total']].plot.hist(bins=5, alpha=0.4)
<matplotlib.axes._subplots.AxesSubplot object at 0x7f070c69edd0>
>>> plt.show()
Выглядит это так:
Инфографика: Катя Павловская для Skillbox MediaНастроить детали можно с помощью дополнительных методов и параметров: plot.hist(), plt.rcParams и многих других. Более подробную информацию вы найдёте в бесплатном учебнике Anatomy of Matplotlib.
Pandas DataFrames — это очень многофункциональные объекты, которые поддерживают многие операции, не упомянутые в этой статье:
Большинство доступных опций хорошо описано в официальном учебнике по Pandas. Если вы хотите узнать больше, можно ознакомиться со следующими руководствами (все они написаны на английском языке):
Если вам нужно работать данными более чем в двух измерениях, можно использовать Xarray — ещё одну мощную библиотеку Python, очень похожую на Pandas.
Для работы с большими объёмами данных есть также DataFrame API в Dask.
Из этого гайда вы узнали:
- Что такое Pandas DataFrame и как его создать.
- Как получить доступ, изменить, добавить, отсортировать, отфильтровать и удалить данные.
- Как использовать подпрограммы NumPy с DataFrames.
- Как обрабатывать пропущенные значения.
- Как работать с данными временных рядов.
- Как визуализировать данные, содержащиеся в DataFrames.
Если хотите глубже изучить работу с данными в Python, ознакомьтесь с другими руководствами по Pandas на сайте Real Python.
Python для всех
Вы освоите Python на практике и создадите проекты для портфолио — телеграм-бот, веб-парсер и сайт с нуля. А ещё получите готовый план выхода на удалёнку и фриланс. Спикер — руководитель отдела разработки в «Сбере».
Пройти бесплатно
Бесплатный курс по разработке на Python ➞
Пройдите бесплатный курс по Python и создайте с нуля телеграм-бот, веб-парсер и сайт. Спикер — руководитель отдела разработки в «Сбере».
Пройти курс
<!DOCTYPE html>
<html class="l-html" lang="ru">
<head>
<script>
mindbox = window.mindbox || function() { mindbox.queue.push(arguments); };
mindbox.queue = mindbox.queue || [];
mindbox('create', {
endpointId: 'skillbox.skillboxMediaWebsite'
});
</script>
<script src="https://api.s.mindbox.ru/scripts/v1/tracker.js" async></script>
<script>window.yaContextCb = window.yaContextCb || []</script>
<script src="https://yandex.ru/ads/system/context.js" async></script>
<!-- Google Tag Manager -->
<script async data-skip-moving="true" type="text/javascript">
/** Google Tagmanager */
;(function (w, d, s, l, i) {
w[l] = w[l] || [];
w[l].push({
'gtm.start':
new Date().getTime(), event: 'gtm.js'
});
var f = d.getElementsByTagName(s)[0],
j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : '';
j.async = true;
j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', 'GTM-NLCGQ25');
window.dataLayer = window.dataLayer || [];
function gtag() {
window.dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'GTM-NLCGQ25');
</script>
<!-- End Google Tag Manager -->
<!-- Retail Rocket -->
<script type="text/javascript">
var rrPartnerId = "6048a0d097a52514f050731f";
var rrApi = {};
var rrApiOnReady = rrApiOnReady || [];
rrApi.addToBasket = rrApi.order = rrApi.categoryView = rrApi.view =
rrApi.recomMouseDown = rrApi.recomAddToCart = function() {};
(function(d) {
var ref = d.getElementsByTagName('script')[0];
var apiJs, apiJsId = 'rrApi-jssdk';
if (d.getElementById(apiJsId)) return;
apiJs = d.createElement('script');
apiJs.id = apiJsId;
apiJs.async = true;
apiJs.src = "//cdn.retailrocket.ru/content/javascript/tracking.js";
ref.parentNode.insertBefore(apiJs, ref);
}(document));
</script>
<!-- End Retail Rocket -->
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="X-UA-Compatible" content="ie=edge"/>
<meta name="google-site-verification" content="UA-kf725UpqwkHenFmDQ05SW115fL9UdD9uXiFy-ibQ"/>
<meta name="robots" content="index, follow"/>
<link rel="dns-prefetch" href="//fonts.googleapis.com">
<link rel="shortcut icon" href="/favicon.ico">
<link rel="canonical" href="https://skillbox.ru/media/code/pandas-dataframe-kak-upoitelno-rabotat-s-dannymi/">
<link rel="preload" href="https://marketplace.canva.com/EAD2962NKnQ/2/0/1600w/canva-rainbow-gradient-pink-and-purple-zoom-virtual-background-_Tcjok-d9b4.jpg" as="image" />
<link rel="preload" href="https://via.placeholder.com/1170x250/92c952" as="image" />
<link rel="preload" href="https://via.placeholder.com/768x250/40E0D0" as="image" />
<link rel="preload" href="https://via.placeholder.com/375x250/ffbcee" as="image" />
<title>Pandas DataFrame в Python: самый полный гайд для новичков / Skillbox Media</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="keywords" content="pandas dataframe, датафрейм это, data frame" />
<meta name="description" content="Pandas DataFrame в Python — что это за структуры и как с ними работать: как создавать, как получать метки, доступы, вставлять и удалять данные, выполнять арифметические операции и не только. Подробный гайд по DataFrame для новичков." />
<link href="/bitrix/cache/css/s1/media/kernel_main/kernel_main_v1.css?177096852510536" type="text/css" rel="stylesheet" />
<link href="/bitrix/js/ui/fonts/opensans/ui.font.opensans.css?16341171742599" type="text/css" rel="stylesheet" />
<link href="/bitrix/js/main/popup/dist/main.popup.bundle.css?163411696226345" type="text/css" rel="stylesheet" />
<link href="//cdnjs.cloudflare.com/ajax/libs/Swiper/4.5.1/css/swiper.min.css" type="text/css" rel="stylesheet" />
<link href="/bitrix/cache/css/s1/media/page_a1ad23d5ae1fea4c6ac7c690c80a4763/page_a1ad23d5ae1fea4c6ac7c690c80a4763_v1.css?1771490810746236" type="text/css" rel="stylesheet" />
<link href="/bitrix/cache/css/s1/media/template_176a7c2453ad8025fa7d27f65ba6a4b1/template_176a7c2453ad8025fa7d27f65ba6a4b1_v1.css?1771490810442835" type="text/css" data-template-style="true" rel="stylesheet" />
<script type="text/javascript">if(!window.BX)window.BX={};if(!window.BX.message)window.BX.message=function(mess){if(typeof mess==='object'){for(let i in mess) {BX.message[i]=mess[i];} return true;}};</script>
<script type="text/javascript">(window.BX||top.BX).message({'JS_CORE_LOADING':'Загрузка...','JS_CORE_NO_DATA':'- Нет данных -','JS_CORE_WINDOW_CLOSE':'Закрыть','JS_CORE_WINDOW_EXPAND':'Развернуть','JS_CORE_WINDOW_NARROW':'Свернуть в окно','JS_CORE_WINDOW_SAVE':'Сохранить','JS_CORE_WINDOW_CANCEL':'Отменить','JS_CORE_WINDOW_CONTINUE':'Продолжить','JS_CORE_H':'ч','JS_CORE_M':'м','JS_CORE_S':'с','JSADM_AI_HIDE_EXTRA':'Скрыть лишние','JSADM_AI_ALL_NOTIF':'Показать все','JSADM_AUTH_REQ':'Требуется авторизация!','JS_CORE_WINDOW_AUTH':'Войти','JS_CORE_IMAGE_FULL':'Полный размер'});</script>
<script type="text/javascript" src="/bitrix/js/main/core/core.js?1634117028565340"></script>
<script>BX.setJSList(['/bitrix/js/main/core/core_ajax.js','/bitrix/js/main/core/core_promise.js','/bitrix/js/main/polyfill/promise/js/promise.js','/bitrix/js/main/loadext/loadext.js','/bitrix/js/main/loadext/extension.js','/bitrix/js/main/polyfill/promise/js/promise.js','/bitrix/js/main/polyfill/find/js/find.js','/bitrix/js/main/polyfill/includes/js/includes.js','/bitrix/js/main/polyfill/matches/js/matches.js','/bitrix/js/ui/polyfill/closest/js/closest.js','/bitrix/js/main/polyfill/fill/main.polyfill.fill.js','/bitrix/js/main/polyfill/find/js/find.js','/bitrix/js/main/polyfill/matches/js/matches.js','/bitrix/js/main/polyfill/core/dist/polyfill.bundle.js','/bitrix/js/main/core/core.js','/bitrix/js/main/polyfill/intersectionobserver/js/intersectionobserver.js','/bitrix/js/main/lazyload/dist/lazyload.bundle.js','/bitrix/js/main/polyfill/core/dist/polyfill.bundle.js','/bitrix/js/main/parambag/dist/parambag.bundle.js']);
BX.setCSSList(['/bitrix/js/main/lazyload/dist/lazyload.bundle.css','/bitrix/js/main/parambag/dist/parambag.bundle.css']);</script>
<script type="text/javascript">(window.BX||top.BX).message({'AMPM_MODE':false});(window.BX||top.BX).message({'MONTH_1':'Январь','MONTH_2':'Февраль','MONTH_3':'Март','MONTH_4':'Апрель','MONTH_5':'Май','MONTH_6':'Июнь','MONTH_7':'Июль','MONTH_8':'Август','MONTH_9':'Сентябрь','MONTH_10':'Октябрь','MONTH_11':'Ноябрь','MONTH_12':'Декабрь','MONTH_1_S':'января','MONTH_2_S':'февраля','MONTH_3_S':'марта','MONTH_4_S':'апреля','MONTH_5_S':'мая','MONTH_6_S':'июня','MONTH_7_S':'июля','MONTH_8_S':'августа','MONTH_9_S':'сентября','MONTH_10_S':'октября','MONTH_11_S':'ноября','MONTH_12_S':'декабря','MON_1':'янв','MON_2':'фев','MON_3':'мар','MON_4':'апр','MON_5':'май','MON_6':'июн','MON_7':'июл','MON_8':'авг','MON_9':'сен','MON_10':'окт','MON_11':'ноя','MON_12':'дек','DAY_OF_WEEK_0':'Воскресенье','DAY_OF_WEEK_1':'Понедельник','DAY_OF_WEEK_2':'Вторник','DAY_OF_WEEK_3':'Среда','DAY_OF_WEEK_4':'Четверг','DAY_OF_WEEK_5':'Пятница','DAY_OF_WEEK_6':'Суббота','DOW_0':'Вс','DOW_1':'Пн','DOW_2':'Вт','DOW_3':'Ср','DOW_4':'Чт','DOW_5':'Пт','DOW_6':'Сб','FD_SECOND_AGO_0':'#VALUE# секунд назад','FD_SECOND_AGO_1':'#VALUE# секунду назад','FD_SECOND_AGO_10_20':'#VALUE# секунд назад','FD_SECOND_AGO_MOD_1':'#VALUE# секунду назад','FD_SECOND_AGO_MOD_2_4':'#VALUE# секунды назад','FD_SECOND_AGO_MOD_OTHER':'#VALUE# секунд назад','FD_SECOND_DIFF_0':'#VALUE# секунд','FD_SECOND_DIFF_1':'#VALUE# секунда','FD_SECOND_DIFF_10_20':'#VALUE# секунд','FD_SECOND_DIFF_MOD_1':'#VALUE# секунда','FD_SECOND_DIFF_MOD_2_4':'#VALUE# секунды','FD_SECOND_DIFF_MOD_OTHER':'#VALUE# секунд','FD_SECOND_SHORT':'#VALUE#с','FD_MINUTE_AGO_0':'#VALUE# минут назад','FD_MINUTE_AGO_1':'#VALUE# минуту назад','FD_MINUTE_AGO_10_20':'#VALUE# минут назад','FD_MINUTE_AGO_MOD_1':'#VALUE# минуту назад','FD_MINUTE_AGO_MOD_2_4':'#VALUE# минуты назад','FD_MINUTE_AGO_MOD_OTHER':'#VALUE# минут назад','FD_MINUTE_DIFF_0':'#VALUE# минут','FD_MINUTE_DIFF_1':'#VALUE# минута','FD_MINUTE_DIFF_10_20':'#VALUE# минут','FD_MINUTE_DIFF_MOD_1':'#VALUE# минута','FD_MINUTE_DIFF_MOD_2_4':'#VALUE# минуты','FD_MINUTE_DIFF_MOD_OTHER':'#VALUE# минут','FD_MINUTE_0':'#VALUE# минут','FD_MINUTE_1':'#VALUE# минуту','FD_MINUTE_10_20':'#VALUE# минут','FD_MINUTE_MOD_1':'#VALUE# минуту','FD_MINUTE_MOD_2_4':'#VALUE# минуты','FD_MINUTE_MOD_OTHER':'#VALUE# минут','FD_MINUTE_SHORT':'#VALUE#мин','FD_HOUR_AGO_0':'#VALUE# часов назад','FD_HOUR_AGO_1':'#VALUE# час назад','FD_HOUR_AGO_10_20':'#VALUE# часов назад','FD_HOUR_AGO_MOD_1':'#VALUE# час назад','FD_HOUR_AGO_MOD_2_4':'#VALUE# часа назад','FD_HOUR_AGO_MOD_OTHER':'#VALUE# часов назад','FD_HOUR_DIFF_0':'#VALUE# часов','FD_HOUR_DIFF_1':'#VALUE# час','FD_HOUR_DIFF_10_20':'#VALUE# часов','FD_HOUR_DIFF_MOD_1':'#VALUE# час','FD_HOUR_DIFF_MOD_2_4':'#VALUE# часа','FD_HOUR_DIFF_MOD_OTHER':'#VALUE# часов','FD_HOUR_SHORT':'#VALUE#ч','FD_YESTERDAY':'вчера','FD_TODAY':'сегодня','FD_TOMORROW':'завтра','FD_DAY_AGO_0':'#VALUE# дней назад','FD_DAY_AGO_1':'#VALUE# день назад','FD_DAY_AGO_10_20':'#VALUE# дней назад','FD_DAY_AGO_MOD_1':'#VALUE# день назад','FD_DAY_AGO_MOD_2_4':'#VALUE# дня назад','FD_DAY_AGO_MOD_OTHER':'#VALUE# дней назад','FD_DAY_DIFF_0':'#VALUE# дней','FD_DAY_DIFF_1':'#VALUE# день','FD_DAY_DIFF_10_20':'#VALUE# дней','FD_DAY_DIFF_MOD_1':'#VALUE# день','FD_DAY_DIFF_MOD_2_4':'#VALUE# дня','FD_DAY_DIFF_MOD_OTHER':'#VALUE# дней','FD_DAY_AT_TIME':'#DAY# в #TIME#','FD_DAY_SHORT':'#VALUE#д','FD_MONTH_AGO_0':'#VALUE# месяцев назад','FD_MONTH_AGO_1':'#VALUE# месяц назад','FD_MONTH_AGO_10_20':'#VALUE# месяцев назад','FD_MONTH_AGO_MOD_1':'#VALUE# месяц назад','FD_MONTH_AGO_MOD_2_4':'#VALUE# месяца назад','FD_MONTH_AGO_MOD_OTHER':'#VALUE# месяцев назад','FD_MONTH_DIFF_0':'#VALUE# месяцев','FD_MONTH_DIFF_1':'#VALUE# месяц','FD_MONTH_DIFF_10_20':'#VALUE# месяцев','FD_MONTH_DIFF_MOD_1':'#VALUE# месяц','FD_MONTH_DIFF_MOD_2_4':'#VALUE# месяца','FD_MONTH_DIFF_MOD_OTHER':'#VALUE# месяцев','FD_MONTH_SHORT':'#VALUE#мес','FD_YEARS_AGO_0':'#VALUE# лет назад','FD_YEARS_AGO_1':'#VALUE# год назад','FD_YEARS_AGO_10_20':'#VALUE# лет назад','FD_YEARS_AGO_MOD_1':'#VALUE# год назад','FD_YEARS_AGO_MOD_2_4':'#VALUE# года назад','FD_YEARS_AGO_MOD_OTHER':'#VALUE# лет назад','FD_YEARS_DIFF_0':'#VALUE# лет','FD_YEARS_DIFF_1':'#VALUE# год','FD_YEARS_DIFF_10_20':'#VALUE# лет','FD_YEARS_DIFF_MOD_1':'#VALUE# год','FD_YEARS_DIFF_MOD_2_4':'#VALUE# года','FD_YEARS_DIFF_MOD_OTHER':'#VALUE# лет','FD_YEARS_SHORT_0':'#VALUE#л','FD_YEARS_SHORT_1':'#VALUE#г','FD_YEARS_SHORT_10_20':'#VALUE#л','FD_YEARS_SHORT_MOD_1':'#VALUE#г','FD_YEARS_SHORT_MOD_2_4':'#VALUE#г','FD_YEARS_SHORT_MOD_OTHER':'#VALUE#л','CAL_BUTTON':'Выбрать','CAL_TIME_SET':'Установить время','CAL_TIME':'Время','FD_LAST_SEEN_TOMORROW':'завтра в #TIME#','FD_LAST_SEEN_NOW':'только что','FD_LAST_SEEN_TODAY':'сегодня в #TIME#','FD_LAST_SEEN_YESTERDAY':'вчера в #TIME#','FD_LAST_SEEN_MORE_YEAR':'более года назад'});</script>
<script type="text/javascript">(window.BX||top.BX).message({'WEEK_START':'1'});</script>
<script type="text/javascript">(window.BX||top.BX).message({'LANGUAGE_ID':'ru','FORMAT_DATE':'DD.MM.YYYY','FORMAT_DATETIME':'DD.MM.YYYY HH:MI:SS','COOKIE_PREFIX':'BITRIX_SM','SERVER_TZ_OFFSET':'10800','UTF_MODE':'Y','SITE_ID':'s1','SITE_DIR':'/','USER_ID':'','SERVER_TIME':'1771637185','USER_TZ_OFFSET':'0','USER_TZ_AUTO':'Y','bitrix_sessid':'04002f458fa481044190da60ea6d3263'});</script>
<script type="text/javascript" src="/bitrix/js/main/date/main.date.js?159955296434530"></script>
<script type="text/javascript" src="/bitrix/js/main/popup/dist/main.popup.bundle.js?1634116962109107"></script>
<script type="text/javascript" src="/bitrix/js/main/core/core_date.js?163411653136080"></script>
<script type="text/javascript" src="/bitrix/js/ui/vue/vue2/prod/dist/vue.bundle.js?1635848017173206"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/4.5.1/js/swiper.min.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/fingerprintjs2/2.1.0/fingerprint2.min.js"></script>
<script type="text/javascript">BX.setCSSList(['/bitrix/js/main/core/css/core_date.css','/setka/css/setka_skillbox.css','/local/templates/.default/components/bitrix/news.detail/article/style.css','/static/css/newarticle.css','/local/templates/media/libs/jquery.formstyler.css','/local/templates/media/fonts/graphik-font/stylesheet.css','/static/css/main.css','/local/templates/media/template_styles.css']);</script>
<script src="https://cdn.skillbox.pro/frontend-libs/promo-banner/5.10.1/banner-plugin.min.js"></script>
<script type="text/javascript" async src="https://relap.io/api/v6/head.js?token=sI73Ph6a5BnkqK2o"></script>
<meta property="og:title" content="Pandas DataFrame: как упоительно работать с данными" />
<meta property="og:description" content="Исчерпывающий гайд по самому популярному фреймворку в ML от эксперта по data science и машинному обучению." />
<meta property="og:url" content="https://skillbox.ru/media/code/pandas-dataframe-kak-upoitelno-rabotat-s-dannymi/" />
<meta property="og:type" content="article" />
<meta property="og:site_name" content="skillbox.ru" />
<meta property="og:locale" content="ru_RU" />
<meta property="og:image" content="https://248006.selcdn.ru/main/iblock/c26/c26d4b45682ddb29782e2fdd2a06017b/b5512ccc4353563b8fe7f3c5ca9d5df2.jpg" />
<meta name="relap-image" content="https://248006.selcdn.ru/main/iblock/c26/c26d4b45682ddb29782e2fdd2a06017b/b5512ccc4353563b8fe7f3c5ca9d5df2.jpg" />
<meta property="og:image:width" content="600" />
<meta property="og:image:height" content="315" />
<meta property="twitter:card" content="summary_large_image" />
<meta property="twitter:image" content="https://248006.selcdn.ru/main/iblock/c26/c26d4b45682ddb29782e2fdd2a06017b/b5512ccc4353563b8fe7f3c5ca9d5df2.jpg" />
<meta property="vk:image" content="https://248006.selcdn.ru/main/iblock/d59/d59af9523e833c6181b6dac1b5a8b53d/a5e182d8047b4533b83ffeff83943a2f.jpg" />
<meta property="article:author" content="Константин Зотов" />
<meta property="article:tag" content="статьи" />
<meta property="article:section" content="Код" />
<script type="text/javascript" src="/static/js/vendor.js?1771489421543641"></script>
<script type="text/javascript" src="/local/assets/js/common.js?177148933727419"></script>
<script type="text/javascript" src="/static/js/main.js?1771489421125222"></script>
<script type="text/javascript" src="/local/templates/media/js/main.js?17714893372418"></script>
<script type="text/javascript" src="/local/components/prmedia/popup.subscribe/templates/.default/script.js?17714893376820"></script>
<script type="text/javascript" src="/local/templates/.default/components/bitrix/news.detail/article/infinity.js?177148933713735"></script>
<script type="text/javascript" src="/local/templates/.default/components/bitrix/news/articles/script.js?1771489337246"></script>
<script type="text/javascript" src="/setka/js/setka_skillbox.js?1771489337106775"></script>
<script type="text/javascript" src="/local/templates/.default/components/bitrix/news.detail/article/script.js?17714893377503"></script>
<script type="text/javascript">var _ba = _ba || []; _ba.push(["aid", "84a6082a990bbac8858fb733b97bed30"]); _ba.push(["host", "skillbox.ru"]); (function() {var ba = document.createElement("script"); ba.type = "text/javascript"; ba.async = true;ba.src = (document.location.protocol == "https:" ? "https://" : "http://") + "bitrix.info/ba.js";var s = document.getElementsByTagName("script")[0];s.parentNode.insertBefore(ba, s);})();</script>
</head>
<body>
<div class="js-sticky-delimiter"></div>
<div class="bx-panel"></div>
<!-- Google Tag Manager (noscript) -->
<noscript>
<iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NLCGQ25" height="0" width="0"
style="display:none;visibility:hidden"></iframe>
</noscript>
<!-- End Google Tag Manager (noscript) -->
<svg class="app-svg-visually-hidden" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<path id="def-arrow-down-a" d="M223 20813l4 5 4-5z"/>
<path id="def-arrow-a" d="M1044.6 803.2a.81.81 0 01-.5.18.8.8 0 01-.8-.8v-3.24c-2.97.1-5.17.88-6.52 2.3a4.86 4.86 0 00-1.39 3.29.8.8 0 01-.75.83h-.04a.79.79 0 01-.79-.74c-.22-3.78.69-6.76 2.69-8.84a10.76 10.76 0 016.81-3.07v-3.3a.8.8 0 011.29-.63l7.91 6.39a.8.8 0 010 1.25zm.3-11.73v2.42a.5.5 0 01-.03.1.8.8 0 01-.05.21.78.78 0 01-.47.42.67.67 0 01-.25.05h-.01c-.06 0-3.93-.04-6.46 2.62-.8.85-1.4 1.87-1.74 2.99 1.79-1.7 4.55-2.57 8.21-2.57.44 0 .8.36.8.8v2.4l5.85-4.72z"/>
<path id="def-be-a" d="M55.6 29.58h6.12v-1.59H55.6zm.64 5.74s.26-2.23 2.58-2.23c2.32 0 2.26 2.23 2.26 2.23zm-3.23 1.27S52.56 42 58.72 42c0 0 5.26.37 5.26-3.81H61.4s-.09 1.59-2.58 1.59c0 0-2.58.17-2.58-2.55l7.74-.01c-.08-.32.9-6.42-5.16-6.36-5.77.05-5.81 5.73-5.81 5.73zm-10.34 2.8v-4.24H47s1.7.16 1.7 2.24c0 1.76-1.06 1.99-1.7 2zM47 29.61s1.16.06 1.16 1.62-.76 1.64-1.49 1.64h-4v-3.26zm4.33 1.3c0-2.68-1.81-3.91-4.26-3.91H39v15.01h8.07s4.92.15 4.92-4.43c0 0 .22-3.73-2.9-3.73 0 0 2.24-.25 2.24-2.94z"/>
<path id="def-briefcase-a" d="M855 13538c0-1.7 1.3-3 3-3s3 1.3 3 3v7c0 1.7-1.3 3-3 3s-3-1.3-3-3v-7z"/>
<path id="def-comments-a" d="M752 8958l-4 4v-12a1 1 0 011-1h11a1 1 0 011 1v7a1 1 0 01-1 1zm12-6v13l-3.2-4H751l2-2h9v-8h1c1 0 1 .45 1 1z"/>
<path id="def-eaye-a" d="M630 8956.22c0 1.04-3.58 5.21-8 5.21s-8-4.26-8-5.21c0-1.05 3.58-5.22 8-5.22s8 4.17 8 5.22zm-5 0h-3v-3.13a3.13 3.13 0 100 6.26 3.07 3.07 0 003-3.13z"/>
<path id="def-file-a" d="M493 9457a2 2 0 01-1.98-2v-16a2 2 0 011.98-2h19.82c1.13 0 2.07.87 2.15 2v16a2.15 2.15 0 01-2.15 2zm0-18v8.83l5.3-4.59a.98.98 0 011.35.05l5.34 5.39 3.27-2.48a.98.98 0 011.36.16l3.35 4.07V9439zm19.97 14.55l-4.27-5.18-3.21 2.43c-.4.3-.95.26-1.3-.09l-5.3-5.35-5.9 5.1v4.54h19.98zm-6.1-10.55a1.98 1.98 0 113.97.04 1.98 1.98 0 01-3.97-.04z"/>
<path id="def-gplus-a" d="M466 10169a4 4 0 013.87-3.99 4.14 4.14 0 012.93.99c-.33.36-.67.71-1.03 1.04-.72-.42-1.58-.75-2.41-.46a2.52 2.52 0 00-1.67 3.23c.41 1.35 2.09 2.1 3.4 1.52a2.22 2.22 0 001.33-1.51c-.78-.01-1.56 0-2.34-.03v-1.36h3.9a4.45 4.45 0 01-.83 3.2c-1 1.28-2.88 1.66-4.4 1.16a4 4 0 01-2.75-3.79z"/><path id="def-gplus-b" d="M476.34 10166h1.32l.01 1.33H479v1.33l-1.33.01v1.33h-1.33l-.01-1.33H475v-1.33l1.33-.01.01-1.33z"/>
<path id="def-inst-a" d="M1480.93 332c-3.5 0-3.95.02-5.32.07-1.37.07-2.3.28-3.14.6-.84.34-1.57.77-2.28 1.5a6.36 6.36 0 00-1.5 2.28 9.84 9.84 0 00-.6 3.14c-.07 1.37-.07 1.82-.07 5.32s.02 3.96.07 5.32c.07 1.37.28 2.31.6 3.14.34.85.77 1.58 1.5 2.29a6.51 6.51 0 002.28 1.5c.82.3 1.77.53 3.14.6 1.37.07 1.82.07 5.32.07s3.96-.02 5.32-.07a9.48 9.48 0 003.14-.6 6.14 6.14 0 002.29-1.5 6.36 6.36 0 001.5-2.29c.3-.81.53-1.77.6-3.14.07-1.36.07-1.82.07-5.32s-.02-3.95-.07-5.32a9.48 9.48 0 00-.6-3.14 6.14 6.14 0 00-1.5-2.28 6.36 6.36 0 00-2.29-1.5 9.84 9.84 0 00-3.14-.6c-1.38-.05-1.82-.07-5.32-.07zm0 2.32c3.45 0 3.85.02 5.22.07 1.27.05 1.94.26 2.4.45.6.25 1.03.52 1.48.97.45.45.73.89.97 1.5.18.44.39 1.14.45 2.39.07 1.37.07 1.76.07 5.21s-.01 3.85-.07 5.22a6.55 6.55 0 01-.45 2.4c-.24.6-.52 1.03-.97 1.48-.45.45-.88.73-1.49.97-.45.18-1.14.39-2.39.45-1.37.07-1.77.07-5.22.07-3.45 0-3.84-.01-5.21-.07a6.55 6.55 0 01-2.4-.45 4.11 4.11 0 01-1.49-.97 4.11 4.11 0 01-.97-1.49 7.52 7.52 0 01-.45-2.39c-.07-1.37-.07-1.77-.07-5.22 0-3.45.02-3.84.07-5.21.05-1.27.26-1.95.45-2.4.25-.6.52-1.04.97-1.49.45-.45.89-.72 1.5-.97a7.52 7.52 0 012.39-.45c1.35-.05 1.76-.07 5.21-.07z"/><path id="def-inst-b" d="M1480.93 349.2a4.3 4.3 0 110-8.59 4.3 4.3 0 010 8.6zm0-10.93a6.62 6.62 0 100 13.24 6.62 6.62 0 000-13.24z"/><path id="def-inst-c" d="M1486.27 338.01a1.54 1.54 0 113.09 0 1.54 1.54 0 01-3.09 0z"/>
<path id="def-like-down-a" d="M1004.33 543.66c-1.1 0-2.45-.86-2.61-3.31-.05-1.41.11-2.82.48-4.19h-2.96c-2.15 0-3.42-1.35-3.42-2.67 0-.39.05-.77.17-1.13a2.4 2.4 0 01-.99-2.03 2.35 2.35 0 011.02-2.05c-.12-.34-.18-.7-.17-1.06.86-.6 1.2-1.7.86-2.7 0-2.52 3.45-2.52 4.57-2.52h2.85c1.3.06 2.56.4 3.71 1 .67.36 1.41.6 2.18.67h3.23c.25 0 .5.11.65.31.12.14 1.1 1.47 1.1 4.69.03 1.8-.28 3.6-.9 5.31a.83.83 0 01-.67.5c-.03 0-3.27.4-4.85 1.98a10.32 10.32 0 00-2.8 5.94 1.4 1.4 0 01-1.45 1.26zm-6.84-10.17c0 .34.52 1 1.75 1h4.06a.83.83 0 01.8 1.1c-.5 1.5-.73 3.07-.72 4.65.08 1.1.44 1.6.79 1.72a11.94 11.94 0 013.23-6.67c1.57-1.58 4.2-2.18 5.32-2.38.41-1.37.62-2.8.61-4.24a8.18 8.18 0 00-.56-3.34h-2.75c-1-.07-1.97-.35-2.85-.81a7.53 7.53 0 00-3.04-.85h-2.85c-1.32 0-2.9.15-2.9.85-.02.11.02.22.09.3a.73.73 0 01.75.77.92.92 0 01-.85.87.85.85 0 00-.85.77c-.05.22.01.44.17.6.42.07.71.45.67.88a.87.87 0 01-.86.77.77.77 0 00-.83.85.8.8 0 00.87.85c.46.01.82.4.81.85 0 .43-.33.78-.76.8-.09.21-.12.44-.1.66z"/>
<path id="def-like-up-a" d="M944.67 520c1.1 0 2.45.87 2.61 3.32.05 1.4-.11 2.82-.48 4.18h2.96c2.15 0 3.42 1.36 3.42 2.67 0 .39-.05.77-.17 1.14a2.4 2.4 0 01.99 2.02c.04.81-.35 1.59-1.02 2.05.12.34.18.7.17 1.07-.86.6-1.2 1.7-.86 2.69 0 2.52-3.45 2.52-4.57 2.52h-2.85a8.94 8.94 0 01-3.71-.99 5.67 5.67 0 00-2.18-.67h-3.23a.83.83 0 01-.65-.32c-.12-.14-1.1-1.47-1.1-4.68-.03-1.81.28-3.62.9-5.32a.83.83 0 01.67-.5c.03 0 3.27-.4 4.85-1.98a10.32 10.32 0 002.8-5.93 1.4 1.4 0 011.45-1.27zm6.84 10.17c0-.34-.52-1-1.75-1h-4.06a.83.83 0 01-.8-1.1c.5-1.5.73-3.07.72-4.65-.08-1.1-.44-1.6-.79-1.72a11.94 11.94 0 01-3.23 6.67c-1.57 1.58-4.2 2.19-5.32 2.38a14.38 14.38 0 00-.61 4.25 8.18 8.18 0 00.56 3.33h2.75c1 .07 1.97.35 2.85.82.94.49 1.98.78 3.04.85h2.85c1.32 0 2.9-.15 2.9-.86a.35.35 0 00-.09-.3.73.73 0 01-.75-.77.92.92 0 01.85-.87c.44 0 .81-.33.85-.77a.65.65 0 00-.17-.6.81.81 0 01-.67-.87.87.87 0 01.86-.78.77.77 0 00.83-.85.8.8 0 00-.87-.85.83.83 0 01-.81-.85c0-.43.33-.78.76-.8.09-.21.12-.43.1-.66z"/>
<path id="def-like-a" d="M701.32 8960.32a.95.95 0 01-.95.95h-5.72c-.96 0-1.92-.95-2.87-.95h-.95v-6.68c.04-.6.4-1.12.95-1.36a4.78 4.78 0 002.87-4.37v-.96a.95.95 0 01.95-.95h.95c.53 0 .95.43.95.95v5.73h3.82a.9.9 0 01.96.96zm-14.31.95v-9.54h1.9a.96.96 0 01.97.95v7.64a.96.96 0 01-.96.95zm.99-8.3a.48.48 0 10.88.38.48.48 0 00-.88-.38z"/>
<path id="def-link-a" d="M626.02 1163.93l-.02 15.99 13.02.01v-4a.86.86 0 01.24-.68.9.9 0 01.66-.28 1 1 0 011 1v4.95a1 1 0 01-.29.7 1 1 0 01-.71.29H625a1 1 0 01-.71-.29 1 1 0 01-.29-.7V1163a1 1 0 011-1h3.95a1 1 0 011 1 .89.89 0 01-.93.93z"/><path id="def-link-b" d="M641.95 1171a1 1 0 01-1-1v-5.59l-9.25 9.3a.99.99 0 01-1.41-.01.99.99 0 01.01-1.41l9.24-9.29h-5.56a1 1 0 01-1-1 1 1 0 011-1h7.97a1 1 0 011 1v8a1 1 0 01-1 1z"/>
<path id="def-mail-a" d="M1058 261c0-.6-.4-1-1-1h-14c-.6 0-1 .4-1 1l8 6.5z"/><path id="def-mail-b" d="M1042 262.5v8.5c0 .6.4 1 1 1h14c.6 0 1-.4 1-1v-8.5l-8 6.5z"/>
<path id="def-outside-a" d="M1204.24 9231.16h-10.05c-.92 0-1.67-.75-1.67-1.68v-4.2c0-.46.38-.84.84-.84a.81.81 0 01.8.84v4.2h10.08v-16.8h-10.08v4.2a.81.81 0 01-.8.84.84.84 0 01-.84-.84v-4.2c0-.93.75-1.68 1.67-1.68h10.05c.92 0 1.67.75 1.67 1.68v16.8c0 .93-.75 1.68-1.67 1.68zm-15.56-10.92h11.37a.84.84 0 110 1.68h-11.36l1.91 1.92a.84.84 0 11-1.18 1.2l-3.35-3.36a.86.86 0 01-.24-.6v-.02a.83.83 0 01.24-.58l3.35-3.36a.83.83 0 011.18 0c.33.33.33.87 0 1.2z"/>
<path id="def-pencil-a" d="M1190.84 9818.68a.64.64 0 01-.19.13l-.07.06-4.42 1.82c-.1.05-.21.07-.32.07a.83.83 0 01-.77-1.15l1.84-4.4v-.02a.38.38 0 01.09-.13l.08-.13v-.01l10.82-10.82-.44-.44-3.56 3.57a.83.83 0 01-1.18-1.18l4.16-4.15a.81.81 0 011.17 0l1.03 1.03 1.86-1.86a.84.84 0 011.17 0l2.58 2.58c.33.32.33.85 0 1.18zm-2.88-1.7l-.58 1.41 1.41-.58zm.88-1.47l1.41 1.4 10.24-10.23-1.4-1.4zm12.69-12.68l-1.27 1.27 1.4 1.4 1.28-1.27z"/>
<path id="def-phone-a" d="M732.62 41c-2.25 0-6.37-2.73-10.24-6.78a33.08 33.08 0 01-5.22-6.96c-1.33-2.53-1.52-4.32-.56-5.31l2.91-2.72c.17-.16.4-.24.63-.23.24.02.46.13.61.32l3.79 4.58c.23.28.28.68.12 1.01l-1.47 3.08 5.24 5.48 2.93-1.54a.83.83 0 01.96.12l4.38 3.96c.17.16.28.38.3.63a.97.97 0 01-.22.67l-2.53 3.02c-.33.34-.81.67-1.63.67zm-14.76-17.78c-.15.21-.25 1.09.83 3.15 1.06 2 2.8 4.32 4.93 6.55 3.87 4.06 7.53 6.25 9 6.25.2 0 .3-.04.33-.08l1.94-2.3-3.27-2.95-2.98 1.56a.84.84 0 01-1.01-.17l-6.12-6.42a.92.92 0 01-.16-1.05l1.48-3.12-2.82-3.42z"/>
<path id="def-plus-a" d="M1223.33 4172.67h-6.66v6.66a.67.67 0 01-1.34 0v-6.66h-6.66a.67.67 0 010-1.34h6.66v-6.66a.67.67 0 011.34 0v6.66h6.66a.67.67 0 010 1.34z"/>
<path id="def-search-a" d="M1092.53 24.87a6.7 6.7 0 10-.05 13.4 6.7 6.7 0 00.05-13.4zm12.1 18.85a.95.95 0 01-1.35 0l-5.4-5.43a8.62 8.62 0 111.35-1.35l5.4 5.43c.37.37.37.98 0 1.35z"/>
<path id="def-shape-a" d="M879 13323h-4a1 1 0 01-1-1v-4a1 1 0 011-1h.85c-1.29-8.14-8.38-15.22-16.85-16.81v.81a1 1 0 01-1 1h-4a1 1 0 01-1-1v-.81c-8.47 1.6-15.56 8.67-16.85 16.81h.85a1 1 0 011 1v4a1 1 0 01-1 1h-4a1 1 0 01-1-1v-4a1 1 0 011-1h1.13c1.03-7.24 6.24-13.76 13.07-17h-6.48a1.98 1.98 0 01-1.72 1.01c-.97 0-1.8-.69-1.98-1.65a2 2 0 011.28-2.23 2 2 0 012.42.87H853v-1a1 1 0 011-1h4a1 1 0 011 1v1h12.27a2.01 2.01 0 110 2h-6.47c6.83 3.24 12.04 9.76 13.07 17H879a1 1 0 011 1v4a1 1 0 01-1 1zm-43-4h-2v2h2zm21-21h-2v2h2zm21 21h-2v2h2zm-22.93-12.51a.52.52 0 01.1-.18l.01-.03.03-.03a1 1 0 01.2-.21l.06-.04c.06-.04.12-.08.19-.1l.04-.02.09-.01.05-.01.16-.03.15.03h.04l.11.01.04.02.19.1.02.02.02.01a.92.92 0 01.24.25l.02.03c.04.05.08.12.1.18l.03.05c.02.07 2.33 7.26 8.51 10.59.26.14.45.39.51.68a.97.97 0 01-.2.82 23.7 23.7 0 00-3.99 8.81 8.02 8.02 0 012.21 5.57 1 1 0 01-1 1h-14a1 1 0 01-1-1 8.02 8.02 0 012.21-5.57 23.66 23.66 0 00-3.99-8.8 1 1 0 01.31-1.51c6.21-3.34 8.49-10.52 8.51-10.59l.03-.04zm.93 20.49a6 6 0 00-5.92 5.02h11.84a6 6 0 00-5.92-5.02zm-4.06-.9a8.17 8.17 0 018.12 0 25.8 25.8 0 013.47-7.78 20.33 20.33 0 01-6.53-6.96v6.93a2 2 0 01-.97 3.73 2.03 2.03 0 01-2.03-2 2 2 0 011-1.7v-6.96a20.33 20.33 0 01-6.53 6.96 25.8 25.8 0 013.47 7.78z"/>
<path id="def-strawberry-a" d="M873.26 13427.96a7.49 7.49 0 01-4.13-1.21 20.45 20.45 0 012.02 8.92c0 10.41-17.26 18.25-28.46 18.25-3.71 0-6.53-.86-8.17-2.48l-.1-.1c-3.9-4.01-2.65-13.97.62-21.78 3.77-9.01 9.53-14.39 15.41-14.39 3.1 0 6.17.68 8.97 1.99a8.12 8.12 0 01-.65-1.24c-1.09-2.7-.53-5.87 1.68-9.44a1 1 0 011.11-.45c.21.06 5.12 1.38 6.8 5.49.8 2.19.7 4.61-.29 6.72 1.25-.51 2.58-.79 3.92-.83 5.12 0 7.74 4.75 8.4 7.26a.97.97 0 01-.45 1.1 12.95 12.95 0 01-6.68 2.19zm-36.36 2.36c-3.42 8.19-3.85 16.84-.97 19.69l.08.09c1.26 1.18 3.62 1.82 6.68 1.82a38.27 38.27 0 0017.26-4.82c3.43-1.92 9.18-5.96 9.18-11.43a18.4 18.4 0 00-18.68-18.5c-5.93 0-10.89 6.79-13.55 13.15zm29.59-18.05c-.97-2.38-3.49-3.6-4.73-4.07-1.52 2.71-1.89 5.05-1.12 6.96.96 2.37 3.48 3.6 4.73 4.08 1.52-2.71 1.89-5.05 1.12-6.97zm5.5 7.13c-1.75.08-3.45.6-4.95 1.51.59 1.54 2.36 5.06 6.22 5.06 1.75-.08 3.45-.6 4.94-1.5-.59-1.55-2.36-5.07-6.21-5.07zm-13.43 13.54h3v3h-3zm-4-5h3v3h-3zm2 13h-3v-3h3zm-7-8h3v3h-3zm0-9h3v3h-3zm2 22h-3v-3h3zm-7-8h3v3h-3zm0-9h3v3h-3zm-5 14h3v3h-3zm0-9h3v3h-3z"/>
<path id="def-telegram-a" d="M823.8 272.93l-4.09 20.05c-.3 1.42-1.16 1.76-2.36 1.1l-6.52-4.77-3.13 3c-.55.47-.75.66-1.27.65-.5 0-.74-.3-1.03-1.1l-2.4-7.29-6.26-1.94c-1.01-.32-1.06-1.66.31-2.05l25.01-9.39c1.14-.52 2.18 0 1.74 1.74zm-17.39 18.55l.6-5.26 11.83-10.54c.31-.36.09-.88-.61-.42l-14.24 8.87z"/>
<path id="def-tm-a" d="M1406.46 346.34l13.28-8.34c.65-.44.86.05.57.39l-11.02 9.91-.57 4.96zm16.84-12.16l-23.32 8.83c-1.27.37-1.24 1.62-.3 1.93l5.84 1.82 2.24 6.86c.28.75.5 1.04.96 1.04.49 0 .67-.18 1.19-.62.58-.55 1.5-1.43 2.92-2.83l6.08 4.49c1.12.62 1.92.3 2.21-1.04l3.8-18.85c.41-1.63-.55-2.12-1.62-1.63z"/>
<path id="def-trash-a" d="M1175 9805h-1.09l-1.8 13.12a2.15 2.15 0 01-2.11 1.88h-8a2.14 2.14 0 01-2.1-1.88l-1.78-13.12H1157a1 1 0 010-2h5v-1a3 3 0 013-3h2a3 3 0 013 3v1h5a1 1 0 010 2zm-7-3a1 1 0 00-1-1h-2a1 1 0 00-1 1v1h4zm-7.87 3l1.75 12.9c.02.05.07.09.12.1h8c.06-.01.1-.05.12-.11l1.78-12.89zm6.87 3h2v6h-2zm-4 0h2v6h-2z"/>
<path id="def-triangle-a" d="M1238 6883l7.22 7.22 7.22-7.22z"/>
<path id="def-user-circle-a" d="M1265.24 30.18a10 10 0 01-2.18 10.9 6.94 6.94 0 00-4.7-4.69 5 5 0 10-4.66.01c-2.24.72-4 2.47-4.72 4.71a10 10 0 1116.26-10.93zm-6.22 1.82a3 3 0 11-6-.01 3 3 0 016 .01zm-8.3 10.48c.4-2.6 2.65-4.5 5.28-4.48 2.73 0 5.1 1.96 5.27 4.37l.03.09a9.9 9.9 0 01-10.57.02zM1256 46a12.01 12.01 0 000-24 12 12 0 100 24z"/>
<path id="def-vb-a" d="M955.45 276.38c.68 3.25.79 6.51-.02 9.76-.14.57-.36 1.11-.58 1.65-.84 2.05-2.5 3.13-4.57 3.73-1.63.48-3.31.69-5 .82-.89.07-2.29.03-3.18.02-.76-.01-.55-.04-1.04.45-.96.97-1.84 1.82-2.76 2.84a28 28 0 01-1.35 1.35v-4.93c0-.25-.07-.4-.3-.5-.26-.1-.5-.24-.75-.34a6.95 6.95 0 01-4.35-4.98 19.93 19.93 0 01-.51-6.16c.07-1.4.26-2.79.64-4.15a6.8 6.8 0 013.48-4.25 13.83 13.83 0 014.79-1.47 25.9 25.9 0 019.8.59 8.9 8.9 0 013.5 1.69 6.59 6.59 0 012.2 3.88zm-12.05-1.52c.54.04 1.07.15 1.6.28 1.98.5 3.52 1.53 4.32 3.43.42.99.63 2.02.7 3.08.02.27.15.42.43.42.27-.01.38-.19.39-.43.02-.21.01-.42.01-.64a7.41 7.41 0 00-1.39-4.12c-1.49-1.96-3.43-2.7-6-2.82-.31-.02-.49.1-.51.42-.01.31.21.36.45.38zm4.39 4.61c.11.4.21.81.26 1.22.03.27-.03.64.42.65.32.01.4-.13.43-.67a4.58 4.58 0 00-.68-2.46c-.96-1.52-2.37-2.16-4.16-2.32-.28-.03-.48.08-.52.37-.05.3.14.44.41.48.55.08 1.08.22 1.6.4a3.32 3.32 0 012.24 2.33zm-2.22-1.46a2.29 2.29 0 00-.89-.22c-.38.03-.58.19-.58.45.01.33.3.33.52.39l.27.06c.72.19 1.13.65 1.27 1.36.03.13.04.27.08.4.06.18.18.31.4.31.21-.01.34-.13.39-.32l.04-.35a2.4 2.4 0 00-1.5-2.08zm4.89 7.94c-.78-.65-1.6-1.25-2.47-1.78-1.02-.62-1.77-.45-2.47.49l-.11.14c-.32.39-.72.54-1.22.4a5.89 5.89 0 01-1.51-.74 6.76 6.76 0 01-2.77-3.19c-.35-.82-.19-1.35.54-1.88l.28-.2c.55-.45.68-.89.37-1.52a9.94 9.94 0 00-2.3-3.05 1.3 1.3 0 00-.97-.36 2.9 2.9 0 00-2.62 2.74c-.01.37.08.78.24 1.17 2.23 5.38 6.16 9.1 11.6 11.36.4.17.82.27 1.25.15a3.75 3.75 0 002.55-2.16c.28-.61.14-1.13-.39-1.57z"/>
<path id="def-ynadex-a" d="M471.93 10326.44h-.59c-.92 0-1.8-.64-1.8-2.24 0-1.67.83-2.35 1.68-2.35h.7v4.59zm.92-5.44h-1.6c-1.55 0-2.87 1.13-2.87 3.33 0 1.32.64 2.3 1.78 2.78l-2.13 3.68c-.07.12 0 .21.1.21h1c.08 0 .14-.03.17-.1l1.93-3.6h.7v3.6c0 .05.04.1.1.1h.86c.08 0 .11-.04.11-.1v-9.77c0-.09-.06-.13-.15-.13z"/>
<path id="def-ytube-a" d="M1343.37 349.72v-9.44l6.27 4.72zm-7.81-14.03a3.54 3.54 0 00-3.56 3.51v11.6a3.54 3.54 0 003.56 3.51h19.88a3.54 3.54 0 003.56-3.5V339.2a3.54 3.54 0 00-3.56-3.51h-19.88z"/>
</defs>
<symbol id="icon-arrow-chevron" viewBox="0 0 9 15"><path d="M7.07.862L0 7.93 7.072 15l1.06-1.06-6.011-6.01L8.13 1.922 7.07.862z"/></symbol>
<symbol id="icon-arrow-down" viewBox="0 0 8 5"><use xlink:href="#def-arrow-down-a" transform="translate(-223 -20813)"/></symbol>
<symbol id="icon-arrow-left" viewBox="0 0 18 12"><path d="M.1 6.3c-.1-.3 0-.6.1-.8l4.3-4.3c.3-.3.7-.3 1 0 .3.3.3.7 0 1l-3 3.1h14.1c.4 0 .7.3.7.7 0 .4-.3.7-.7.7H2.5l3.1 3.1c.3.3.3.8 0 1-.2.2-.3.2-.4.3-.2.1-.5 0-.7-.2L.2 6.6c-.1-.1-.1-.2-.1-.3z"/></symbol>
<symbol id="icon-arrow-menu" viewBox="0 0 10 5"><path fill-rule="evenodd" clip-rule="evenodd" d="M0 0l5 5 5-5H0z"/></symbol>
<symbol id="icon-arrow-right" viewBox="0 0 15 12"><path d="M14.19 5.77c.11.26.05.57-.15.78l-4.32 4.33a.72.72 0 01-1.02 0 .72.72 0 010-1.02l3.09-3.1H.69A.72.72 0 010 6.04c0-.38.31-.7.69-.72h11.1L8.7 2.23a.73.73 0 01.33-1.21c.24-.06.51.01.69.19l4.32 4.32a.6.6 0 01.15.24z"/></symbol>
<symbol id="icon-arrow" viewBox="0 0 20 17"><use xlink:href="#def-arrow-a" transform="translate(-1033 -789)"/></symbol>
<symbol id="icon-be" viewBox="0 0 25 16"><use xlink:href="#def-be-a" transform="translate(-39 -27)"/></symbol>
<symbol id="icon-be2-mob" viewBox="0 0 34 34"><path d="M15.426 16.508s1.507-.112 1.507-1.879S15.7 12 14.138 12H9v9.875h5.138s3.137.099 3.137-2.915c0 0 .137-2.452-1.85-2.452zm-4.162-2.753h2.874s.699 0 .699 1.027c0 1.028-.411 1.177-.877 1.177h-2.696v-2.204zm2.742 6.365h-2.742v-2.64h2.874s1.041-.013 1.041 1.357c0 1.142-.761 1.271-1.173 1.283zM23.408 12.582h-4.074v1.216h4.074v-1.216zM21.458 14.513c-3.797 0-3.794 3.793-3.794 3.793s-.26 3.775 3.794 3.775c0 0 3.38.193 3.38-2.626H23.1s.058 1.062-1.584 1.062c0 0-1.737.116-1.737-1.718h5.116s.56-4.286-3.437-4.286zm1.545 2.968h-3.244s.213-1.522 1.738-1.522 1.506 1.522 1.506 1.522z"/></symbol>
<symbol id="icon-be2" viewBox="0 0 56 56"><path d="M27.475 27.946s1.987-.148 1.987-2.479c0-2.33-1.625-3.467-3.685-3.467H19v13.024h6.777s4.137.13 4.137-3.844c0 0 .18-3.234-2.439-3.234zm-5.489-3.631h3.791s.921 0 .921 1.355-.542 1.551-1.156 1.551h-3.556v-2.906zm3.616 8.394h-3.616v-3.48h3.79s1.374-.018 1.374 1.788c0 1.506-1.004 1.677-1.548 1.692zM38.004 22.767H32.63v1.604h5.373v-1.604zM35.432 25.314c-5.009 0-5.004 5.003-5.004 5.003s-.344 4.98 5.004 4.98c0 0 4.456.254 4.456-3.464h-2.292s.077 1.4-2.088 1.4c0 0-2.291.154-2.291-2.266h6.748s.738-5.653-4.533-5.653zm2.037 3.915H33.19s.28-2.008 2.291-2.008c2.013 0 1.987 2.008 1.987 2.008z"/></symbol>
<symbol id="icon-briefcase" viewBox="834 13519 48 44"><path d="M836.5 13563c-1.4 0-2.5-1.2-2.5-2.6v-19.4c0 .6.4 1 1 1h1v18.4c0 .3.2.6.5.6h42.9c.3 0 .5-.3.5-.6v-18.4h1c.6 0 1-.4 1-1s-.4-1-1-1h-1v-10.4c0-.3-.2-.5-.5-.6h-42.9c-.3 0-.5.3-.5.6v10.4h-1c-.6 0-1 .4-1 1v-11.4c0-1.4 1.1-2.5 2.5-2.6H849v1c0 .6.4 1 1 1s1-.4 1-1v-1h14v1c0 .6.4 1 1 1 .3 0 .5-.1.7-.3.2-.2.3-.4.3-.7v-1h12.5c1.4 0 2.5 1.2 2.5 2.6v30.9c0 1.4-1.1 2.6-2.5 2.6h-43zm18.4-21H836v-2h18.9c.6 0 1 .4 1 1s-.4 1-1 1zm25.1-2v2h-18.9c-.6 0-1-.4-1-1s.4-1 1-1H880zm-13-16.8c0-2.3-1.9-4.2-4.2-4.2h-9.6c-2.3 0-4.2 1.9-4.2 4.2v3.8h2v-3.8c0-1.2 1-2.2 2.2-2.2h9.6c1.2 0 2.2 1 2.2 2.2v3.8h2v-3.8z"/><clipPath id="def-briefcase-b"><use xlink:href="#def-briefcase-a" overflow="visible"/></clipPath><g clip-path="url(#def-briefcase-b)"><path stroke-width="4" stroke-miterlimit="50" d="M855 13538c0-1.7 1.3-3 3-3s3 1.3 3 3v7c0 1.7-1.3 3-3 3s-3-1.3-3-3v-7z"/></g></symbol>
<symbol id="icon-burger" viewBox="0 0 20 14"><g fill-rule="evenodd"><path d="M0 0h20v2H0zM0 6h20v2H0zM0 12h20v2H0z"/></g></symbol>
<symbol id="icon-cancel-circle" viewBox="0 0 24 24"><path d="M12 24a12 12 0 110-24 12 12 0 010 24zm0-22a10 10 0 100 20 10 10 0 000-20zm4.71 13.29L13.41 12l3.3-3.29a1 1 0 00-.02-1.4 1 1 0 00-1.4-.02L12 10.59l-3.29-3.3a1 1 0 00-1.4.02 1 1 0 00-.02 1.4l3.3 3.29-3.3 3.29a1 1 0 00.02 1.4 1 1 0 001.4.02l3.29-3.3 3.29 3.3a1 1 0 001.42 0 1 1 0 000-1.42z"/></symbol>
<symbol id="icon-clip" viewBox="0 0 25 22"><path d="M12.1 21.37a1.02 1.02 0 01-.71-1.73L21.74 9.11a4.19 4.19 0 000-5.87 4.04 4.04 0 00-5.78 0l-12 12.21c-.59.49-.94 1.2-.97 1.97.05.49.28.95.63 1.29.31.35.77.53 1.23.48.74-.17 1.4-.57 1.89-1.15l9.42-9.58a.98.98 0 011.41 0c.39.4.39 1.04 0 1.44l-9.42 9.58A5.3 5.3 0 015.1 21.2a3.37 3.37 0 01-2.89-1.05A4.16 4.16 0 011 17.54a4.62 4.62 0 011.55-3.53l12-12.2a6.03 6.03 0 018.6 0 6.24 6.24 0 010 8.74L12.8 21.07a.98.98 0 01-.7.3z"/></symbol>
<symbol id="icon-clock" viewBox="0 0 24 24"><path d="M0 12a12 12 0 1124 0 12 12 0 01-24 0zm2 0a10 10 0 1020 0 10 10 0 00-20 0zm14 5a1 1 0 00.71-1.71L13 11.59V5a1 1 0 00-1-1 1 1 0 00-1 1v7a1 1 0 00.08.38c.05.12.12.24.21.33l4 4c.19.18.45.29.71.29z"/></symbol>
<symbol id="icon-close-menu" viewBox="0 0 16 16"><path fill-rule="evenodd" clip-rule="evenodd" d="M15.636 2.303L13.97.636 8.136 6.469 2.303.636.636 2.303 6.47 8.136.636 13.97l1.667 1.667 5.833-5.833 5.833 5.833 1.667-1.666-5.833-5.834 5.833-5.833z"/></symbol>
<symbol id="icon-close" viewBox="0 0 16 15"><g fill-rule="evenodd"><path d="M1.963.045l13.791 12.86-1.364 1.463L.6 1.508z"/><path d="M14.39.045L.6 12.905l1.364 1.463 13.79-12.86z"/></g></symbol>
<symbol id="icon-comments" viewBox="0 0 16 16"><use xlink:href="#def-comments-a" transform="translate(-748 -8949)"/></symbol>
<symbol id="icon-eaye" viewBox="0 0 16 11"><use xlink:href="#def-eaye-a" transform="translate(-614 -8951)"/></symbol>
<symbol id="icon-fb" viewBox="0 0 13 25"><path d="M8.44 25V13.6h3.83l.58-4.45H8.44V6.31c0-1.28.36-2.16 2.2-2.16H13V.18A29.7 29.7 0 009.57 0c-3.4 0-5.73 2.07-5.73 5.87v3.28H0v4.45h3.84V25z"/></symbol>
<symbol id="icon-fb2-mob" viewBox="0 0 34 34"><path fill-rule="evenodd" clip-rule="evenodd" d="M18.415 24.638v-7.131h2.457l.366-2.784h-2.823v-1.776c0-.8.23-1.351 1.411-1.351h1.514v-2.49A21.931 21.931 0 0019.14 9c-2.182 0-3.677 1.295-3.677 3.672v2.051H13v2.784h2.463v7.13h2.952z"/></symbol>
<symbol id="icon-fb2" viewBox="0 0 56 56"><path fill-rule="evenodd" clip-rule="evenodd" d="M30.142 38.625V29.22h3.24l.483-3.671H30.14v-2.343c0-1.056.305-1.782 1.862-1.782H34V18.14a28.937 28.937 0 00-2.902-.14c-2.877 0-4.849 1.708-4.849 4.843v2.706H23v3.671h3.25v9.405h3.892z"/></symbol>
<symbol id="icon-file" viewBox="0 0 24 20"><use xlink:href="#def-file-a" transform="translate(-491 -9437)"/></symbol>
<symbol id="icon-github-mob" viewBox="0 0 34 34"><path d="M17.2 10c-3.978 0-7.2 3.307-7.2 7.386 0 3.263 2.063 6.031 4.923 7.007.36.07.492-.16.492-.355 0-.175-.006-.64-.009-1.256-2.003.445-2.425-.99-2.425-.99-.328-.853-.801-1.081-.801-1.081-.652-.458.05-.449.05-.449.723.052 1.103.761 1.103.761.642 1.13 1.685.803 2.097.615.065-.478.25-.803.456-.988-1.599-.185-3.28-.82-3.28-3.65 0-.806.28-1.464.741-1.981-.08-.187-.324-.938.063-1.955 0 0 .603-.198 1.98.757a6.754 6.754 0 011.8-.25 6.754 6.754 0 011.8.25c1.368-.955 1.971-.757 1.971-.757.387 1.017.144 1.768.072 1.955.46.517.738 1.175.738 1.981 0 2.838-1.683 3.462-3.285 3.644.252.222.486.674.486 1.366 0 .989-.009 1.783-.009 2.023 0 .193.126.424.495.35 2.881-.969 4.942-3.739 4.942-6.997 0-4.079-3.224-7.386-7.2-7.386z"/></symbol>
<symbol id="icon-github" viewBox="0 0 56 56"><path d="M27.913 19C22.436 19 18 23.362 18 28.741c0 4.305 2.84 7.955 6.778 9.242.496.092.677-.21.677-.468 0-.232-.008-.844-.012-1.657-2.758.588-3.34-1.306-3.34-1.306-.45-1.125-1.102-1.425-1.102-1.425-.898-.604.07-.592.07-.592.995.068 1.518 1.004 1.518 1.004.884 1.49 2.32 1.059 2.887.81.09-.63.344-1.059.628-1.302-2.202-.244-4.515-1.082-4.515-4.814 0-1.063.384-1.932 1.02-2.614-.112-.246-.446-1.236.086-2.578 0 0 .83-.26 2.727.999a9.676 9.676 0 012.478-.329 9.676 9.676 0 012.478.329c1.883-1.26 2.714-.999 2.714-.999.532 1.342.198 2.332.099 2.578a3.737 3.737 0 011.016 2.614c0 3.742-2.317 4.566-4.523 4.805.347.293.67.89.67 1.803 0 1.303-.013 2.35-.013 2.667 0 .255.173.56.681.463 3.966-1.279 6.804-4.932 6.804-9.23 0-5.38-4.439-9.741-9.913-9.741z"/></symbol>
<symbol id="icon-gplus" viewBox="0 0 13 8"><use xlink:href="#def-gplus-a" transform="translate(-466 -10165)"/><use xlink:href="#def-gplus-b" transform="translate(-466 -10165)"/></symbol>
<symbol id="icon-head" viewBox="0 0 54 45"><g transform="translate(2 2)" fill-rule="evenodd"><path d="M9.23 19.458v17.61s14.232 8.328 28.462 0V19.231" fill-rule="nonzero"/><path stroke-width="3" fill-rule="nonzero" stroke-linecap="round" stroke-linejoin="round" d="M46.923 13.25L22.99 0 0 14.007l23.179 13.44L46.923 13.25V30"/><path d="M9.23 19.458v17.61s14.232 8.328 28.462 0V19.231" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/><circle stroke-width="3" fill-rule="nonzero" stroke-linecap="round" stroke-linejoin="round" cx="47.308" cy="32.692" r="2.692"/><path d="M32.733 18.745c.53.295 1.074.575 1.604.87 1.302.7 2.468-1.164 1.181-1.865-3.694-1.99-7.403-3.98-11.097-5.957-.53-.294-1.075-.575-1.604-.869-1.302-.7-2.468 1.163-1.181 1.864 3.694 1.99 7.403 3.981 11.097 5.957zM36.733 15.745c.53.295 1.074.575 1.604.87 1.302.7 2.468-1.164 1.181-1.865a4281.61 4281.61 0 00-11.097-5.957c-.53-.294-1.075-.575-1.604-.869-1.302-.7-2.468 1.163-1.181 1.864 3.694 1.99 7.403 3.981 11.097 5.957z" fill-rule="nonzero"/></g></symbol>
<symbol id="icon-inst" viewBox="0 0 26 26"><use xlink:href="#def-inst-a" transform="translate(-1468 -332)"/><use xlink:href="#def-inst-b" transform="translate(-1468 -332)"/><use xlink:href="#def-inst-c" transform="translate(-1468 -332)"/></symbol>
<symbol id="icon-instagram-mob" viewBox="0 0 34 34"><path fill-rule="evenodd" clip-rule="evenodd" d="M24.027 20.23a3.801 3.801 0 01-3.797 3.797h-6.433A3.801 3.801 0 0110 20.23v-6.433A3.801 3.801 0 0113.797 10h6.433a3.801 3.801 0 013.797 3.797v6.433zm-7.014-7.052a3.84 3.84 0 00-3.835 3.835 3.84 3.84 0 003.835 3.836 3.84 3.84 0 003.836-3.836 3.84 3.84 0 00-3.836-3.835zm0 6.848A3.016 3.016 0 0114 17.013 3.016 3.016 0 0117.013 14a3.016 3.016 0 013.013 3.013 3.016 3.016 0 01-3.013 3.013zm2.794-7.077c0-.625.509-1.133 1.133-1.133.625 0 1.134.508 1.134 1.133s-.509 1.134-1.134 1.134a1.135 1.135 0 01-1.133-1.134z"/></symbol>
<symbol id="icon-instagram" viewBox="0 0 56 56"><path fill-rule="evenodd" clip-rule="evenodd" d="M37.5 32.492a5.014 5.014 0 01-5.008 5.008h-8.484A5.014 5.014 0 0119 32.492v-8.484A5.014 5.014 0 0124.008 19h8.484a5.014 5.014 0 015.008 5.008v8.484zm-9.25-9.3a5.064 5.064 0 00-5.058 5.058c0 2.79 2.269 5.059 5.058 5.059 2.79 0 5.059-2.27 5.059-5.059 0-2.79-2.27-5.058-5.059-5.058zm0 9.032a3.978 3.978 0 01-3.974-3.974 3.978 3.978 0 013.974-3.974 3.978 3.978 0 013.974 3.974 3.978 3.978 0 01-3.974 3.974zm3.685-9.334c0-.825.67-1.495 1.494-1.495.825 0 1.495.67 1.495 1.495 0 .824-.67 1.495-1.495 1.495-.824 0-1.494-.67-1.494-1.495z"/></symbol>
<symbol id="icon-like-down" viewBox="0 0 20 22"><use xlink:href="#def-like-down-a" transform="translate(-995 -522)"/></symbol>
<symbol id="icon-like-up" viewBox="0 0 20 22"><use xlink:href="#def-like-up-a" transform="translate(-934 -520)"/></symbol>
<symbol id="icon-like" viewBox="0 0 16 16"><use xlink:href="#def-like-a" transform="translate(-687 -8946)"/></symbol>
<symbol id="icon-link" viewBox="0 0 19 21"><use xlink:href="#def-link-a" transform="translate(-624 -1161)"/><use xlink:href="#def-link-b" transform="translate(-624 -1161)"/></symbol>
<symbol id="icon-mail" viewBox="0 0 16 12"><use xlink:href="#def-mail-a" transform="translate(-1042 -260)"/><use xlink:href="#def-mail-b" transform="translate(-1042 -260)"/></symbol>
<symbol id="icon-minus-zoom" viewBox="0 0 26 2"><path stroke-linecap="square" stroke-miterlimit="50" stroke-width="2" d="M1.5 1h23.19"/></symbol>
<symbol id="icon-outside" viewBox="0 0 21 21"><use xlink:href="#def-outside-a" transform="translate(-1185 -9211)"/></symbol>
<symbol id="icon-pencil" viewBox="0 0 20 21"><use xlink:href="#def-pencil-a" transform="translate(-1185 -9800)"/></symbol>
<symbol id="icon-phone" viewBox="0 0 21 22"><use xlink:href="#def-phone-a" transform="translate(-716 -19)"/></symbol>
<symbol id="icon-play-circle" viewBox="0 0 24 24"><path d="M12 24a12 12 0 110-24 12 12 0 010 24zM2 12a10 10 0 1020 0 10 10 0 00-20 0z"/><path d="M11.01 14.52c-.05.28.1.55.35.67.25.13.55.07.74-.14l2.85-2.94c.26-.27.27-.7.02-.98l-2.83-2.94a.69.69 0 00-.75-.13.67.67 0 00-.38.65z"/></symbol>
<symbol id="icon-play-reviews" viewBox="0 0 9 9"><path fill-rule="evenodd" clip-rule="evenodd" d="M8.074 4.507c0 .41-.745.741-.745.741l-5.854 2.91a.619.619 0 01-.563-.054.649.649 0 01-.294-.494V1.392A.586.586 0 01.895.853a.557.557 0 01.595.01l5.839 2.903s.745.331.745.741z"/></symbol>
<symbol id="icon-play" viewBox="0 0 17 17"><path d="M17 9.02c0 .88-1.6 1.59-1.6 1.59L2.84 16.86c-.4.16-.84.12-1.21-.12A1.4 1.4 0 011 15.68V2.33c-.03-.47.2-.92.6-1.16.39-.24.89-.23 1.27.02L15.4 7.43s1.6.71 1.6 1.59z"/></symbol>
<symbol id="icon-plus-zoom" viewBox="0 0 24 24"><path d="M23 13H13v10a1 1 0 01-1 1 1 1 0 01-1-1V13H1a1 1 0 01-1-1 1 1 0 011-1h10V1a1 1 0 011-1 1 1 0 011 1v10h10a1 1 0 011 1 1 1 0 01-1 1z"/></symbol>
<symbol id="icon-plus" viewBox="0 0 16 16"><use xlink:href="#def-plus-a" transform="translate(-1208 -4164)"/></symbol>
<symbol id="icon-search" viewBox="0 0 22 22"><use xlink:href="#def-search-a" transform="translate(-1083 -22)"/></symbol>
<symbol id="icon-shape" viewBox="0 0 48 38"><use xlink:href="#def-shape-a" transform="translate(-832 -13296)"/></symbol>
<symbol id="icon-share" viewBox="0 0 26 24"><path d="M21.03 8a3.95 3.95 0 01-3.02-1.41l-9.08 4.54c.12.55.13 1.11.02 1.66l9.06 4.61a3.98 3.98 0 11-.9 1.79l-9.05-4.61a4 4 0 11-.05-5.22l9.1-4.55A4 4 0 1121.03 8zm0 14a2 2 0 002-2 2 2 0 10-2 2zm-18-10a2 2 0 104 0 2 2 0 00-4 0zm16-8a2 2 0 104 0 2 2 0 00-4 0z"/></symbol>
<symbol id="icon-smile" viewBox="0 0 23 24"><path fill-rule="evenodd" clip-rule="evenodd" d="M11.5 23.278c-6.351 0-11.5-5.148-11.5-11.5C0 5.427 5.149.278 11.5.278S23 5.427 23 11.778c-.005 6.35-5.15 11.495-11.5 11.5zm0-21.083a9.583 9.583 0 00-9.583 9.583 9.584 9.584 0 1019.167 0A9.599 9.599 0 0011.5 2.195zm-6.613 12.87a7.38 7.38 0 006.613 4.38 7.333 7.333 0 006.613-4.38.957.957 0 00-.93-1.427.96.96 0 00-.796.603 5.277 5.277 0 01-9.774 0 .959.959 0 00-1.726.824zm10.447-3.287a1.917 1.917 0 110-3.833 1.917 1.917 0 010 3.833zM5.75 9.862a1.917 1.917 0 103.833 0 1.917 1.917 0 00-3.833 0z"/></symbol>
<symbol id="icon-socials" viewBox="0 0 40 40"><g fill-rule="evenodd"><circle cx="20" cy="20" r="20"/><path d="M20.021 31h-.485C13.717 31 9 26.08 9 20.009c0-6.07 4.717-10.991 10.536-10.991.309-.024.619-.024.928 0 5.819 0 10.536 4.92 10.536 10.99C31 26.08 26.283 31 20.464 31h-.443zm0-2.198h.316c4.655 0 8.43-3.937 8.43-8.793s-3.775-8.793-8.43-8.793h-.632c-4.655 0-8.43 3.937-8.43 8.793s3.775 8.793 8.43 8.793h.316z"/><path d="M19.382 31C13.648 31 9 26.08 9 20.009c0-6.07 4.648-10.991 10.382-10.991.305-.024.61-.024.914 0 .252.02.488.138.665.33 5.385 5.95 5.385 15.338 0 21.29a.998.998 0 01-1.142.252.992.992 0 01-.437.11zm.322-19.784h-.238c-4.588 0-8.306 3.937-8.306 8.793s3.718 8.793 8.306 8.793a.981.981 0 01.26 0c4.23-5.007 4.23-12.58 0-17.586h-.022z" clip-rule="evenodd"/><path d="M19.91 30.967a1.101 1.101 0 01-.419-.077 1.101 1.101 0 01-1.21-.253c-5.708-5.95-5.708-15.337 0-21.288a1.1 1.1 0 01.704-.33 6.664 6.664 0 011.012 0C26.074 9.02 31 13.94 31 20.01S26.074 31 19.997 31l-.088-.033zm-.353-19.783a13.177 13.177 0 000 17.585c.091-.012.184-.012.275 0 4.861 0 8.802-3.936 8.802-8.792s-3.94-8.793-8.802-8.793h-.275z" clip-rule="evenodd"/><path d="M27.944 17H11.056C10.473 17 10 16.552 10 16s.473-1 1.056-1h16.888c.583 0 1.056.448 1.056 1s-.473 1-1.056 1zM27.944 25H11.056C10.473 25 10 24.552 10 24s.473-1 1.056-1h16.888c.583 0 1.056.448 1.056 1s-.473 1-1.056 1z"/></g></symbol>
<symbol id="icon-strawberry" viewBox="0 0 49 48"><use xlink:href="#def-strawberry-a" transform="translate(-832 -13406)"/></symbol>
<symbol id="icon-telegram" viewBox="0 0 29 24"><use xlink:href="#def-telegram-a" transform="translate(-795 -271)"/></symbol>
<symbol id="icon-telegram2-mob" viewBox="0 0 34 34"><path d="M14.95 19.329l-.25 3.528c.358 0 .514-.154.7-.34l1.683-1.607 3.486 2.553c.64.356 1.09.168 1.263-.588L24.12 12.15c.204-.946-.341-1.316-.964-1.084l-13.452 5.15c-.918.357-.904.869-.156 1.1l3.44 1.07 7.988-4.998c.375-.25.717-.112.436.137L14.95 19.33z"/></symbol>
<symbol id="icon-telegram2" viewBox="0 0 56 56"><path d="M25.848 30.985l-.331 4.653c.473 0 .678-.203.924-.447l2.22-2.121 4.598 3.367c.843.47 1.437.223 1.665-.776l3.018-14.143.001-.001c.268-1.247-.45-1.734-1.272-1.428L18.929 26.88c-1.211.47-1.193 1.145-.206 1.451l4.536 1.411 10.536-6.593c.495-.328.946-.146.575.182l-8.522 7.653z"/></symbol>
<symbol id="icon-tm" viewBox="0 0 26 22"><use xlink:href="#def-tm-a" transform="translate(-1399 -334)"/></symbol>
<symbol id="icon-trash" viewBox="0 0 20 21"><use xlink:href="#def-trash-a" transform="translate(-1156 -9799)"/></symbol>
<symbol id="icon-triangle" viewBox="0 0 16 8"><use xlink:href="#def-triangle-a" transform="translate(-1237 -6883)"/></symbol>
<symbol id="icon-tw" viewBox="0 0 18 15"><path d="M18 1.75c-.66.3-1.37.5-2.12.59A3.7 3.7 0 0017.5.27c-.71.43-1.5.74-2.34.91a3.68 3.68 0 00-6.39 2.56c0 .3.03.58.09.85A10.45 10.45 0 011.25.69 3.75 3.75 0 002.4 5.68a3.67 3.67 0 01-1.68-.47v.05a3.75 3.75 0 002.97 3.67 3.51 3.51 0 01-1.67.06 3.7 3.7 0 003.45 2.6A7.33 7.33 0 010 13.14a10.37 10.37 0 005.66 1.68c6.79 0 10.51-5.7 10.51-10.64l-.01-.49A7.35 7.35 0 0018 1.76z"/></symbol>
<symbol id="icon-twitter-mob" viewBox="0 0 34 34"><path d="M24.406 12.386a6.16 6.16 0 01-1.702.466 2.937 2.937 0 001.3-1.632c-.572.34-1.202.58-1.873.715a2.952 2.952 0 00-5.109 2.02c0 .233.02.458.068.672a8.36 8.36 0 01-6.087-3.089 2.957 2.957 0 00.908 3.947 2.917 2.917 0 01-1.335-.363v.032a2.967 2.967 0 002.366 2.902c-.24.066-.502.097-.774.097-.189 0-.38-.01-.56-.05a2.981 2.981 0 002.76 2.057 5.934 5.934 0 01-3.661 1.26c-.242 0-.475-.011-.707-.04a8.314 8.314 0 004.53 1.325c5.435 0 8.406-4.502 8.406-8.404 0-.13-.004-.257-.01-.382a5.89 5.89 0 001.48-1.533z"/></symbol>
<symbol id="icon-twitter" viewBox="0 0 56 56"><path d="M38 21.828c-.707.31-1.46.515-2.244.615a3.874 3.874 0 001.713-2.153 7.783 7.783 0 01-2.47.943 3.894 3.894 0 00-6.738 2.664c0 .308.026.605.09.887a11.025 11.025 0 01-8.028-4.074 3.922 3.922 0 00-.533 1.969 3.9 3.9 0 001.73 3.237 3.847 3.847 0 01-1.76-.48v.043a3.913 3.913 0 003.12 3.827 3.887 3.887 0 01-1.02.129c-.25 0-.502-.015-.738-.067.505 1.543 1.937 2.677 3.64 2.714a7.827 7.827 0 01-4.83 1.66c-.32 0-.626-.013-.932-.052a10.966 10.966 0 005.976 1.748c7.167 0 11.086-5.938 11.086-11.085a9.95 9.95 0 00-.014-.503A7.77 7.77 0 0038 21.828z"/></symbol>
<symbol id="icon-user-circle" viewBox="0 0 24 24"><use xlink:href="#def-user-circle-a" transform="translate(-1244 -22)"/></symbol>
<symbol id="icon-vb" viewBox="0 0 25 27"><use xlink:href="#def-vb-a" transform="translate(-931 -270)"/></symbol>
<symbol id="icon-view-list" viewBox="0 0 15 15"><path d="M0 6V0h15v6zm0 9V9h15v6z"/></symbol>
<symbol id="icon-view-tile" viewBox="0 0 15 15"><path d="M0 6V0h6v6zm9 0V0h6v6zm0 9V9h6v6zm-9 0V9h6v6z"/></symbol>
<symbol id="icon-vk" viewBox="0 0 22 14"><path d="M10.61 13.8h1.3s.39-.04.59-.27c.19-.2.18-.59.18-.59s-.02-1.8.78-2.07c.8-.26 1.82 1.75 2.91 2.52.81.58 1.44.46 1.44.46l2.89-.05s1.52-.09.8-1.33c-.06-.1-.42-.92-2.15-2.59-1.82-1.75-1.58-1.47.61-4.5 1.33-1.84 1.87-2.97 1.7-3.45-.16-.46-1.14-.34-1.14-.34l-3.26.02s-.24-.03-.42.08-.29.36-.29.36-.52 1.43-1.2 2.64c-1.46 2.57-2.04 2.7-2.27 2.54-.56-.37-.42-1.49-.42-2.28 0-2.49.36-3.52-.71-3.79A5.26 5.26 0 0010.43 1c-1.16-.01-2.15.01-2.7.29-.38.19-.66.61-.49.63.22.03.71.14.97.51.33.47.32 1.53.32 1.53s.19 2.92-.45 3.29c-.44.25-1.04-.26-2.34-2.59-.66-1.19-1.16-2.5-1.16-2.5s-.1-.25-.27-.38c-.21-.16-.5-.21-.5-.21l-3.1.02s-.47.01-.64.22c-.15.19-.01.58-.01.58s2.43 5.89 5.17 8.87c2.52 2.72 5.38 2.54 5.38 2.54z"/></symbol>
<symbol id="icon-vk2-mob" viewBox="0 0 34 34"><path fill-rule="evenodd" clip-rule="evenodd" d="M16.79 21.913h.947a.77.77 0 00.436-.201.795.795 0 00.13-.459s-.016-1.399.573-1.608c.588-.209 1.336 1.351 2.13 1.954.297.259.68.383 1.063.346l2.123-.032s1.116-.073.589-1.03a7.642 7.642 0 00-1.582-2.002c-1.337-1.35-1.153-1.134.451-3.473.978-1.424 1.367-2.3 1.245-2.67a.866.866 0 00-.832-.257l-2.4.016a.463.463 0 00-.305.056.702.702 0 00-.214.282 15.134 15.134 0 01-.886 2.042c-1.062 1.978-1.49 2.082-1.665 1.962-.405-.29-.306-1.15-.306-1.77 0-1.913.268-2.717-.511-2.926a4.053 4.053 0 00-1.123-.12 4.804 4.804 0 00-1.987.225c-.275.144-.48.466-.351.49.273.03.524.167.703.386.165.37.246.774.237 1.182 0 0 .145 2.26-.329 2.54-.32.194-.764-.2-1.719-1.993a17.581 17.581 0 01-.848-1.938.803.803 0 00-.198-.29.84.84 0 00-.367-.16l-2.276.016a.723.723 0 00-.466.169.581.581 0 00-.016.442s1.788 4.559 3.805 6.859c.99 1.217 2.427 1.931 3.95 1.962z"/></symbol>
<symbol id="icon-vk2" viewBox="0 0 56 56"><path fill-rule="evenodd" clip-rule="evenodd" d="M28.274 34.074h1.25c.213-.024.413-.117.574-.265.117-.177.177-.39.172-.605 0 0-.02-1.845.755-2.12.776-.276 1.763 1.78 2.811 2.576.391.342.895.506 1.4.456l2.802-.042s1.47-.096.775-1.358a10.079 10.079 0 00-2.085-2.64c-1.763-1.782-1.522-1.495.594-4.582 1.29-1.877 1.804-3.033 1.642-3.52a1.143 1.143 0 00-1.098-.34l-3.163.021a.61.61 0 00-.403.075.925.925 0 00-.282.37 19.972 19.972 0 01-1.17 2.694c-1.4 2.61-1.964 2.747-2.196 2.588-.534-.382-.403-1.516-.403-2.333 0-2.524.353-3.584-.675-3.86a5.345 5.345 0 00-1.48-.16 6.336 6.336 0 00-2.62.298c-.363.19-.635.615-.464.646.36.039.691.221.927.51.218.487.325 1.02.312 1.558 0 0 .192 2.98-.433 3.352-.423.254-1.007-.265-2.267-2.63a23.184 23.184 0 01-1.118-2.556 1.06 1.06 0 00-.262-.382 1.109 1.109 0 00-.484-.212l-3.002.021a.953.953 0 00-.615.223.767.767 0 00-.02.583s2.358 6.013 5.018 9.046c1.305 1.606 3.2 2.548 5.209 2.588z"/></symbol>
<symbol id="icon-yandex" viewBox="0 0 5 11"><path d="M4.847 0H3.259C1.7 0 .376 1.169.376 3.438c0 1.36.64 2.364 1.783 2.86L.028 10.092c-.07.123 0 .22.111.22h.99c.083 0 .139-.028.166-.097L3.231 6.49h.697v3.726c0 .041.041.097.097.097h.864c.083 0 .111-.042.111-.11V.138C5 .04 4.944 0 4.847 0zm-.92 5.61h-.584c-.92 0-1.81-.66-1.81-2.31 0-1.719.835-2.42 1.684-2.42h.71v4.73z" fill-rule="nonzero"/></symbol>
<symbol id="icon-ynadex" viewBox="0 0 5 10"><use xlink:href="#def-ynadex-a" transform="translate(-468 -10321)"/></symbol>
<symbol id="icon-ytube" viewBox="0 0 27 20"><use xlink:href="#def-ytube-a" transform="translate(-1332 -335)"/></symbol>
</svg>
<div class="header-banner topBanner" data-type="header" style="display: block; position: sticky; top: 0; z-index: 999;">
<a data-source="216050" data-banner="226288" class="universal-notice js-universal-notice-notice universal-notice--webp universal-notice--bitrix universal-notice--active" href="https://skillbox.ru/sale/main/?utm_source=media&utm_medium=banners&utm_campaign=all_all_media_banners_banners_header_all_all_skillbox" target="_blank" style="--banner-bg: #5927E9;--banner-color: #fff;--button-font-color: #000000;--button-bg-color: #FFFFFF;--banner-img-left: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_left/602754/f9ac17dd-a1d4-46c6-aa14-4f7b949defd1.png);--banner-img-left-webp: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_left/602754/f9ac17dd-a1d4-46c6-aa14-4f7b949defd1.webp);--banner-img-center: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_center/602507/232fc4a5-b130-4af2-a629-bdb293a4dd2e.png);--banner-img-center-webp: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_center/602507/232fc4a5-b130-4af2-a629-bdb293a4dd2e.webp);--banner-img-center-mobile: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_center/602507/232fc4a5-b130-4af2-a629-bdb293a4dd2e.png);--banner-img-center-mobile-webp: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_center/602507/232fc4a5-b130-4af2-a629-bdb293a4dd2e.webp);--banner-img-right: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_right/602755/ad7a7fe5-b8d3-47a3-885b-51a7971c12a9.png);--banner-img-right-webp: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_right/602755/ad7a7fe5-b8d3-47a3-885b-51a7971c12a9.webp);">
<span class="universal-notice__wrapper">
<b class="universal-notice__title">
Скидка до 55% и 3 курса в подарок
</b>
<span class="universal-timer js-universal-notice-timer js-universal-notice-active">
<span class="universal-timer__days js-universal-notice-days">2 дня</span>
<span class="js-universal-notice-hours">13</span>
:<span class="js-universal-notice-minutes">30</span>
:<span class="js-universal-notice-seconds">09</span>
</span>
<span class="universal-notice__button">Выбрать курс</span>
</span>
</a><script>
document.addEventListener('DOMContentLoaded', () => {
// Установите конечную дату
const deadline = new Date();
deadline.setDate(5);
deadline.setHours(0, 0, 0);
// Найдите элементы DOM
var timer = document.querySelector('.universal-timer');
const elDays = timer.querySelector('.js-universal-notice-days');
const elHours = timer.querySelector('.js-universal-notice-hours');
const elMinutes = timer.querySelector('.js-universal-notice-minutes');
const elSeconds = timer.querySelector('.js-universal-notice-seconds');
// Функция обновления таймера
const updateTimer = () => {
const now = new Date();
let diff = Math.max(0, deadline - now);
if (diff === 0) {
let lastDayOfMonth = new Date(now.getFullYear(), now.getMonth() + 1, 0);
let lastDay = lastDayOfMonth.getDate();
if (lastDay - now.getDate() < 4) {
deadline.setMonth(deadline.getMonth() + 1, 1);
} else {
deadline.setDate(deadline.getDate() + 4);
}
diff = Math.max(0, deadline - now);
}
// Time calculations for days, hours, minutes and seconds
var days = Math.floor(diff / (1000 * 60 * 60 * 24));
var hours = Math.floor((diff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)).toString();
var minutes = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60)).toString();
var seconds = Math.floor((diff % (1000 * 60)) / 1000).toString();
if (timer) {
let dayTitles = ['день', 'дня', 'дней'];
let daySuffix = dayTitles[(days % 100 > 4 && days % 100 < 20) ? 2 : [2, 0, 1, 1, 1, 2][days % 10 < 5 ? days % 10 : 5]]
elDays.innerHTML = days + ' ' + daySuffix;
elHours.innerHTML = hours.padStart(2, '0');
elMinutes.innerHTML = minutes.padStart(2, '0');
elSeconds.innerHTML = seconds.padStart(2, '0');
}
};
updateTimer();
const timerId = setInterval(updateTimer, 1000);
});
</script>
<style>@font-face{font-display:swap;font-family:Graphik;font-weight:500;font-style:normal;src:url(https://248006.selcdn.ru/Shared/fonts/GraphikLCTT-VA-Medium.woff2) format("woff2")}@font-face{font-display:swap;font-family:Graphik;font-weight:700;font-style:normal;src:url(https://248006.selcdn.ru/Shared/fonts/GraphikLCTT-VA-Bold.woff2) format("woff2")}.universal-notice{position:sticky;z-index:5;top:0;box-sizing:border-box;text-decoration:none;display:none;justify-content:space-between;overflow:hidden;color:var(--banner-color);background-color:var(--banner-bg);font-family:Graphik,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:opacity .25s ease-in-out}.universal-notice--active{display:flex}.universal-notice--bitrix{z-index:1000}.universal-notice *,.universal-notice ::after,.universal-notice ::before{box-sizing:inherit}.universal-notice::after,.universal-notice::before{display:none;width:194px;height:56px;content:"";background-size:194px 56px;background-repeat:no-repeat}.universal-notice--no-webp::before{background-image:var(--banner-img-left)}.universal-notice--no-webp::after{background-image:var(--banner-img-right)}.universal-notice--webp::before{background-image:var(--banner-img-left-webp)}.universal-notice--webp::after{background-image:var(--banner-img-right-webp)}.universal-notice--new-design{position:static;margin:4px;border-radius:16px}.universal-notice--new-design::after,.universal-notice--new-design::before{width:166px;height:48px;background-size:166px 48px}.universal-notice__wrapper{display:grid;grid-template-columns:1fr auto;align-items:center;grid-gap:12px;padding:12px;width:100%}.universal-notice--new-design .universal-notice__wrapper::after{height:48px}.universal-notice__title{font-weight:500;font-size:15px;line-height:16px}.universal-notice--new-design .universal-notice__title{font-size:14px;line-height:15px}.universal-timer{display:none;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:500;font-size:24px;line-height:26px}.universal-notice--new-design .universal-timer{font-size:22px;line-height:24px}.universal-timer__days{margin-right:8px}.universal-notice__button{grid-column:2/3;padding:6px 16px;border-radius:6px;color:var(--button-font-color);background-color:var(--button-bg-color);font-weight:500;font-size:14px;line-height:20px}.universal-notice-sticky{position:fixed;z-index:5;top:0;left:0;width:100%;padding:11px 8px;color:var(--banner-color);background-color:var(--banner-bg);text-align:center;transition:transform .3s ease-in-out;will-change:transform;transform:translateY(-200%)}.universal-notice-sticky--show{transform:translateY(0)}@media (min-width:360px) and (max-width:0px){.universal-notice__wrapper{padding:0 12px;grid-template-columns:1fr 56px auto}.universal-notice__wrapper::after{grid-column:2/3;grid-row:1/2;width:100%;height:56px;background-size:cover;background-repeat:no-repeat;content:""}.universal-notice--new-design .universal-notice__wrapper{grid-template-columns:1fr 48px auto}.universal-notice--no-webp .universal-notice__wrapper::after{background-image:var(--banner-img-center-mobile)}.universal-notice--webp .universal-notice__wrapper::after{background-image:var(--banner-img-center-mobile-webp)}.universal-notice__button{grid-column:3/4}}@media (min-width:360px){.universal-notice__wrapper{padding:0 12px;grid-template-columns:1fr 56px auto}.universal-notice__wrapper::after{grid-column:2/3;grid-row:1/2;width:100%;height:56px;background-size:cover;background-repeat:no-repeat;content:""}.universal-notice--new-design .universal-notice__wrapper{grid-template-columns:1fr 48px auto}.universal-notice--no-webp .universal-notice__wrapper::after{background-image:var(--banner-img-center-mobile)}.universal-notice--webp .universal-notice__wrapper::after{background-image:var(--banner-img-center-mobile-webp)}.universal-notice__button{grid-column:3/4}}@media (min-width:768px){.universal-notice::before{background-position:right center;flex-shrink:0;display:block}.universal-notice--no-webp .universal-notice__wrapper::after{background-image:var(--banner-img-center)}.universal-notice--webp .universal-notice__wrapper::after{background-image:var(--banner-img-center-webp)}}@media (min-width:768px) and (max-width:0px){.universal-notice::before{background-position:right center;flex-shrink:0;display:block}.universal-notice--no-webp .universal-notice__wrapper::after{background-image:var(--banner-img-center)}.universal-notice--webp .universal-notice__wrapper::after{background-image:var(--banner-img-center-webp)}}@media (min-width:1024px){.universal-notice::after,.universal-notice::before{width:250px;height:72px;background-size:250px 72px}.universal-notice--new-design{height:64px;border-radius:32px}.universal-notice--new-design::after,.universal-notice--new-design::before{width:226px;height:64px;background-size:226px 64px}.universal-notice__wrapper{grid-template-columns:1fr 72px auto;grid-gap:24px;padding-right:16px;padding-left:24px}.universal-notice__wrapper::after{height:72px}.universal-notice--new-design .universal-notice__wrapper{grid-template-columns:1fr 64px auto}.universal-notice--new-design .universal-notice__wrapper::after{height:64px}.universal-notice__title{font-size:24px;line-height:26px}.universal-notice--new-design .universal-notice__title{font-size:22px;line-height:24px}.universal-notice__button{padding:10px 24px;border-radius:8px}.universal-notice-sticky{padding:14px 24px}}@media (min-width:1024px) and (max-width:0px){.universal-notice::after,.universal-notice::before{width:250px;height:72px;background-size:250px 72px}.universal-notice--new-design{height:64px;border-radius:32px}.universal-notice--new-design::after,.universal-notice--new-design::before{width:226px;height:64px;background-size:226px 64px}.universal-notice__wrapper{grid-template-columns:1fr 72px auto;grid-gap:24px;padding-right:16px;padding-left:24px}.universal-notice__wrapper::after{height:72px}.universal-notice--new-design .universal-notice__wrapper{grid-template-columns:1fr 64px auto}.universal-notice--new-design .universal-notice__wrapper::after{height:64px}.universal-notice__title{font-size:24px;line-height:26px}.universal-notice--new-design .universal-notice__title{font-size:22px;line-height:24px}.universal-notice__button{padding:10px 24px;border-radius:8px}.universal-notice-sticky{padding:14px 24px}}@media (min-width:1280px){.universal-notice::before{flex-shrink:1}.universal-notice::after{background-position:left center;display:block}.universal-notice__wrapper{grid-template-columns:1fr 72px minmax(202px,auto) auto;min-width:940px;max-width:1020px;padding-right:24px}.universal-notice--new-design .universal-notice__wrapper{grid-template-columns:1fr 64px minmax(202px,auto) auto}.universal-timer.js-universal-notice-active{display:flex}.universal-notice__timer-nuxt{display:flex}.universal-notice__button{grid-column:4/5}}@media (min-width:1280px) and (max-width:0px){.universal-notice::before{flex-shrink:1}.universal-notice::after{background-position:left center;display:block}.universal-notice__wrapper{grid-template-columns:1fr 72px minmax(202px,auto) auto;min-width:940px;max-width:1020px;padding-right:24px}.universal-notice--new-design .universal-notice__wrapper{grid-template-columns:1fr 64px minmax(202px,auto) auto}.universal-timer.js-universal-notice-active{display:flex}.universal-notice__timer-nuxt{display:flex}.universal-notice__button{grid-column:4/5}}@media (min-width:1400px) and (max-width:0px){.universal-notice::before{flex-shrink:0}.universal-notice::after{flex-shrink:0}}@media (min-width:1400px){.universal-notice::before{flex-shrink:0}.universal-notice::after{flex-shrink:0}}</style> </div>
<script>
document.addEventListener("DOMContentLoaded", function(event) {
window.TopBanner = true;
});
$(document).ready(function () {
$.ajax({
url: '/local/ajax/advert.php',
type: 'POST',
data: {
'type': 'top-banner-show',
'id': 226288,
'section_id': 0,
},
success: function (result) {
}
});
});
$(document).on('click', '.header-banner', function () {
$.ajax({
url: '/local/ajax/advert.php',
type: 'POST',
data: {
'type': 'top-banner-click',
'id': 226288,
'section_id': 0,
},
success: function (result) {
}
});
var page = window.location;
var $article = $('section[data-article-text]');
var pageId = $article.data('articleid');
if(pageId === undefined)
{
pageId = 0;
}
window.dataLayer.push({
'event': 'go_to_course',
'courseID': 226288,
'page': page,
'pageID': pageId
});
});
</script>
<header class="header">
<div id="menu" class="header__wrapper container">
<div class="header__logo link-active">
<a href="/media/" class="header__media-main-link">
<img src="/local/templates/media/images/logo/skillbox-media.svg" alt="Skillbox"/>
</a>
<a href="/media/code/" class="header__media-category-link">
<span class="header__media-category js-category ">Код</span>
</a>
</div>
<a href="/media/about-media/" v-if="!isMobile" rel="nofollow" class="menu-nav__link menu-nav__link--about" target="_blank" style="display: none">
Про медиа
</a>
<button v-if="!isMobile" v-show="!isMobile" rel="nofollow" class="toggle-menu header__toggle toggle-menu--course"
@click="openCourseMenu()"
:class="{ 'toggle-menu--active': isOpenCourseMenu }"
style="display: none">
Онлайн-курсы
<svg width="13" height="12" viewBox="0 0 13 12" fill="none" xmlns="http://www.w3.org/2000/svg"
:class="{
'animated-chevron--default': isOpenCourseMenu,
'animated-chevron--active animated-chevron--default': ! isOpenCourseMenu
}"
class="animated-chevron toggle-menu__arrow select-arrow select-arrow--small">
<line x1="6.48415" y1="5.92242" x2="11.4909" y2="10.9291" stroke="currentColor" stroke-width="1.78"
class=" animated-chevron__line animated-chevron__line1 animated-chevron__line1--default"></line>
<line x1="6.3701" y1="5.9224" x2="11.3768" y2="0.915678" stroke="currentColor" stroke-width="1.78"
class="animated-chevron__line"></line>
<line x1="1.36337" y1="10.9291" x2="6.3701" y2="5.9224" stroke="currentColor" stroke-width="1.78"
class="animated-chevron__line animated-chevron__line2 animated-chevron__line2--default"></line>
<line x1="1.47743" y1="0.915681" x2="6.48415" y2="5.9224" stroke="currentColor" stroke-width="1.78"
class="animated-chevron__line"></line>
</svg>
</button>
<a href="https://skillbox.ru/?utm_source=media&utm_medium=button&utm_campaign=button_main_skillbox&utm_term=mainskillbox" v-if="!isMobile" v-show="!isMobile" rel="nofollow" class="menu-nav__link menu-nav__link-ml0 menu-nav__link--main" target="_blank" style="display: none">
Главная Skillbox
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M3.9375 10.0618L9.9161 4.08203" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M3.93811 3.93665H10.0631V10.0616" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</a>
<div v-if="isOpenCourseMenu && !isMobile" class="menu-block menu-block--desktop" @click="closeCourseMenu($event)" style="display: none">
<div class="menu-block__wrapper menu-block__wrapper--desktop">
<div class="menu-block__content vue-container">
<span class="menu-block__title">
Направления обучения
</span>
<ul class="menu-directions menu-block__direction">
<li class="menu-directions__item">
<a href="https://skillbox.ru/courses/?utm_source=media&utm_medium=button&utm_campaign=button_courses_all&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="All directions">
Все направления
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/code/?utm_source=media&utm_medium=button&utm_campaign=button_courses_code&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Code">
Программирование
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/design/?utm_source=media&utm_medium=button&utm_campaign=button_courses_design&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Design">
Дизайн
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/management?utm_source=media&utm_medium=button&utm_campaign=button_courses_management&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Management">
Управление
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/marketing?utm_source=media&utm_medium=button&utm_campaign=button_courses_marketing&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Marketing">
Маркетинг
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/games?utm_source=media&utm_medium=button&utm_campaign=button_courses_games&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="GameDev">
Игры
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/multimedia?utm_source=media&utm_medium=button&utm_campaign=button_courses_multimedia&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="">
Кино и Музыка
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/psychology?utm_source=media&utm_medium=button&utm_campaign=button_courses_psychology&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Development">
Психология
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/health?utm_source=media&utm_medium=button&utm_campaign=button_courses_health&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Development">
Здоровье
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/spo/?utm_source=media&utm_medium=button&utm_campaign=button_courses_spo&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Development">
Цифровой колледж
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/general-development/?utm_source=media&utm_medium=button&utm_campaign=button_courses_general-development&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Education">
Общее развитие
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/engineering/?utm_source=media&utm_medium=button&utm_campaign=button_courses_engineering&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="engineering">
Инженерия
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/english/?utm_source=media&utm_medium=button&utm_campaign=button_courses_english&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="english">
Английский язык
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/other/?utm_source=media&utm_medium=button&utm_campaign=button_courses_other&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Other">
Другое
</a>
</li>
</ul>
</div>
</div>
</div>
<div v-show="isOpenMenu" class="menu-block" @click="closeMenu($event)" style="display: none">
<div class="menu-block__wrapper">
<div class="menu-block__content vue-container">
<h2 class="menu-block__header">Редакции</h2>
<div class="tab-nav" data-tab-parent="" data-action="index">
<div class="tab-nav__item">
<a class="" data-tab-name="media_nav" data-section-id="0" data-code="All directions" href="/media/">
<img src="/local/templates/media/images/common/menu-icon-mobile-1.png" alt=""/>
Все
</a>
</div>
<div class="tab-nav__item tab-nav__item--custom tab-nav__item--spec"
data-nav-parent-item>
<a
data-tab-name="media_nav"
data-code=""
href="/media/topic/history/">
<img src="/local/templates/media/images/common/menu-icon-mobile-19.png"
alt=""/>
Истории</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="8"
data-code="Design"
href="/media/design/">
<img src="/local/templates/media/images/common/menu-icon-mobile-2.png" alt=""/>
Дизайн</a>
</div>
<div class="tab-nav__item">
<a class="tab-active"
data-tab-name="media_nav"
data-section-id="10"
data-code="Code"
href="/media/code/">
<img src="/local/templates/media/images/common/menu-icon-mobile-3.png" alt=""/>
Код</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="18"
data-code="GameDev"
href="/media/gamedev/">
<img src="/local/templates/media/images/common/menu-icon-mobile-4.png" alt=""/>
Геймдев</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="21"
data-code="Business"
href="/media/business/">
<img src="/local/templates/media/images/common/menu-icon-mobile-9.png" alt=""/>
Бизнес</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="9"
data-code="Marketing"
href="/media/marketing/">
<img src="/local/templates/media/images/common/menu-icon-mobile-5.png" alt=""/>
Маркетинг</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="11"
data-code=""
href="/media/management/">
<img src="/local/templates/media/images/common/menu-icon-mobile-6.png" alt=""/>
Управление</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="29"
data-code=""
href="/media/cinemusic/">
<img src="/local/templates/media/images/common/menu-icon-mobile-22.png" alt=""/>
Кино</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="36"
data-code=""
href="/media/music/">
<img src="/local/templates/media/images/common/menu-icon-mobile-23.png" alt=""/>
Музыка</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="34"
data-code=""
href="/media/photo/">
<img src="/local/templates/media/images/common/menu-icon-mobile-20.png" alt=""/>
Проектная фотография</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="17"
data-code="Development"
href="/media/growth/">
<img src="/local/templates/media/images/common/menu-icon-mobile-7.png" alt=""/>
Развитие</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="33"
data-code=""
href="/media/health/">
<img src="/local/templates/media/images/common/menu-icon-mobile-16.png" alt=""/>
Здоровье</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="32"
data-code=""
href="/media/money/">
<img src="/local/templates/media/images/common/menu-icon-mobile-17.png" alt=""/>
Деньги</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="22"
data-code="Education"
href="/media/education/">
<img src="/local/templates/media/images/common/menu-icon-mobile-8.png" alt=""/>
Образование</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="31"
data-code=""
href="/media/edtech/">
<img src="/local/templates/media/images/common/menu-icon-mobile-11.png" alt=""/>
EdTech</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="30"
data-code=""
href="/media/corptrain/">
<img src="/local/templates/media/images/common/menu-icon-mobile-10.png" alt=""/>
Корп. обучение</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="35"
data-code=""
href="/media/skillbox-blog/">
<img src="/local/templates/media/images/common/menu-icon-mobile-21.png" alt=""/>
Блог Skillbox</a>
</div>
<div class="tab-nav__item tab-nav__item--custom tab-nav__item--spec"
data-nav-parent-item>
<a
data-tab-name="media_nav"
data-code=""
href="https://skillbox.ru/media/glossary/">
<img src="/local/templates/media/images/common/menu-icon-mobile-18.png"
alt=""/>
Глоссарий</a>
</div>
<div class="tab-nav__item tab-nav__item--custom tab-nav__item--spec"
data-nav-parent-item>
<a
data-tab-name="media_nav"
data-code=""
href="/media/topic/specials/">
<img src="/local/templates/media/images/common/menu-icon-mobile-13.png"
alt=""/>
Спецпроекты</a>
</div>
<div class="tab-nav__item tab-nav__item--custom tab-nav__item--spec"
data-nav-parent-item>
<a
data-tab-name="media_nav"
data-code=""
href="https://skillbox.ru/course/career-guide-free/">
<img src="/local/templates/media/images/common/menu-icon-mobile-15.png"
alt=""/>
Профориентация</a>
</div>
</div>
<h2 class="menu-block__header">Онлайн-курсы</h2>
<ul class="menu-directions menu-block__direction">
<li class="menu-directions__item">
<a href="https://skillbox.ru/courses/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="All directions">
Все направления
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/code/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Code">
Программирование
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/design/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Design">
Дизайн
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/marketing/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Marketing">
Маркетинг
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/management/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Management">
Управление
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/games/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="GameDev">
Игры
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/multimedia/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="">
Мультимедиа
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/psychology/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Development">
Психология
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/general-development/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Education">
Общее развитие
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/engineering/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="engineering">
Инженерия
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/english/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="english">
Английский язык
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/other/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Other">
Другое
</a>
</li>
</ul>
<a href="/media/about-media/" rel="nofollow" class="menu-nav__link">
Про медиа
</a>
<a href="https://skillbox.ru/" rel="nofollow" class="menu-nav__link">
Главная Skillbox
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M3.9375 10.0618L9.9161 4.08203" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M3.93811 3.93665H10.0631V10.0616" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</a>
</div>
</div>
</div>
<button v-if="isMobile" class="menu-toggle"
@click="openMenu()"
:class="{ 'menu-toggle--opened': isOpenMenu }" style="opacity: 0">
<span v-if="isOpenMenu" class="menu-toggle__line"></span>
<svg v-if="!isOpenMenu" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M24 5.5H0V4H24V5.5ZM24 11.5H0V13H24V11.5ZM24 19H0V20.5H24V19Z" fill="black"/>
</svg>
</button>
</div>
<script>
BX.Vue.create({
el: '#menu',
data: {
isOpenMenu: false,
isOpenCourseMenu: false,
isMobile: false,
isSubOpen: false,
display: 'none'
},
computed: {
isMobile() {
const w = window.innerWidth
|| document.documentElement.clientWidth
|| document.body.clientWidth;
return w < 1024;
}
},
methods: {
openMenu() {
this.isOpenMenu = !this.isOpenMenu;
document.getElementsByTagName('body')[0].classList.toggle('scroll-locked');
window.addEventListener('keyup', this.closeMenu);
},
closeMenu(event) {
if (event.target.classList.contains('menu-block') || event.keyCode === 27) {
this.isOpenMenu = false;
document.getElementsByTagName('body')[0].classList.remove('scroll-locked');
window.removeEventListener('keyup', this.closeMenu);
}
},
openCourseMenu() {
this.isOpenCourseMenu = !this.isOpenCourseMenu;
if (this.isOpenCourseMenu) {
document.getElementsByTagName('body')[0].classList.add('scroll-locked');
window.addEventListener('keyup', this.closeCourseMenu);
} else {
document.getElementsByTagName('body')[0].classList.remove('scroll-locked');
window.removeEventListener('keyup', this.closeCourseMenu);
}
},
closeCourseMenu(event) {
if (event.target.classList.contains('menu-block') || event.keyCode === 27) {
this.isOpenCourseMenu = false;
document.getElementsByTagName('body')[0].classList.remove('scroll-locked');
window.removeEventListener('keyup', this.closeCourseMenu);
}
},
openSub() {
this.isSubOpen = !this.isSubOpen;
},
isMobileFn() {
const w = window.innerWidth
|| document.documentElement.clientWidth
|| document.body.clientWidth;
this.isMobile = (w < 1024);
}
},
created() {
window.addEventListener("resize", this.isMobileFn);
document.querySelector('.menu-block').style.display = '';
document.querySelector('.menu-toggle').style.opacity = '1';
document.querySelector('.menu-nav__link').style.display = '';
this.display = 'block';
this.isMobileFn();
},
destroyed() {
window.removeEventListener("resize", this.isMobileFn);
}
});
</script>
</header>
<main class="content">
<div class="page style-update">
<div class="page-wrap">
<style>
.article-inner .rr-widget__title {
padding-top: 0 !important;
}
.article-inner div[data-retailrocket-markup-block] {
margin-top: -32px;
display: none;
}
.article-inner {
font-family: 'Graphik';
}
</style>
<div class="under_header_banner" data-type="under_header"><!-- Yandex.RTB R-A-13443663-10 -->
<div id="yandex_rtb_R-A-13443663-10"></div>
<script>
window.yaContextCb.push(() => {
Ya.Context.AdvManager.render({
"blockId": "R-A-13443663-10",
"renderTo": "yandex_rtb_R-A-13443663-10"
})
})
</script>
</div> <div data-area="article" data-title="Pandas DataFrame в Python: самый полный гайд для новичков / Skillbox Media" class=" noFullClass">
<div class="article-inner">
<section class="top-section-detail-page ">
<div class="container">
<div class="article-preview-info">
<div class="article-preview-info__tags ">
<div class="tag article-preview-info__tag">
<a href="/media/code/"
class="tag-item programming">
Код </a>
</div>
</div>
<a class="info-hashtag article-preview-info__hashtag" href="/media/topic/articles/">
#статьи </a>
<ul class="info article-preview__info-box">
<li class="info-item"> <time class="info-text" datatime="#">20 июл 2023</time></li>
<li class="info-item hidden">
<span class="info-icon"><img src="/local/templates/media/images/icons/like.svg" alt=""></span>
<span class="info__text js-article-like-value">0</span>
</li>
</ul>
</div>
<div class="row">
<div class="top-section-detail-page__title-block col-xl-9 col-lg-10">
<div class="article-preview">
<h1 class="article-preview__title">Pandas DataFrame: как упоительно работать с данными</h1>
<p class="article-preview__description">Исчерпывающий гайд по самому популярному фреймворку в ML от эксперта по data science и машинному обучению.</p>
</div>
</div>
</div>
</div>
</section>
<section data-article-text
data-articleId="216050"
data-courseId="3240"
>
<div class="container">
<noindex>
<div class="share" data-nosnippet>
<button class="share__handler-btn ">
<span class="share__handler-icon">
<svg width="11" height="12" viewBox="0 0 11 12" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11 4.99902L6 0V2.99805C2.688 2.99805 0 5.68505 0 8.99805V11.498H0.0980225C0.765022 8.91205 3.107 6.99805 5.901 6.99805H6.00098V9.99805L11 4.99902Z" fill="currentColor"/>
</svg>
</span>
<span class="share__handler-text">Поделиться</span>
</button>
<div class="share__list">
<a href="#" class="share__item" data-code="vk">
<span class="share__item-icon share__item-icon--vk">
<svg width="9" height="5" viewBox="0 0 9 5" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.04776 4.98054H4.53996C4.62377 4.97136 4.70279 4.9361 4.76621 4.87951C4.81226 4.81209 4.83594 4.73139 4.83369 4.64925C4.83369 4.64925 4.82574 3.94629 5.1314 3.84125C5.43701 3.73621 5.826 4.51998 6.23879 4.82297C6.39281 4.95308 6.59128 5.01558 6.79053 4.99669L7.89399 4.98054C7.89399 4.98054 8.47355 4.94415 8.19965 4.46339C7.98372 4.08315 7.70589 3.743 7.37799 3.45744C6.68338 2.77872 6.77865 2.8878 7.61219 1.71216C8.12024 0.997077 8.32269 0.556717 8.25918 0.370875C8.14651 0.254767 7.98299 0.205914 7.82655 0.241594L6.58018 0.249674C6.52565 0.241067 6.46984 0.251007 6.42141 0.277954C6.37298 0.314507 6.33466 0.363228 6.31025 0.419356C6.18259 0.772814 6.0287 1.11586 5.8498 1.44552C5.29807 2.43936 5.07579 2.49188 4.98451 2.43128C4.77416 2.28584 4.82574 1.85356 4.82574 1.54248C4.82574 0.580957 4.96468 0.176954 4.55979 0.0719133C4.36879 0.0254376 4.17259 0.00505841 3.97631 0.0113129C3.62834 -0.0214164 3.27745 0.017045 2.94429 0.124433C2.8014 0.197154 2.69423 0.358753 2.76171 0.370875C2.90334 0.385518 3.03406 0.454932 3.12688 0.564795C3.21268 0.750336 3.25481 0.953675 3.24993 1.15868C3.24993 1.15868 3.32535 2.29392 3.07925 2.43532C2.91254 2.53228 2.68232 2.33432 2.18616 1.4334C2.01958 1.11848 1.87243 0.793298 1.74557 0.459754C1.72231 0.404013 1.68704 0.354309 1.64236 0.314316C1.58589 0.272672 1.52066 0.245006 1.45184 0.233514L0.268986 0.241594C0.181167 0.241154 0.0958013 0.271066 0.0268587 0.326434C-0.00595087 0.396174 -0.00882613 0.476652 0.0189202 0.548633C0.0189202 0.548633 0.947737 2.83932 1.99563 3.99477C2.51 4.60651 3.2568 4.96526 4.04776 4.98054Z" fill="white"/>
</svg>
</span>
<span class="share__item-text">Vkontakte</span>
</a>
<a href="#" class="share__item" data-code="tw">
<span class="share__item-icon share__item-icon--tw">
<svg width="9" height="7" viewBox="0 0 9 7" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M5.52788 0.00144284V0H5.9158L6.05754 0.027414C6.15204 0.0452114 6.23783 0.068535 6.31491 0.0973918C6.39201 0.126249 6.46661 0.159917 6.53872 0.198391C6.61083 0.236864 6.67623 0.276066 6.73492 0.315982C6.79311 0.355422 6.84533 0.397265 6.89158 0.441509C6.93733 0.486237 7.0087 0.49778 7.10568 0.476138C7.20266 0.454495 7.3071 0.424433 7.419 0.38596C7.5309 0.347487 7.64156 0.304201 7.75097 0.256104C7.86039 0.208007 7.92703 0.177469 7.95091 0.164484C7.97428 0.151022 7.98671 0.143808 7.98821 0.142841L7.98969 0.140677L7.99715 0.13707L8.00461 0.133463L8.01207 0.129856L8.01953 0.126249L8.02102 0.124084L8.02326 0.122642L8.02551 0.121199L8.02699 0.119034L8.03445 0.11687L8.04191 0.115427L8.04043 0.126249L8.03818 0.13707L8.03445 0.147891L8.03072 0.158713L8.02699 0.165927L8.02326 0.173141L8.01953 0.183962C8.01705 0.191176 8.01456 0.200793 8.01207 0.212819C8.00959 0.224845 7.98596 0.272935 7.9412 0.357103C7.89644 0.441271 7.84049 0.526637 7.77335 0.613208C7.70621 0.699778 7.64604 0.765182 7.59283 0.809434C7.53911 0.854162 7.50355 0.885421 7.48614 0.903219C7.46874 0.921492 7.4476 0.938323 7.42273 0.953718L7.38543 0.977525L7.37797 0.981132L7.37051 0.984739L7.36902 0.986903L7.36678 0.988346L7.36454 0.989789L7.36305 0.991953L7.35559 0.99556L7.34813 0.999168L7.34664 1.00133L7.3444 1.00277L7.34216 1.00422L7.34067 1.00638L7.33918 1.00855L7.33694 1.00999L7.3347 1.01143L7.33321 1.0136H7.37051L7.57939 0.970311C7.71865 0.941454 7.85168 0.906588 7.9785 0.865705L8.17992 0.800777L8.2023 0.793563L8.21349 0.789956L8.22095 0.786348L8.22841 0.782741L8.23587 0.779134L8.24333 0.775527L8.25825 0.773363L8.27317 0.77192V0.786348L8.26944 0.787791L8.26571 0.789956L8.26423 0.79212L8.26198 0.793563L8.25974 0.795006L8.25825 0.79717L8.25677 0.799334L8.25452 0.800777L8.25228 0.80222L8.25079 0.804384L8.24931 0.806548L8.24706 0.807991L8.24333 0.815205L8.2396 0.82242L8.23736 0.823862C8.23637 0.825305 8.20479 0.866181 8.14262 0.946504C8.08046 1.0273 8.04689 1.06818 8.04191 1.06915C8.03694 1.07059 8.02997 1.0778 8.02102 1.09079C8.01257 1.10425 7.95985 1.15788 7.86287 1.25166C7.76589 1.34545 7.67091 1.42889 7.57791 1.502C7.48441 1.57558 7.43716 1.666 7.43616 1.77325C7.43467 1.88002 7.42895 2.00074 7.419 2.13541C7.40905 2.27007 7.3904 2.41555 7.36305 2.57186C7.3357 2.72817 7.29342 2.90492 7.23623 3.10211C7.17904 3.29929 7.10941 3.49168 7.02735 3.67925C6.94529 3.86681 6.8595 4.03514 6.76998 4.18424C6.68046 4.33334 6.5984 4.45958 6.5238 4.56299C6.4492 4.66639 6.37336 4.76378 6.29626 4.85516C6.21918 4.94654 6.12171 5.04947 6.00384 5.16393C5.88547 5.27791 5.82082 5.34044 5.80988 5.3515C5.79844 5.36208 5.74971 5.40152 5.66365 5.46981C5.57812 5.53858 5.48611 5.60736 5.38763 5.67614C5.28966 5.74443 5.19964 5.80143 5.11758 5.84711C5.03552 5.8928 4.93655 5.94498 4.82067 6.00366C4.70529 6.06282 4.58046 6.11765 4.44618 6.16815C4.3119 6.21865 4.17016 6.26554 4.02096 6.30882C3.87176 6.35211 3.72753 6.38578 3.58827 6.40982C3.44903 6.43387 3.29112 6.45431 3.11456 6.47114L2.84973 6.49639V6.5H2.36483V6.49639L2.30142 6.49279C2.25915 6.49038 2.22433 6.48797 2.19698 6.48557C2.16963 6.48317 2.06643 6.46994 1.88739 6.44589C1.70835 6.42185 1.56785 6.3978 1.4659 6.37375C1.36395 6.34971 1.21225 6.30401 1.01083 6.23668C0.809413 6.16935 0.637087 6.10129 0.493854 6.03252C0.351121 5.96422 0.261601 5.92094 0.225293 5.90266C0.189485 5.88487 0.149201 5.86275 0.10444 5.83629L0.0373001 5.79661L0.0358156 5.79445L0.0335701 5.79301L0.0313321 5.79156L0.0298401 5.7894L0.0223801 5.78579L0.0149201 5.78219L0.0134355 5.78002L0.01119 5.77858L0.00895204 5.77714L0.00746003 5.77497L0.00597548 5.77281L0.00373001 5.77137H0V5.75694L0.00746003 5.75838L0.0149201 5.76054L0.0484902 5.76415C0.0708703 5.76655 0.131796 5.77016 0.231261 5.77497C0.330733 5.77978 0.436412 5.77978 0.548312 5.77497C0.660213 5.77016 0.774605 5.75934 0.891474 5.74251C1.00835 5.72568 1.14636 5.69682 1.30551 5.65594C1.46466 5.61505 1.61087 5.56648 1.74416 5.51021C1.87695 5.45346 1.97144 5.41114 2.02764 5.38324C2.08334 5.35583 2.16838 5.30484 2.28277 5.2303L2.45435 5.11848L2.45584 5.11632L2.45808 5.11487L2.46033 5.11343L2.46181 5.11127L2.4633 5.1091L2.46554 5.10766L2.46779 5.10622L2.46927 5.10405L2.47673 5.10189L2.48419 5.10044L2.48568 5.09323L2.48792 5.08602L2.49017 5.08457L2.49165 5.08241L2.43197 5.0788C2.39219 5.0764 2.35364 5.07399 2.31634 5.07159C2.27904 5.06918 2.2206 5.05836 2.14103 5.03912C2.06146 5.01988 1.97567 4.99103 1.88366 4.95255C1.79165 4.91408 1.70213 4.86838 1.6151 4.81548C1.52807 4.76258 1.46515 4.71857 1.42636 4.68346C1.38807 4.64883 1.33833 4.59978 1.27716 4.53629C1.21648 4.47233 1.16376 4.40668 1.119 4.33934C1.07424 4.27202 1.03148 4.19433 0.990699 4.10633L0.928774 3.97503L0.925044 3.96421L0.921314 3.95339L0.919076 3.94617L0.917584 3.93896L0.928774 3.9404L0.939964 3.94256L1.02202 3.95339C1.07674 3.9606 1.16253 3.963 1.27939 3.9606C1.39627 3.9582 1.47709 3.95339 1.52185 3.94617C1.56661 3.93896 1.59396 3.93414 1.60391 3.93174L1.61883 3.92814L1.63748 3.92453L1.65613 3.92092L1.65762 3.91876L1.65986 3.91731L1.6621 3.91587L1.66359 3.91371L1.64867 3.9101L1.63375 3.90649L1.61883 3.90289L1.60391 3.89928L1.58899 3.89567C1.57904 3.89327 1.56164 3.88846 1.53677 3.88124C1.5119 3.87403 1.44476 3.84757 1.33535 3.80189C1.22594 3.7562 1.1389 3.71171 1.07424 3.66842C1.00943 3.62501 0.947626 3.57754 0.889235 3.5263C0.831047 3.47436 0.767145 3.40751 0.697513 3.32575C0.627888 3.24399 0.565724 3.149 0.511012 3.04079C0.456308 2.93257 0.415277 2.82917 0.387922 2.73058C0.360676 2.63256 0.3427 2.53235 0.334217 2.43119L0.320781 2.27969L0.328241 2.28113L0.335701 2.2833L0.343161 2.2869L0.350621 2.29051L0.358081 2.29412L0.365541 2.29772L0.481172 2.34822C0.558264 2.38189 0.653998 2.41075 0.768383 2.43479C0.882775 2.45884 0.951154 2.47207 0.973534 2.47447L1.0071 2.47808H1.07424L1.07276 2.47592L1.07051 2.47447L1.06828 2.47303L1.06678 2.47087L1.0653 2.4687L1.06305 2.46726L1.06082 2.46582L1.05932 2.46365L1.05186 2.46004L1.0444 2.45644L1.04292 2.45427L1.04067 2.45283L1.03844 2.45139L1.03694 2.44922L1.02948 2.44562L1.02202 2.44201L1.02054 2.43984C1.01905 2.43888 0.99766 2.42349 0.956376 2.39367C0.915592 2.36337 0.872823 2.32418 0.828063 2.27608C0.783303 2.22798 0.738543 2.17749 0.693783 2.12458C0.64894 2.07156 0.609 2.01483 0.574422 1.95505C0.539614 1.89493 0.502806 1.81846 0.464014 1.72564C0.425721 1.6333 0.396627 1.54023 0.376731 1.44645C0.356843 1.35266 0.345653 1.26008 0.343161 1.1687C0.340677 1.07732 0.343161 0.999168 0.350621 0.93424C0.358081 0.869312 0.373001 0.795965 0.395382 0.714206C0.417762 0.632448 0.450093 0.545877 0.492362 0.454495L0.555772 0.317425L0.559502 0.306604L0.563232 0.295782L0.565478 0.29434L0.566962 0.292175L0.568454 0.290011L0.570692 0.288568L0.572938 0.290011L0.574422 0.292175L0.575914 0.29434L0.578152 0.295782L0.580398 0.297225L0.581882 0.29939L0.583374 0.301554L0.585612 0.302997L0.589342 0.310211L0.593072 0.317425L0.595318 0.318868L0.596802 0.321032L0.697513 0.429245C0.764653 0.501387 0.844229 0.581948 0.936234 0.670921C1.02825 0.759894 1.07922 0.806065 1.08916 0.809434C1.09912 0.813279 1.11154 0.824338 1.12646 0.842619C1.14138 0.860417 1.19112 0.902981 1.27567 0.970311C1.36022 1.03764 1.47087 1.1158 1.60764 1.20477C1.74441 1.29375 1.89609 1.38152 2.0627 1.46809C2.22931 1.55466 2.40835 1.63281 2.59982 1.70255C2.7913 1.77229 2.92558 1.81798 3.00266 1.83962C3.07975 1.86127 3.21154 1.88892 3.39804 1.92259C3.58454 1.95625 3.72505 1.9779 3.81954 1.98751C3.91403 1.99713 3.97869 2.00266 4.0135 2.00411L4.06572 2.00555L4.06423 1.99473L4.06199 1.98391L4.04707 1.89373C4.03712 1.83361 4.03215 1.74944 4.03215 1.64123C4.03215 1.53302 4.04085 1.43322 4.05826 1.34184C4.07567 1.25046 4.10178 1.15788 4.13659 1.0641C4.1714 0.970311 4.20547 0.895038 4.23879 0.838291C4.27261 0.78202 4.31687 0.717814 4.37158 0.645671C4.42629 0.573529 4.49716 0.498985 4.58419 0.422031C4.67122 0.345077 4.77069 0.276542 4.88259 0.216426C4.99449 0.15631 5.09769 0.110615 5.19218 0.0793563C5.28668 0.0480971 5.36625 0.0276521 5.4309 0.0180355C5.49556 0.00841898 5.52788 0.00288568 5.52788 0.00144284Z" fill="white"/>
</svg>
</span>
<span class="share__item-text">Twitter</span>
</a>
<a href="#" class="share__item" data-code="tg">
<span class="share__item-icon share__item-icon--tg">
<svg width="10" height="7" viewBox="0 0 10 7" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.39589 3.04852C1.39589 3.04852 5.05491 1.51189 6.32392 0.9708C6.8104 0.754384 8.46012 0.0617918 8.46012 0.0617918C8.46012 0.0617918 9.22155 -0.241191 9.15809 0.494655C9.13692 0.797667 8.96773 1.85815 8.79854 3.00523C8.54472 4.62846 8.26976 6.40316 8.26976 6.40316C8.26976 6.40316 8.22746 6.90097 7.86791 6.98753C7.50836 7.0741 6.91613 6.68455 6.8104 6.59795C6.72577 6.53304 5.22411 5.5591 4.6742 5.08295C4.52614 4.9531 4.35695 4.6934 4.69533 4.39039C5.45676 3.67617 6.36622 2.78882 6.91613 2.2261C7.16995 1.96638 7.42374 1.36038 6.36622 2.09622C4.86456 3.15674 3.38403 4.15231 3.38403 4.15231C3.38403 4.15231 3.04561 4.36873 2.41111 4.17394C1.77657 3.97918 1.03631 3.71945 1.03631 3.71945C1.03631 3.71945 0.528726 3.39481 1.39589 3.04852Z" fill="white"/>
</svg>
</span>
<span class="share__item-text">Telegram</span>
</a>
<a href="#" class="share__item js-share-item-copy">
<span class="share__item-icon share__item-icon--copy">
<svg width="10" height="10" viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4.19922 5.40327C4.37217 5.63449 4.59283 5.8258 4.84622 5.96425C5.09962 6.10269 5.37982 6.18501 5.66783 6.20564C5.95584 6.22627 6.24492 6.18471 6.51546 6.08379C6.78599 5.98287 7.03166 5.82495 7.2358 5.62074L8.44399 4.41255C8.81079 4.03277 9.01375 3.52412 9.00917 2.99615C9.00458 2.46818 8.79281 1.96313 8.41946 1.58978C8.04611 1.21644 7.54106 1.00466 7.01309 1.00008C6.48512 0.995488 5.97647 1.19845 5.59669 1.56525L4.904 2.25392" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M5.81002 4.59658C5.63707 4.36536 5.41641 4.17404 5.16302 4.0356C4.90962 3.89716 4.62942 3.81483 4.34141 3.79421C4.0534 3.77358 3.76432 3.81514 3.49379 3.91605C3.22325 4.01697 2.97758 4.17489 2.77344 4.3791L1.56525 5.58729C1.19845 5.96707 0.995488 6.47572 1.00008 7.0037C1.00466 7.53167 1.21644 8.03672 1.58978 8.41006C1.96313 8.78341 2.46818 8.99518 2.99615 8.99977C3.52412 9.00436 4.03277 8.80139 4.41255 8.43459L5.10122 7.74592" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</span>
<span class="share__item-text">Скопировать ссылку</span>
</a>
</div>
</div> <!-- //share -->
</noindex>
<div class="row">
<div class="col-xl-9 col-lg-8 col-poster">
<div class="article-poster">
<picture >
<img src="https://248006.selcdn.ru/main/iblock/b3b/b3ba9a325c6c50f3c4e57ac9d2db5918/c648d010b9b319b009650646dd8b8949.png" itemprop='image' class='hidden-xs' />
</picture> <picture >
<img src="https://248006.selcdn.ru/main/iblock/b3b/b3ba9a325c6c50f3c4e57ac9d2db5918/c648d010b9b319b009650646dd8b8949.png" itemprop='image' class='visible-xs' />
</picture> </div>
<noindex>
<p class="article-poster-text" data-nosnippet>
Иллюстрация: Катя Павловская для Skillbox Media </p>
</noindex>
</div>
<div class="col-xl-3 col-lg-4 col-author">
<div class="article-author">
<div class="article-author__image">
<a href="/media/authors/konstantin-zotov/">
<img src="https://248006.selcdn.ru/main/iblock/cb6/cb6ebfb6abf59159bb9aa19e2ff1924b/c70f643c2bc534ae80311fe7aca5bdc2.png" alt="Константин Зотов">
</a>
</div>
<div class="article-author__info">
<div class="article-author__name">
Константин Зотов </div>
<div class="article-author__description">
Журналист, редактор. Фанат виртуальности во всех её видах — потому о ней и пишет. </div>
</div>
</div>
</div>
</div>
</div>
<div class="container">
<div class="row flex-row-rev">
<div class="col-xl-3 col-lg-4 col-author">
<div class="js-article-banner" data-article-banner-mobile data-type="side_mounted" data-article-banner-sticky-start>
<!--AdFox START-->
<!--yandex_skillbox.media-->
<!--Площадка: Skillbox / Сквозной для застройщика Легенда / Боковой баннер сквозной для застройщика Легенда-->
<!--Категория: <не задана>-->
<!--Тип баннера: Media banner-->
<div id="adfox_176131540100027244"></div>
<script>
window.yaContextCb.push(()=>{
Ya.adfoxCode.create({
ownerId: 11649869,
containerId: 'adfox_176131540100027244',
params: {
p1: 'dkugb',
p2: 'p'
}
})
})
</script> </div>
<div class="js-article-banner" data-article-banner-mobile data-type="vertical" data-article-banner-sticky-end></div>
</div>
<div class="col-xl-9 col-lg-8 col-poster">
<div class="container container--setka">
<div class="js-article-banner" data-type="top"></div>
<div class="article-detail-text__setka" data-detail-text>
<div class="stk-post stk-layout_12col_18068 stk-theme_26309" data-stk="{"images":[{"id":58475,"alt":"","caption":""},{"id":58474,"alt":"","caption":""},{"id":58473,"alt":"","caption":""},{"id":58472,"alt":"","caption":""},{"id":58471,"alt":"","caption":""}]}" data-ui-id="post" data-ce-tag="post" data-reset-type="class" data-layout-type="auto" data-editor-version="3.2.8-rc1"><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><div class="stk-grid stk-grid__layout_reverse stk-theme_26309__mb_15" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><div class="stk-grid stk-theme_26309__mb_05" data-ce-tag="grid"><div data-col-width="4" class="stk-grid-col" data-ce-tag="grid-col" data-stk-css="" data-stk-css-m=""><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div data-ce-tag="mask" class="stk-mask"><img src="/upload/setka_images/10540019072023_7b64da46b2dc4329c15be64aeef9e636261e678c.png" data-image-id="58471" data-image-name="image6.png" class="stk-image stk-reset" width="240" height="240" loading="lazy"/></div></figure></div><div data-col-width="8" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-reset stk-theme_26309__style_medium_header stk-theme_26309__mb_0" data-ce-tag="paragraph">Мирко Стоилькович</p><hr class="stk-reset stk-theme_26309__separator_basic_divider stk-theme_26309__mb_05"/><div class="stk-grid stk-theme_26309__mb_0" data-ce-tag="grid"><div data-col-width="2" class="stk-grid-col" data-ce-tag="grid-col" data-stk-css="" data-stk-css-m=""><p class="stk-theme_26309__style_small_text stk-reset" data-ce-tag="paragraph"><strong class="stk-reset">Об авторе</strong></p></div><div data-col-width="6" class="stk-grid-col valign-top stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-reset " data-ce-tag="paragraph">Ph. d. в области машиностроения, доцент <a href="https://www.ni.ac.rs/" target="_blank" class="stk-reset">Нишского университета</a>. Основная специализация: гибридные методы оптимизации и машинное обучение в энергетике. Владеет несколькими языками программирования, среди которых Python, C#, C и JavaScript.</p></div></div><hr class="stk-theme_26309__separator_divider-1498128612642 stk-reset stk-theme_26309__mb_0"/><div class="stk-grid stk-theme_26309__mb_0" data-ce-tag="grid"><div data-col-width="2" class="stk-grid-col" data-stk-css="" data-stk-css-m="" data-ce-tag="grid-col"><p class="stk-theme_26309__style_small_text stk-reset" data-ce-tag="paragraph"><strong class="stk-reset">ссылки</strong></p></div><div data-col-width="6" class="stk-grid-col stk-grid-col_last" data-stk-css="" data-stk-css-m="" data-ce-tag="grid-col"><div class="sklbx-links stk-container stk-theme_26309__mb_0" data-ce-tag="container" data-container-name="Ссылки"><a class="sklbx-link sklbx-link--web stk-container stk-container-link stk-reset stk-theme_26309__mb_0" data-ce-tag="container" data-container-name="Сайт" href="http://mmst.tech/" target="_blank"><svg class="sklbx-link__icon" width="22" height="22" viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/svg">
<g fill-rule="nonzero">
<path d="M11.021 22h-.485C4.717 22 0 17.08 0 11.009 0 4.939 4.717.018 10.536.018c.309-.024.619-.024.928 0C17.283.018 22 4.938 22 11.008 22 17.08 17.283 22 11.464 22h-.443zm0-2.198h.316c4.655 0 8.43-3.937 8.43-8.793s-3.775-8.793-8.43-8.793h-.632c-4.655 0-8.43 3.937-8.43 8.793s3.775 8.793 8.43 8.793h.316z"></path>
<path d="M10.382 22C4.648 22 0 17.08 0 11.009 0 4.939 4.648.018 10.382.018c.305-.024.61-.024.914 0 .252.02.488.138.665.33 5.385 5.95 5.385 15.338 0 21.29a.998.998 0 0 1-1.142.252.992.992 0 0 1-.437.11zm.322-19.784h-.238c-4.588 0-8.306 3.937-8.306 8.793s3.718 8.793 8.306 8.793a.981.981 0 0 1 .26 0c4.23-5.007 4.23-12.58 0-17.586h-.022z"></path>
<path d="M10.91 21.967a1.101 1.101 0 0 1-.419-.077 1.101 1.101 0 0 1-1.21-.253C3.573 15.687 3.573 6.3 9.28.35a1.1 1.1 0 0 1 .704-.33 6.664 6.664 0 0 1 1.012 0C17.074.02 22 4.94 22 11.01S17.074 22 10.997 22l-.088-.033zm-.353-19.783a13.177 13.177 0 0 0 0 17.585c.091-.012.184-.012.275 0 4.861 0 8.802-3.936 8.802-8.792s-3.94-8.793-8.802-8.793h-.275z"></path>
<path d="M18.944 8H2.056C1.473 8 1 7.552 1 7s.473-1 1.056-1h16.888C19.527 6 20 6.448 20 7s-.473 1-1.056 1zM18.944 16H2.056C1.473 16 1 15.552 1 15s.473-1 1.056-1h16.888c.583 0 1.056.448 1.056 1s-.473 1-1.056 1z"></path>
</g>
</svg></a><a class="sklbx-link sklbx-link--tw stk-container stk-container-link stk-reset stk-theme_26309__mb_0" data-ce-tag="container" data-container-name="Twitter" href="https://twitter.com/MMStojiljkovic" target="_blank"><svg class="sklbx-link__icon" width="17" height="14" xmlns="http://www.w3.org/2000/svg">
<path d="M16.429 1.608a6.95 6.95 0 0 1-1.94.543 3.459 3.459 0 0 0 1.484-1.9 6.932 6.932 0 0 1-2.137.835A3.36 3.36 0 0 0 11.37 0c-1.86 0-3.374 1.538-3.374 3.428 0 .271.03.533.089.784C5.285 4.072 2.8 2.704 1.138.633a3.476 3.476 0 0 0-.455 1.72c0 1.186.594 2.241 1.504 2.854a3.277 3.277 0 0 1-1.524-.432c0 1.7 1.158 3.086 2.702 3.398-.287.08-.584.12-.89.12-.219 0-.426-.02-.634-.06.425 1.357 1.672 2.353 3.147 2.383a6.74 6.74 0 0 1-4.186 1.468c-.277 0-.545-.02-.802-.05a9.415 9.415 0 0 0 5.166 1.537c6.205 0 9.6-5.217 9.6-9.75 0-.152 0-.292-.01-.443a7.06 7.06 0 0 0 1.673-1.77z" fill-rule="nonzero"></path>
</svg></a><a class="sklbx-link sklbx-link--tw stk-container stk-container-link stk-reset stk-theme_26309__mb_0" data-ce-tag="container" data-container-name="LinkedIn" href="https://www.linkedin.com/in/mmst" target="_blank"><svg class="sklbx-link__icon" width="20" height="20" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg">
<path d="M 8.953125 39.371094 L 0.660156 39.371094 L 0.660156 13.089844 L 8.953125 13.089844 Z M 4.800781 9.503906 C 2.152344 9.503906 0 7.34375 0 4.734375 C 0 2.121094 2.152344 0.00390625 4.800781 0.00390625 C 7.453125 0.00390625 9.605469 2.121094 9.605469 4.734375 C 9.605469 7.34375 7.453125 9.503906 4.800781 9.503906 Z M 39.992188 39.371094 L 31.714844 39.371094 L 31.714844 26.578125 C 31.714844 23.527344 31.652344 19.617188 27.40625 19.617188 C 23.09375 19.617188 22.433594 22.929688 22.433594 26.359375 L 22.433594 39.371094 L 14.148438 39.371094 L 14.148438 13.089844 L 22.101562 13.089844 L 22.101562 16.675781 L 22.21875 16.675781 C 23.324219 14.609375 26.03125 12.429688 30.066406 12.429688 C 38.457031 12.429688 40 17.871094 40 24.933594 L 40 39.371094 Z M 39.992188 39.371094 "></path>
</svg></a><a class="sklbx-link sklbx-link--fb stk-container stk-container-link stk-reset stk-theme_26309__mb_0" data-ce-tag="container" data-container-name="Github" href="https://github.com/MMStojiljkovic" target="_blank"><svg class="sklbx-link__icon" width="25" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z" fill-rule="evenodd"></path>
</svg></a></div></div></div><hr class="stk-theme_26309__mb_0 stk-theme_26309__separator_divider-1498128612642 stk-reset"/><div class="stk-grid" data-ce-tag="grid"><div data-col-width="2" class="stk-grid-col" data-stk-css="" data-stk-css-m="" data-ce-tag="grid-col"><p class="stk-theme_26309__style_small_text stk-reset" data-ce-tag="paragraph"><strong class="stk-reset">Источник</strong></p></div><div data-col-width="6" class="stk-grid-col stk-grid-col_last" data-stk-css="" data-stk-css-m="" data-ce-tag="grid-col"><p class="stk-reset" data-ce-tag="paragraph"><a class="stk-reset" href="https://realpython.com/pandas-dataframe/" target="_blank">The pandas DataFrame: Make Working With Data Delightful</a></p></div></div></div></div><hr class="stk-theme_26309__separator_divider-1551375397566 stk-reset"/></div></div><p class="stk-reset" data-ce-tag="paragraph"><a href="https://pandas.pydata.org/pandas-docs/stable/reference/frame.html" target="_blank" class="stk-reset">Pandas DataFrame</a> активно применяют в data science, машинном обучении, научных вычислениях и многих других областях, связанных с активным использованием данных.</p><p class="stk-reset" data-ce-tag="paragraph">Эти структуры во многом похожи на SQL, таблицы Excel и Calc. Однако зачастую DataFrame быстрее, проще в использовании и мощнее — ведь это неотъемлемая часть экосистемы <a href="https://www.python.org/about/" target="_blank" class="stk-reset">Python</a> и NumPy.</p><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">Из этой статьи вы узнаете:</p><ul class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item">Что такое <strong class="stk-reset">DataFrame </strong>в Pandas<strong class="stk-reset"> </strong>и как его создать.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item">Как <strong class="stk-reset">получить доступ, изменить, добавить, отсортировать, отфильтровать и удалить</strong> данные.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item">Как обрабатывать <strong class="stk-reset">пропущенные значения</strong>.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item">Как работать с <strong class="stk-reset">временными рядами</strong>.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item">Как быстро <strong class="stk-reset">визуализировать</strong> данные.</li></ul><h4 class="stk-theme_26309__mb_05 stk-reset stk-theme_26309__style_small_header" data-ce-tag="paragraph">Содержание:</h4><ul class="stk-theme_26309__pad_hor_1 stk-theme_26309__mb_05 stk-reset" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-1">Что такое Pandas DataFrame</a></li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-2">Создание Pandas DataFrame</a></li></ul><div class="stk-grid" data-stk-css="stkIaeaJ" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><ul class="stk-reset stk-theme_26309__mb_05" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-21">Создание из словарей</a></li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-22">Создание из списков</a></li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-23">Создание из массивов NumPy</a></li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-24">Создание из файлов</a></li></ul></div></div><ul class="stk-theme_26309__pad_hor_1 stk-theme_26309__mb_05 stk-reset" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-3">Получение меток и данных</a></li></ul><div class="stk-grid" data-stk-css="stk2_tG_" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><ul class="stk-reset stk-theme_26309__mb_05" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-31">Метки Pandas DataFrame как последовательность</a></li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-32">Данные в виде массивов NumPy</a></li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-33">Типы данных</a></li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-34">Размер Pandas DataFrame</a></li></ul></div></div><ul class="stk-theme_26309__pad_hor_1 stk-theme_26309__mb_05 stk-reset" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-4">Получение доступа и изменение данных</a></li></ul><div class="stk-grid" data-stk-css="stk2fxe6" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><ul class="stk-reset stk-theme_26309__mb_05" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-41">Получение данных с помощью аксессоров</a></li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-42">Установка данных с помощью аксессоров</a></li></ul></div></div><ul class="stk-theme_26309__pad_hor_1 stk-theme_26309__mb_05 stk-reset" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-5">Вставка и удаление данных</a></li></ul><div class="stk-grid" data-stk-css="stkQcwKg" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><ul class="stk-reset stk-theme_26309__mb_05" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-51">Вставка и удаление строк</a></li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-52">Вставка и удаление столбцов</a></li></ul></div></div><ul class="stk-theme_26309__pad_hor_1 stk-theme_26309__mb_05 stk-reset" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-6">Применение арифметических операций</a></li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-7">Применение функций NumPy и SciPy</a></li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-8">Сортировка в Pandas DataFrame</a></li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-9">Фильтрация данных</a></li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-10">Работа со статистическими данными</a></li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-11">Обработка отсутствующих данных</a></li></ul><div class="stk-grid" data-stk-css="stkSBgSf" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><ul class="stk-reset stk-theme_26309__mb_05" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-111">Расчёт с отсутствующими данными</a></li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-112">Заполнение недостающих данных</a></li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-113">Удаление строк и столбцов с отсутствующими данными</a></li></ul></div></div><ul class="stk-theme_26309__pad_hor_1 stk-theme_26309__mb_05 stk-reset" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-12">Итерации в Pandas DataFrame</a></li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-13">Работа с временными рядами</a></li></ul><div class="stk-grid" data-stk-css="stk3rTzi" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><ul class="stk-reset stk-theme_26309__mb_05" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-131">Создание DataFrame с метками временных рядов</a></li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-132">Индексирование и нарезка</a></li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-133">Ресемплинг и роллинг</a></li></ul></div></div><ul class="stk-theme_26309__pad_hor_1 stk-theme_26309__mb_05 stk-reset" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-14">Графика в Pandas DataFrame</a></li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-15">Рекомендуемая литература</a></li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="#stk-16">Заключение</a></li></ul><hr class="stk-theme_26309__separator_divider-1498128612642 stk-reset"/></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph" id="stk-1"><strong class="stk-reset">Что такое Pandas DataFrame</strong></h2><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">Pandas DataFrame (или просто дата фреймы) — это структуры, которые состоят из:</p><ul class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item"><strong class="stk-reset">данных</strong>, организованных в двух измерениях — строках и столбцах;</li><li class="stk-reset stk-list-item" data-ce-tag="list-item">и соответствующих этим строкам и столбцам <strong class="stk-reset">меток</strong>.</li></ul><p class="stk-reset" data-ce-tag="paragraph">Мы будем писать код в интерактивной консоли Python. Чтобы начать работу с Pandas, нужно импортировать её модуль:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span><span class="hljs-keyword" style="color: rgb(150, 203, 254);">import</span> pandas <span class="hljs-keyword" style="color: rgb(150, 203, 254);">as</span> pd</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><div class="stk-grid" data-ce-tag="grid" data-stk-css="stk4XQdm"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-reset " data-ce-tag="paragraph">Если в вашем окружении нет библиотеки Pandas, <a href="https://skillbox.ru/media/code/kak_ustanovit_biblioteku_v_python/" target="_blank" class="stk-reset">установите её</a> с помощью пакетного менеджера PIP.</p></div></div><p class="stk-reset" data-ce-tag="paragraph">Сразу приступим к практике. Представьте такую ситуацию: наша компания ищет Python-разработчиков в новую команду. Кандидатов так много, что отбирать их вручную, было бы слишком долго, поэтому нас попросили написать программу для анализа результатов тестирования.</p><p class="stk-reset" data-ce-tag="paragraph">Нас интересуют имена кандидатов (<strong class="stk-reset">name</strong>), города проживания (<strong class="stk-reset">city</strong>), возраст (<strong class="stk-reset">age</strong>) и количество баллов, которое они получили в тесте по программированию (<strong class="stk-reset">py-score</strong>):</p><div class="stk-table-wrap"><table data-responsive-type="scroll" class="stk-table--zebra stk-reset stk-table" data-ce-tag="table"><colgroup><col class="stk-reset stk-reset stk-reset stk-reset stk-reset stk-reset" data-stk-css="stkSfOzQ" data-stk-id="125"/><col class="stk-reset stk-reset stk-reset stk-reset stk-reset stk-reset" data-stk-css="stkNaXq6" data-stk-id="126"/><col class="stk-reset stk-reset stk-reset stk-reset stk-reset stk-reset" data-stk-css="stkv4al8" data-stk-id="127"/><col class="stk-reset stk-reset stk-reset stk-reset stk-reset stk-reset" data-stk-css="stkD4RlQ" data-stk-id="128"/><col class="stk-reset stk-reset stk-reset stk-reset stk-reset stk-reset" data-stk-css="stkq56DE" data-stk-id="129"/></colgroup><thead class="stk-reset"><tr class="stk-reset stk-table-row"><th class="ce-element--empty stk-element_no-text stk-reset stk-table-cell" data-ce-tag="th"></th><th class="stk-reset stk-table-cell" data-ce-tag="th">name</th><th class="stk-reset stk-table-cell" data-ce-tag="th">city</th><th class="stk-reset stk-table-cell" data-ce-tag="th">age</th><th class="stk-reset stk-table-cell" data-ce-tag="th"><strong class="stk-reset">py-score</strong></th></tr></thead><tbody class="stk-reset"><tr class="stk-reset stk-table-row"><td class="stk-reset stk-table-cell" data-ce-tag="td">101</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="name">Xavier</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="city">Mexico City</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="age">41</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="py-score">88.0</td></tr><tr class="stk-reset stk-table-row"><td class="stk-reset stk-table-cell" data-ce-tag="td">102</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="name">Ann</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="city">Toronto</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="age">28</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="py-score">79.0</td></tr><tr class="stk-reset stk-table-row"><td class="stk-reset stk-table-cell" data-ce-tag="td">103</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="name">Jana</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="city">Prague</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="age">33</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="py-score">81.0</td></tr><tr class="stk-reset stk-table-row"><td class="stk-reset stk-table-cell" data-ce-tag="td">104</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="name">Yi</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="city">Shanghai</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="age">34</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="py-score">80.0</td></tr><tr class="stk-reset stk-table-row"><td class="stk-reset stk-table-cell" data-ce-tag="td">105</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="name">Robin</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="city">Manchester</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="age">38</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="py-score">68.0</td></tr><tr class="stk-reset stk-table-row"><td class="stk-reset stk-table-cell" data-ce-tag="td">106</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="name">Amal</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="city">Cairo</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="age">31</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="py-score">61.0</td></tr><tr class="stk-reset stk-table-row"><td class="stk-reset stk-table-cell" data-ce-tag="td">107</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="name">Nori</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="city">Osaka</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="age">37</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="py-score">84.0</td></tr></tbody></table></div><p class="stk-reset" data-ce-tag="paragraph">В этой таблице первая строка содержит <strong class="stk-reset">метки столбцов</strong> (<u class="stk-reset">name</u>, <u class="stk-reset">city</u> и так далее). Первый столбец содержит метки строк (<u class="stk-reset">101</u>, <u class="stk-reset">102</u> и так далее). Все остальные ячейки заполняются значениями данных.</p><p class="stk-reset" data-ce-tag="paragraph">Есть несколько способов создать data frame. В большинстве случаев используют конструктор и передают данные в виде двумерного списка, кортежа или массива <a href="https://skillbox.ru/media/code/biblioteka-numpy-vsye-chto-nuzhno-znat-novichku/" target="_blank" class="stk-reset">NumPy</a>. Также их можно переформатировать в словарь, Pandas Series или другие типы данных, которые в этой статье не рассматриваются.</p><p class="stk-reset" data-ce-tag="paragraph">Предположим, нам нужен словарь:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>data = {
<span class="hljs-meta" style="color: rgb(124, 124, 124);">... </span> <span class="hljs-string" style="color: rgb(168, 255, 96);">'name'</span>: [<span class="hljs-string" style="color: rgb(168, 255, 96);">'Xavier'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'Ann'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'Jana'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'Yi'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'Robin'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'Amal'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'Nori'</span>],
<span class="hljs-meta" style="color: rgb(124, 124, 124);">... </span> <span class="hljs-string" style="color: rgb(168, 255, 96);">'city'</span>: [<span class="hljs-string" style="color: rgb(168, 255, 96);">'Mexico City'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'Toronto'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'Prague'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'Shanghai'</span>,
<span class="hljs-meta" style="color: rgb(124, 124, 124);">... </span> <span class="hljs-string" style="color: rgb(168, 255, 96);">'Manchester'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'Cairo'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'Osaka'</span>],
<span class="hljs-meta" style="color: rgb(124, 124, 124);">... </span> <span class="hljs-string" style="color: rgb(168, 255, 96);">'age'</span>: [<span class="hljs-number" style="color: rgb(255, 115, 253);">41</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">28</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">33</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">34</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">38</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">31</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">37</span>],
<span class="hljs-meta" style="color: rgb(124, 124, 124);">... </span> <span class="hljs-string" style="color: rgb(168, 255, 96);">'py-score'</span>: [<span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">68.0</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">61.0</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">84.0</span>]
<span class="hljs-meta" style="color: rgb(124, 124, 124);">... </span>}
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>row_labels = [<span class="hljs-number" style="color: rgb(255, 115, 253);">101</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">102</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">103</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">104</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">105</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">106</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">107</span>]</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><div class="stk-grid__layout_reverse stk-grid" data-stk-css="stkMg1VS" data-ce-tag="grid"><div data-col-width="4" class="stk-grid-col valign-middle stk-grid-col_last" data-ce-tag="grid-col" data-stk-css="" data-stk-css-m=""><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/11033419072023_b9ead331dd32dc217902662bedebf0771737fa47.PNG" data-image-id="58472" data-image-name="321.PNG" class="stk-image stk-reset" width="603" height="297" loading="lazy"/></div></figure></div><div data-col-width="8" class="stk-grid-col" data-ce-tag="grid-col"><p class="stk-reset stk-theme_26309__mb_05 stk-theme_26309__style_font_style-1629726727970" data-ce-tag="paragraph">Читайте также:</p><p class="stk-theme_26309__mb_15 stk-reset stk-theme_26309__style_font_style-1629786048064 stk-theme_26309__style_font_style-1629290372003 stk-theme_26309__color_26309_custom_color_1 article_incut" data-ce-tag="paragraph"><a href="https://skillbox.ru/media/code/slovari-v-python-chto-nuzhno-znat-i-kak-polzovatsya/" target="_blank" class="stk-reset">Работа со словарями в Python: что нужно знать и как пользоваться</a></p></div></div><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">В данном случае <u class="stk-reset">data</u>— это <a class="stk-reset" href="https://skillbox.ru/media/code/peremennye-v-python-chto-eto-takoe-i-kakie-oni-byvayut/" target="_blank">переменная Python</a>, которая ссылается на словарь, содержащий данные кандидатов. Она содержит метки столбцов:</p><ul class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item"><u class="stk-reset">'name'</u></li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><u class="stk-reset">'city'</u></li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><u class="stk-reset">'age'</u></li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><u class="stk-reset">'py-score'</u></li></ul><p class="stk-reset" data-ce-tag="paragraph">А <u class="stk-reset">row_labels</u> ссылается на список, содержащий метки строк, представляющих собой числа в диапазоне от 101 до 107.</p><p class="stk-reset" data-ce-tag="paragraph">Создадим Pandas DataFrame:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df = pd.DataFrame(data=data, index=row_labels)
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df
name city age py-score
<span class="hljs-number" style="color: rgb(255, 115, 253);">101</span> Xavier Mexico City <span class="hljs-number" style="color: rgb(255, 115, 253);">41</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">102</span> Ann Toronto <span class="hljs-number" style="color: rgb(255, 115, 253);">28</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">103</span> Jana Prague <span class="hljs-number" style="color: rgb(255, 115, 253);">33</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">104</span> Yi Shanghai <span class="hljs-number" style="color: rgb(255, 115, 253);">34</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">105</span> Robin Manchester <span class="hljs-number" style="color: rgb(255, 115, 253);">38</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">68.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">106</span> Amal Cairo <span class="hljs-number" style="color: rgb(255, 115, 253);">31</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">61.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">107</span> Nori Osaka <span class="hljs-number" style="color: rgb(255, 115, 253);">37</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">84.0</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">Здесь <u class="stk-reset">df</u> — это переменная, содержащая ссылку на наш объект DataFrame. Он выглядит точно так же, как и приведённая выше таблица кандидатов, и имеет следующие функции:</p><ul class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item">Метки строк от 101 до 107;</li><li class="stk-reset stk-list-item" data-ce-tag="list-item">Метки столбцов <u class="stk-reset">'name'</u>, <u class="stk-reset">'city'</u>, <u class="stk-reset">'age'</u> и <u class="stk-reset">'py-score'</u>;</li><li class="stk-reset stk-list-item" data-ce-tag="list-item">Данные: имена кандидатов, города, возраст и результаты тестов Python.</li></ul><p class="stk-reset" data-ce-tag="paragraph">В таблице представлены метки и данные из <u class="stk-reset">df</u>: красные — метки столбцов, синие — метки строк, зелёные — данные.</p><div class="stk-table-wrap"><table data-responsive-type="scroll" class="stk-table--zebra stk-reset stk-table" data-ce-tag="table"><colgroup><col class="stk-reset stk-reset stk-reset stk-reset stk-reset stk-reset stk-reset" data-stk-css="stksHZud" data-stk-id="206"/><col class="stk-reset stk-reset stk-reset stk-reset stk-reset stk-reset stk-reset" data-stk-css="stkdF56P" data-stk-id="207"/><col class="stk-reset stk-reset stk-reset stk-reset stk-reset stk-reset stk-reset" data-stk-css="stk5iSNp" data-stk-id="208"/><col class="stk-reset stk-reset stk-reset stk-reset stk-reset stk-reset stk-reset" data-stk-css="stkoA-1m" data-stk-id="209"/><col class="stk-reset stk-reset stk-reset stk-reset stk-reset stk-reset stk-reset" data-stk-css="stk72osD" data-stk-id="210"/></colgroup><thead class="stk-reset"><tr class="stk-reset stk-table-row" data-stk-css="stkS2zh7"><th class="stk-reset stk-table-cell stk-theme_26309__color_26309_custom_color_0" data-ce-tag="th" data-stk-css="stkAsFfS">0</th><th class="stk-reset stk-table-cell" data-ce-tag="th">name</th><th class="stk-reset stk-table-cell" data-ce-tag="th">city</th><th class="stk-reset stk-table-cell" data-ce-tag="th">age</th><th class="stk-reset stk-table-cell" data-ce-tag="th"><strong class="stk-reset">py-score</strong></th></tr></thead><tbody class="stk-reset"><tr class="stk-reset stk-table-row"><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="0">101</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="name">Xavier</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="city">Mexico City</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="age">41</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="py-score">88.0</td></tr><tr class="stk-reset stk-table-row"><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="0">102</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="name">Ann</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="city">Toronto</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="age">28</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="py-score">79.0</td></tr><tr class="stk-reset stk-table-row"><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="0">103</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="name">Jana</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="city">Prague</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="age">33</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="py-score">81.0</td></tr><tr class="stk-reset stk-table-row"><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="0">104</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="name">Yi</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="city">Shanghai</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="age">34</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="py-score">80.0</td></tr><tr class="stk-reset stk-table-row"><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="0">105</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="name">Robin</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="city">Manchester</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="age">38</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="py-score">68.0</td></tr><tr class="stk-reset stk-table-row"><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="0">106</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="name">Amal</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="city">Cairo</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="age">31</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="py-score">61.0</td></tr><tr class="stk-reset stk-table-row"><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="0">107</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="name">Nori</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="city">Osaka</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="age">37</td><td class="stk-reset stk-table-cell" data-ce-tag="td" data-cell-header="py-score">84.0</td></tr></tbody></table></div><p class="stk-reset" data-ce-tag="paragraph">Иногда объекты Pandas DataFrames настолько большие, что просматривать все строки одновременно становится неудобно. Чтобы увидеть первые несколько элементов, воспользуйтесь методом <a class="stk-reset" href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.head.html" target="_blank" data-gtm-vis-has-fired-10171822_255="1">head()</a>, а для показа последних — <a class="stk-reset" href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.html" target="_blank" data-gtm-vis-has-fired-10171822_255="1">tail()</a>. С помощью необязательного параметра <u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">n</u> в скобках можно регулировать количество строк, которое вы хотите отобразить:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df.head(n=<span class="hljs-number" style="color: rgb(255, 115, 253);">2</span>)
name city age py-score
<span class="hljs-number" style="color: rgb(255, 115, 253);">101</span> Xavier Mexico City <span class="hljs-number" style="color: rgb(255, 115, 253);">41</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">102</span> Ann Toronto <span class="hljs-number" style="color: rgb(255, 115, 253);">28</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df.tail(n=<span class="hljs-number" style="color: rgb(255, 115, 253);">2</span>)
name city age py-score
<span class="hljs-number" style="color: rgb(255, 115, 253);">106</span> Amal Cairo <span class="hljs-number" style="color: rgb(255, 115, 253);">31</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">61.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">107</span> Nori Osaka <span class="hljs-number" style="color: rgb(255, 115, 253);">37</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">84.0</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><div class="stk-grid" data-ce-tag="grid" data-stk-css="stkCceCv"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-reset " data-ce-tag="paragraph"><strong class="stk-reset">Примечание.</strong> В зависимости от ситуации Pandas DataFrame можно рассматривать как словарь столбцов или как Pandas Series с дополнительными функциями.</p></div></div><p class="stk-reset" data-ce-tag="paragraph">Доступ к столбцам в Pandas DataFrame можно получить так же, как к значениям из словаря, — это самый удобный способ:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>cities = df[<span class="hljs-string" style="color: rgb(168, 255, 96);">'city'</span>]
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>cities
<span class="hljs-number" style="color: rgb(255, 115, 253);">101</span> Mexico City
<span class="hljs-number" style="color: rgb(255, 115, 253);">102</span> Toronto
<span class="hljs-number" style="color: rgb(255, 115, 253);">103</span> Prague
<span class="hljs-number" style="color: rgb(255, 115, 253);">104</span> Shanghai
<span class="hljs-number" style="color: rgb(255, 115, 253);">105</span> Manchester
<span class="hljs-number" style="color: rgb(255, 115, 253);">106</span> Cairo
<span class="hljs-number" style="color: rgb(255, 115, 253);">107</span> Osaka
Name: city, dtype: object</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Если имя столбца — строка, представленная в виде <a class="stk-reset" href="https://docs.python.org/3/reference/lexical_analysis.html#identifiers" target="_blank">действительного идентификатора Python</a>, для доступа к нему можно также использовать запись через точку, то есть тем же путём, как и для атрибута экземпляра класса. Попробуем извлечь таким способом всё тот же столбец с меткой <u class="stk-reset">'city'</u>, содержащей данные о местонахождении наших кандидатов:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df.city
<span class="hljs-number" style="color: rgb(255, 115, 253);">101</span> Mexico City
<span class="hljs-number" style="color: rgb(255, 115, 253);">102</span> Toronto
<span class="hljs-number" style="color: rgb(255, 115, 253);">103</span> Prague
<span class="hljs-number" style="color: rgb(255, 115, 253);">104</span> Shanghai
<span class="hljs-number" style="color: rgb(255, 115, 253);">105</span> Manchester
<span class="hljs-number" style="color: rgb(255, 115, 253);">106</span> Cairo
<span class="hljs-number" style="color: rgb(255, 115, 253);">107</span> Osaka
Name: city, dtype: object</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Обратите внимание: мы извлекли как данные, так и соответствующие метки строк:</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/11095719072023_7bf79016852f026bf72b4e59eee9174c0692e978.png" data-image-id="58473" data-image-name="таблица 13.07_Монтажная область 1 копия 19.png" width="1540" height="1378" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Инфографика: Катя Павловская для Skillbox Media</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Каждый столбец Pandas DataFrame — это экземпляр класса <a href="https://pandas.pydata.org/pandas-docs/stable/reference/series.html" target="_blank" class="stk-reset">Pandas.Series</a> — структуры, которая содержит одномерные данные и их метки. Вызвать любой элемент из объектов <strong class="stk-reset">Series </strong>можно так же, как из словаря, то есть используя его метку в качестве ключа:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>cities[<span class="hljs-number" style="color: rgb(255, 115, 253);">102</span>]
<span class="hljs-string" style="color: rgb(168, 255, 96);">'Toronto'</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">В данном случае <u class="stk-reset">'Toronto'</u> — это значение данных, а 102 — соответствующая метка. В <a class="stk-reset" href="#stk-2">следующем разделе</a> приведены другие способы вызвать элемент Pandas DataFrame.</p><p class="stk-reset" data-ce-tag="paragraph">Доступ ко всей строке можно получить с помощью аксессора <a class="stk-reset" href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.loc.html" target="_blank"><u class="stk-reset">.loc[]</u></a>:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df.loc[<span class="hljs-number" style="color: rgb(255, 115, 253);">103</span>]
name Jana
city Prague
age <span class="hljs-number" style="color: rgb(255, 115, 253);">33</span>
py-score <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span>
Name: <span class="hljs-number" style="color: rgb(255, 115, 253);">103</span>, dtype: object</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">На этот раз мы извлекли строку, соответствующую метке <u class="stk-reset">103</u>, содержащую данные кандидатки по имени <u class="stk-reset">Jana</u>. Кроме самих значений данных мы видим и метки соответствующих столбцов:</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/11111519072023_d27d3b81f162077810bb4ff2593e5a00602b4f5c.png" data-image-id="58474" data-image-name="таблица 13.07_Монтажная область 1 копия 20.png" width="1540" height="1326" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Инфографика: Катя Павловская для Skillbox Media</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Возвращаемая строка — тоже экземпляр Pandas.Series.</p></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph" id="stk-2"><strong class="stk-reset">Создание Pandas DataFrame</strong></h2><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">Как уже упоминалось, существует несколько способов создать дата фрейм. В этом разделе вы научитесь делать это с помощью конструктора DataFrame, используя:</p><ul class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item">словари Python;</li><li class="stk-reset stk-list-item" data-ce-tag="list-item">списки Python;</li><li class="stk-reset stk-list-item" data-ce-tag="list-item">двумерные массивы NumPy;</li><li class="stk-reset stk-list-item" data-ce-tag="list-item">файлы.</li></ul><p class="stk-reset" data-ce-tag="paragraph">Есть и другие методы, о которых вы можете узнать из <a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html" target="_blank" class="stk-reset">официальной документации</a>.</p><p class="stk-reset" data-ce-tag="paragraph">Начнём с импорта NumPy, который пригодится нам дальше:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span><span class="hljs-keyword" style="color: rgb(150, 203, 254);">import</span> numpy <span class="hljs-keyword" style="color: rgb(150, 203, 254);">as</span> np
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span><span class="hljs-keyword" style="color: rgb(150, 203, 254);">import</span> Pandas <span class="hljs-keyword" style="color: rgb(150, 203, 254);">as</span> pd</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Вот и всё. Теперь создадим несколько видов DataFrame.</p><h3 class="stk-theme_26309__style_medium_header stk-theme_26309__mb_05 stk-reset" id="stk-21" data-ce-tag="paragraph"><strong class="stk-reset">Создание из словарей</strong></h3><p class="stk-reset" data-ce-tag="paragraph">Как вы уже знаете, Pandas DataFrame можно создать из словаря Python:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>d = {<span class="hljs-string" style="color: rgb(168, 255, 96);">'x'</span>: [<span class="hljs-number" style="color: rgb(255, 115, 253);">1</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">2</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">3</span>], <span class="hljs-string" style="color: rgb(168, 255, 96);">'y'</span>: np.array([<span class="hljs-number" style="color: rgb(255, 115, 253);">2</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">4</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">8</span>]), <span class="hljs-string" style="color: rgb(168, 255, 96);">'z'</span>: <span class="hljs-number" style="color: rgb(255, 115, 253);">100</span>}
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>pd.DataFrame(d)
x y z
<span class="hljs-number" style="color: rgb(255, 115, 253);">0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">1</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">2</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">100</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">1</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">2</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">4</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">100</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">3</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">8</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">100</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Ключи словаря — это метки столбцов DataFrame, а значения словаря — это значения данных в соответствующих столбцах DataFrame. Они могут содержаться в <a href="https://docs.python.org/3/tutorial/datastructures.html#tuples-and-sequences" target="_blank" class="stk-reset">кортеже</a>, <a href="https://docs.python.org/3/tutorial/datastructures.html#more-on-lists" target="_blank" class="stk-reset">списке</a>, одномерном <a href="https://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.html" target="_blank" class="stk-reset">массиве NumPy</a>, <a href="https://pandas.pydata.org/pandas-docs/stable/reference/series.html" target="_blank" class="stk-reset">объекте Pandas Series</a> или в одном из нескольких других типов данных. Можно также указать значение, которое будет скопировано по всему столбцу.</p><p class="stk-reset" data-ce-tag="paragraph">Можно менять порядок столбцов с помощью параметра <u class="stk-reset">columns</u>, а меток строк — с помощью <u class="stk-reset">index</u>:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>pd.DataFrame(d, index=[<span class="hljs-number" style="color: rgb(255, 115, 253);">100</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">200</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">300</span>], columns=[<span class="hljs-string" style="color: rgb(168, 255, 96);">'z'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'y'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'x'</span>])
z y x
<span class="hljs-number" style="color: rgb(255, 115, 253);">100</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">100</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">2</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">1</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">200</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">100</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">4</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">2</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">300</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">100</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">8</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">3</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Как видите, мы указали метки строк <u class="stk-reset">100</u>, <u class="stk-reset">200</u> и <u class="stk-reset">300</u>, при этом изменив порядок столбцов: <u class="stk-reset">z</u>, <u class="stk-reset">y</u>, <u class="stk-reset">x</u>.</p><h3 class="stk-theme_26309__style_medium_header stk-theme_26309__mb_05 stk-reset" id="stk-22" data-ce-tag="paragraph"><strong class="stk-reset">Создание из списков</strong></h3><p class="stk-reset" data-ce-tag="paragraph">Другой способ создать Pandas DataFrame — использовать список словарей:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>l = [{<span class="hljs-string" style="color: rgb(168, 255, 96);">'x'</span>: <span class="hljs-number" style="color: rgb(255, 115, 253);">1</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'y'</span>: <span class="hljs-number" style="color: rgb(255, 115, 253);">2</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'z'</span>: <span class="hljs-number" style="color: rgb(255, 115, 253);">100</span>},
<span class="hljs-meta" style="color: rgb(124, 124, 124);">... </span> {<span class="hljs-string" style="color: rgb(168, 255, 96);">'x'</span>: <span class="hljs-number" style="color: rgb(255, 115, 253);">2</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'y'</span>: <span class="hljs-number" style="color: rgb(255, 115, 253);">4</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'z'</span>: <span class="hljs-number" style="color: rgb(255, 115, 253);">100</span>},
<span class="hljs-meta" style="color: rgb(124, 124, 124);">... </span> {<span class="hljs-string" style="color: rgb(168, 255, 96);">'x'</span>: <span class="hljs-number" style="color: rgb(255, 115, 253);">3</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'y'</span>: <span class="hljs-number" style="color: rgb(255, 115, 253);">8</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'z'</span>: <span class="hljs-number" style="color: rgb(255, 115, 253);">100</span>}]
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>pd.DataFrame(l)
x y z
<span class="hljs-number" style="color: rgb(255, 115, 253);">0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">1</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">2</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">100</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">1</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">2</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">4</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">100</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">3</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">8</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">100</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Опять же, ключи словаря — это метки столбцов, а значения словаря — это значения данных в DataFrame.</p><p class="stk-reset" data-ce-tag="paragraph">В качестве значений данных можно также использовать<strong class="stk-reset"> вложенные</strong> списки и даже списки списков. В этих случаях лучше явно указывать метки столбцов, строк или и того и другого:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>l = [[<span class="hljs-number" style="color: rgb(255, 115, 253);">1</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">2</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">100</span>],
<span class="hljs-meta" style="color: rgb(124, 124, 124);">... </span> [<span class="hljs-number" style="color: rgb(255, 115, 253);">2</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">4</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">100</span>],
<span class="hljs-meta" style="color: rgb(124, 124, 124);">... </span> [<span class="hljs-number" style="color: rgb(255, 115, 253);">3</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">8</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">100</span>]]
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>pd.DataFrame(l, columns=[<span class="hljs-string" style="color: rgb(168, 255, 96);">'x'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'y'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'z'</span>])
x y z
<span class="hljs-number" style="color: rgb(255, 115, 253);">0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">1</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">2</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">100</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">1</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">2</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">4</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">100</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">3</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">8</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">100</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Аналогично можно использовать список кортежей — просто замените ими вложенные списки в приведённом выше примере.</p><h3 class="stk-theme_26309__style_medium_header stk-theme_26309__mb_05 stk-reset" id="stk-23" data-ce-tag="paragraph"><strong class="stk-reset">Создание из массивов NumPy</strong></h3><p class="stk-reset" data-ce-tag="paragraph">Вы можете передать двумерный массив NumPy в DataFrame так же, как и в вышеприведённом случае с вложенным списком:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>arr = np.array([[<span class="hljs-number" style="color: rgb(255, 115, 253);">1</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">2</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">100</span>],
<span class="hljs-meta" style="color: rgb(124, 124, 124);">... </span> [<span class="hljs-number" style="color: rgb(255, 115, 253);">2</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">4</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">100</span>],
<span class="hljs-meta" style="color: rgb(124, 124, 124);">... </span> [<span class="hljs-number" style="color: rgb(255, 115, 253);">3</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">8</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">100</span>]])
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df_ = pd.DataFrame(arr, columns=[<span class="hljs-string" style="color: rgb(168, 255, 96);">'x'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'y'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'z'</span>])
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df_
x y z
<span class="hljs-number" style="color: rgb(255, 115, 253);">0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">1</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">2</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">100</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">1</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">2</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">4</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">100</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">3</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">8</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">100</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Хотя этот пример выглядит похожим на предыдущий, у него есть одно преимущество: вы можете указать необязательный параметр <u class="stk-reset">copy</u>. Когда для <u class="stk-reset">copy</u> установлено значение <u class="stk-reset">False</u> (настройка по умолчанию), данные из массива NumPy не копируются. Это означает, что исходные данные из массива назначаются DataFrame Pandas. Если вы измените массив, ваш DataFrame тоже изменится:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>arr[<span class="hljs-number" style="color: rgb(255, 115, 253);">0</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">0</span>] = <span class="hljs-number" style="color: rgb(255, 115, 253);">1000</span>
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df_
x y z
<span class="hljs-number" style="color: rgb(255, 115, 253);">0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">1000</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">2</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">100</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">1</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">2</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">4</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">100</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">3</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">8</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">100</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Как видите, когда вы изменяете первый элемент <u class="stk-reset">arr</u>, вы также изменяете <u class="stk-reset">df_</u>.</p><div class="stk-grid" data-ce-tag="grid" data-stk-css="stk3YmC4"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-reset " data-ce-tag="paragraph"><strong class="stk-reset">Примечание.</strong> Отсутствие копирования значений данных может значительно сэкономить время и вычислительную мощность при работе с большими объёмами данных.</p></div></div><p class="stk-reset" data-ce-tag="paragraph">Если же указать <u class="stk-reset">copy=True</u>, вместо фактических значений в <u class="stk-reset">df_</u> будет создана копия значений <u class="stk-reset">arr</u>.</p><h3 class="stk-theme_26309__style_medium_header stk-theme_26309__mb_05 stk-reset" id="stk-24" data-ce-tag="paragraph"><strong class="stk-reset">Создание из файлов</strong></h3><p class="stk-reset" data-ce-tag="paragraph">Вы можете сохранять и загружать данные и метки из Pandas DataFrame в различные типы файлов, включая CSV, Excel, SQL, JSON и другие, и наоборот. Это очень мощная функция.</p><p class="stk-reset" data-ce-tag="paragraph">Сохраним DataFrame кандидатов в файл CSV с помощью метода <a class="stk-reset" href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_csv.html" target="_blank"><u class="stk-reset">to_csv()</u></a>:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df.to_csv(<span class="hljs-string" style="color: rgb(168, 255, 96);">'data.csv'</span>)</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Приведённый выше оператор создаст <a class="stk-reset" href="https://ru.wikipedia.org/wiki/CSV" target="_blank">CSV-файл</a>, вызываемый с помощью <u class="stk-reset">data.csv</u> из рабочего каталога:</p><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">,name,city,age,py-score</p><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">101,Xavier,Mexico City,41,88.0</p><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">102,Ann,Toronto,28,79.0</p><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">103,Jana,Prague,33,81.0</p><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">104,Yi,Shanghai,34,80.0</p><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">105,Robin,Manchester,38,68.0</p><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">106,Amal,Cairo,31,61.0</p><p class="stk-reset" data-ce-tag="paragraph">107,Nori,Osaka,37,84.0</p><p class="stk-reset" data-ce-tag="paragraph">Загрузим его с помощью <a class="stk-reset" href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html" target="_blank"><u class="stk-reset">read_csv()</u></a>:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>pd.read_csv(<span class="hljs-string" style="color: rgb(168, 255, 96);">'data.csv'</span>, index_col=<span class="hljs-number" style="color: rgb(255, 115, 253);">0</span>)
name city age py-score
<span class="hljs-number" style="color: rgb(255, 115, 253);">101</span> Xavier Mexico City <span class="hljs-number" style="color: rgb(255, 115, 253);">41</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">102</span> Ann Toronto <span class="hljs-number" style="color: rgb(255, 115, 253);">28</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">103</span> Jana Prague <span class="hljs-number" style="color: rgb(255, 115, 253);">33</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">104</span> Yi Shanghai <span class="hljs-number" style="color: rgb(255, 115, 253);">34</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">105</span> Robin Manchester <span class="hljs-number" style="color: rgb(255, 115, 253);">38</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">68.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">106</span> Amal Cairo <span class="hljs-number" style="color: rgb(255, 115, 253);">31</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">61.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">107</span> Nori Osaka <span class="hljs-number" style="color: rgb(255, 115, 253);">37</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">84.0</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph"><u class="stk-reset">index_col=0</u> указывает на то, что метки строк должны быть расположены в первом столбце CSV-файла.</p></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph" id="stk-3"><strong class="stk-reset">Получение меток и данных</strong></h2><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">Теперь, когда мы создали DataFrame, можно извлекать из него информацию. Для этого типа объектов в Pandas доступны следующие действия:</p><ul class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item">получение и изменение меток строк и столбцов в виде последовательностей;</li><li class="stk-reset stk-list-item" data-ce-tag="list-item">представление данных в виде массивов NumPy;</li><li class="stk-reset stk-list-item" data-ce-tag="list-item">проверка и настройке <a href="https://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html" target="_blank" class="stk-reset">типов данных</a>;</li><li class="stk-reset stk-list-item" data-ce-tag="list-item">анализ размеров объектов DataFrame.</li></ul><h3 class="stk-theme_26309__style_medium_header stk-theme_26309__mb_05 stk-reset" id="stk-31" data-ce-tag="paragraph"><strong class="stk-reset">Метки Pandas DataFrame как последовательность</strong></h3><p class="stk-reset" data-ce-tag="paragraph">Можно получить метки строк DataFrame с помощью атрибутов <a class="stk-reset" href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Index.html" target="_blank">index</a> и метки столбцов с помощью <a class="stk-reset" href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.columns.html" target="_blank">columns</a>:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df.index
Int64Index([<span class="hljs-number" style="color: rgb(255, 115, 253);">1</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">2</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">3</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">4</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">5</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">6</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">7</span>], dtype=<span class="hljs-string" style="color: rgb(168, 255, 96);">'int64'</span>)
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df.columns
Index([<span class="hljs-string" style="color: rgb(168, 255, 96);">'name'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'city'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'age'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'py-score'</span>], dtype=<span class="hljs-string" style="color: rgb(168, 255, 96);">'object'</span>)</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Как и в любой другой последовательности в Python, вы можете получить любой элемент объекта <u class="stk-reset">df.columns</u>:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df.columns[<span class="hljs-number" style="color: rgb(255, 115, 253);">1</span>]
<span class="hljs-string" style="color: rgb(168, 255, 96);">'city'</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Помимо этих доступны другие операции последовательности, включая итерацию по меткам строк или столбцов. Однако в них редко возникает необходимость, так как Pandas предлагает другие виды итераций в DataFrames, которые вы увидите далее.</p><p class="stk-reset" data-ce-tag="paragraph">Этот подход можно использовать и для изменения меток:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df.index = np.arange(<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">17</span>)
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df.index
Int64Index([<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">11</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">12</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">13</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">14</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">15</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">16</span>], dtype=<span class="hljs-string" style="color: rgb(168, 255, 96);">'int64'</span>)
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df
name city age py-score
<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span> Xavier Mexico City <span class="hljs-number" style="color: rgb(255, 115, 253);">41</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> Ann Toronto <span class="hljs-number" style="color: rgb(255, 115, 253);">28</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">12</span> Jana Prague <span class="hljs-number" style="color: rgb(255, 115, 253);">33</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> Yi Shanghai <span class="hljs-number" style="color: rgb(255, 115, 253);">34</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">14</span> Robin Manchester <span class="hljs-number" style="color: rgb(255, 115, 253);">38</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">68.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span> Amal Cairo <span class="hljs-number" style="color: rgb(255, 115, 253);">31</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">61.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">16</span> Nori Osaka <span class="hljs-number" style="color: rgb(255, 115, 253);">37</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">84.0</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">В этом примере <a class="stk-reset" href="https://docs.scipy.org/doc/numpy/reference/generated/numpy.arange.html" target="_blank"><u class="stk-reset">numpy.arange()</u></a> используется для создания новой последовательности меток строк, которая содержит целые числа от 10 до 16. Имейте в виду: если вы попытаетесь изменить определённый элемент <u class="stk-reset">index</u> или <u class="stk-reset">columns</u>, вы получите ошибку <u class="stk-reset">TypeError</u>.</p><div class="stk-grid" data-ce-tag="grid" data-stk-css="stkOUSoh"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-reset " data-ce-tag="paragraph">Узнать больше о методе arange() можно в статье <a href="https://realpython.com/how-to-use-numpy-arange/" target="_blank" class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">NumPy arange(): How to Use np.arange()</a></p></div></div><h3 class="stk-theme_26309__style_medium_header stk-theme_26309__mb_05 stk-reset" id="stk-32" data-ce-tag="paragraph"><strong class="stk-reset">Данные в виде массивов NumPy</strong></h3><p class="stk-reset" data-ce-tag="paragraph">Иногда вам может понадобиться извлечь данные из Pandas DataFrame без меток. Чтобы получить массив NumPy с немаркированными данными, используйте метод <a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_numpy.html" target="_blank" class="stk-reset">to_numpy()</a> или свойство <a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.values.html" target="_blank" class="stk-reset">values</a>:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df.to_numpy()
array([[<span class="hljs-string" style="color: rgb(168, 255, 96);">'Xavier'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'Mexico City'</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">41</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span>],
[<span class="hljs-string" style="color: rgb(168, 255, 96);">'Ann'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'Toronto'</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">28</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span>],
[<span class="hljs-string" style="color: rgb(168, 255, 96);">'Jana'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'Prague'</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">33</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span>],
[<span class="hljs-string" style="color: rgb(168, 255, 96);">'Yi'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'Shanghai'</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">34</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span>],
[<span class="hljs-string" style="color: rgb(168, 255, 96);">'Robin'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'Manchester'</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">38</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">68.0</span>],
[<span class="hljs-string" style="color: rgb(168, 255, 96);">'Amal'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'Cairo'</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">31</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">61.0</span>],
[<span class="hljs-string" style="color: rgb(168, 255, 96);">'Nori'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'Osaka'</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">37</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">84.0</span>]], dtype=object)</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">И <u class="stk-reset">to_numpy()</u>, и <u class="stk-reset">values</u> дают один и тот же результат: они возвращают массив NumPy с данными из DataFrame Pandas:</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/11170919072023_5dd77aa28e0d2dbbd47cd38ee9854b54843e20be.png" data-image-id="58475" data-image-name="таблица 13.07_Монтажная область 1 копия 21.png" width="1540" height="1347" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Инфографика: Катя Павловская для Skillbox Media</em></figcaption></figure><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">Однако в официальной документации Pandas рекомендуется использовать <u class="stk-reset">to_numpy()</u>, потому что это более гибкий инструмент с полезными параметрами:</p><ul class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item"><u class="stk-reset">dtype</u> — используется, когда нужно указать тип данных результирующего массива. Значение умолчанию — <u class="stk-reset">None</u>;</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><u class="stk-reset">copy</u> — если хотите использовать исходные данные из DataFrame, установите этот параметр в <u class="stk-reset">False</u>. Если хотите скопировать данные, установите <u class="stk-reset">True</u>.</li></ul><p class="stk-reset" data-ce-tag="paragraph">Тем не менее вам, скорее всего, чаще будет встречаться <u class="stk-reset">values</u>, особенно в старых программах, потому что <u class="stk-reset">to_numpy()</u> впервые был представлен только в Pandas 0.24.0.</p><h3 class="stk-theme_26309__style_medium_header stk-theme_26309__mb_05 stk-reset" id="stk-33" data-ce-tag="paragraph"><strong class="stk-reset">Типы данных</strong></h3><p class="stk-reset" data-ce-tag="paragraph">Типы данных, или <strong class="stk-reset">dtypes</strong>, важны, поскольку определяют объём памяти, который использует ваш DataFrame, скорость вычислений и уровень точности расчётов.</p><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">Pandas в основном построен на <a href="https://docs.scipy.org/doc/numpy/user/basics.types.html" target="_blank" class="stk-reset">типах данных NumPy</a>. Однако в Pandas 1.0 появились собственные дополнительные типы:</p><ul class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a href="https://pandas.pydata.org/docs/reference/api/pandas.BooleanDtype.html#pandas.BooleanDtype" target="_blank" class="stk-reset">BooleanDtype</a> и <a href="https://pandas.pydata.org/docs/reference/api/pandas.arrays.BooleanArray.html#pandas.arrays.BooleanArray" target="_blank" class="stk-reset">BooleanArray</a> — для поддержки отсутствующих логических значений и <a href="https://pandas.pydata.org/docs/user_guide/boolean.html#kleene-logical-operations" target="_blank" class="stk-reset">трёхзначной логики Клини</a>.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a href="https://pandas.pydata.org/docs/reference/api/pandas.StringDtype.html#pandas.StringDtype" target="_blank" class="stk-reset">StringDtype</a> и <a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.arrays.StringArray.html" target="_blank" class="stk-reset">StringArray</a> — специальные строковые типы.</li></ul><p class="stk-reset" data-ce-tag="paragraph">Типы данных для каждого столбца Pandas DataFrame можно получить с помощью <u class="stk-reset">dtypes</u>:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df.dtypes
name object
city object
age int64
py-score float64
dtype: object</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Как видите, <u class="stk-reset">dtypes</u> возвращает объект <u class="stk-reset">Series</u> с именами столбцов в качестве меток и соответствующими типами данных в качестве значений.</p><p class="stk-reset" data-ce-tag="paragraph">Если вы хотите изменить тип данных одного или нескольких столбцов, используйте <a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.astype.html" target="_blank" class="stk-reset">astype()</a>:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df_ = df.astype(dtype={<span class="hljs-string" style="color: rgb(168, 255, 96);">'age'</span>: np.int32, <span class="hljs-string" style="color: rgb(168, 255, 96);">'py-score'</span>: np.float32})
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df_.dtypes
name object
city object
age int32
py-score float32
dtype: object</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Самый важный и единственный обязательный параметр для <u class="stk-reset">astype()</u> — <u class="stk-reset">dtype</u>. Его можно задавать как тип данных или словарь. В случае со словарём ключи будут именами столбцов, а значения — типами данных.</p><p class="stk-reset" data-ce-tag="paragraph">Как видите, типы данных для столбцов <u class="stk-reset">age</u> и <u class="stk-reset">py-score</u> в DataFrame <u class="stk-reset">df</u> — <u class="stk-reset">int64</u> и <u class="stk-reset">float64</u> соответственно, то есть 64-битные (или 8-байтовые) целые числа и числа плавающей точкой. А в <u class="stk-reset">df_</u> для тех же столбцов устанавливаются 32-битные (4-байтовые) типы.</p><h3 class="stk-theme_26309__style_medium_header stk-theme_26309__mb_05 stk-reset" id="stk-34" data-ce-tag="paragraph"><strong class="stk-reset">Размер Pandas DataFrame</strong></h3><p class="stk-reset" data-ce-tag="paragraph">Атрибуты <a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.ndim.html" target="_blank" class="stk-reset">ndim</a>, <a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.size.html" target="_blank" class="stk-reset">size</a> и <a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.shape.html" target="_blank" class="stk-reset">shape</a> отображают, соответственно, количество измерений, количество значений данных по каждому измерению и общее количество значений данных:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df_.ndim
<span class="hljs-number" style="color: rgb(255, 115, 253);">2</span>
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df_.shape
(<span class="hljs-number" style="color: rgb(255, 115, 253);">7</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">4</span>)
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df_.size
<span class="hljs-number" style="color: rgb(255, 115, 253);">28</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Экземпляры DataFrame имеют два измерения (строки и столбцы), поэтому <u class="stk-reset">ndim</u> имеет значение 2. С другой стороны, у объекта <u class="stk-reset">Series</u> только одно измерение, поэтому для него <u class="stk-reset">ndim</u> будет отображаться как 1.</p><p class="stk-reset" data-ce-tag="paragraph">В атрибуте <u class="stk-reset">shape</u> хранится кортеж с количеством строк (в данном случае 7) и столбцов (4). Наконец, <u class="stk-reset">size</u> отображает целое число, равное количеству значений в DataFrame (28).</p><p class="stk-reset" data-ce-tag="paragraph">С помощью <a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.memory_usage.html" target="_blank" class="stk-reset">memory_usage()</a> можно узнать, сколько памяти занимает каждый столбец:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df_.memory_usage()
Index <span class="hljs-number" style="color: rgb(255, 115, 253);">56</span>
name <span class="hljs-number" style="color: rgb(255, 115, 253);">56</span>
city <span class="hljs-number" style="color: rgb(255, 115, 253);">56</span>
age <span class="hljs-number" style="color: rgb(255, 115, 253);">28</span>
py-score <span class="hljs-number" style="color: rgb(255, 115, 253);">28</span>
dtype: int64</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Как видите, <u class="stk-reset">memory_usage()</u> возвращает объект <u class="stk-reset">Series</u> с именами столбцов в качестве меток и памяти в байтах в качестве данных. Если вы хотите исключить использование памяти столбцом, содержащим метки строк, установите необязательный аргумент <u class="stk-reset">index=False</u>.</p><p class="stk-reset" data-ce-tag="paragraph">В приведённом выше примере последние два столбца <u class="stk-reset">age</u> и <u class="stk-reset">py-score</u> используют по 28 байтов памяти: столбцы имеют семь значений, каждое из которых представляет собой целое число, занимающее 32 бита, или 4 байта. 7 целых чисел, умноженных на 4 байта, дают в общей сложности 28 байтов.</p></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph" id="stk-4"><strong class="stk-reset">Получение доступа и изменение данных</strong></h2><p class="stk-reset" data-ce-tag="paragraph">Вы уже знаете, как вызвать определённую строку или столбец Pandas DataFrame в виде объекта <u class="stk-reset">Series</u>:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df[<span class="hljs-string" style="color: rgb(168, 255, 96);">'name'</span>]
<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span> Xavier
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> Ann
<span class="hljs-number" style="color: rgb(255, 115, 253);">12</span> Jana
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> Yi
<span class="hljs-number" style="color: rgb(255, 115, 253);">14</span> Robin
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span> Amal
<span class="hljs-number" style="color: rgb(255, 115, 253);">16</span> Nori
Name: name, dtype: object
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df.loc[<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span>]
name Xavier
city Mexico City
age <span class="hljs-number" style="color: rgb(255, 115, 253);">41</span>
py-score <span class="hljs-number" style="color: rgb(255, 115, 253);">88</span>
Name: <span class="hljs-number" style="color: rgb(255, 115, 253);">10</span>, dtype: object</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">В первом примере доступ к столбцу осуществляется с помощью <u class="stk-reset">name</u> — так же, как к элементу из словаря, с использованием его метки в качестве ключа. Аналогично, если метка столбца — допустимый идентификатор Python, вы можете использовать для доступа к нему оператор точку. Во втором примере получаем строку по метке с помощью <u class="stk-reset">loc[]</u>.</p><h3 class="stk-theme_26309__style_medium_header stk-theme_26309__mb_05 stk-reset" id="stk-41" data-ce-tag="paragraph"><strong class="stk-reset">Получение данных с помощью аксессоров</strong></h3><p class="stk-reset" data-ce-tag="paragraph">В дополнение к <u class="stk-reset">loc[]</u>, Pandas предлагает метод <a class="stk-reset" href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.iloc.html" target="_blank">iloc[]</a>, который извлекает строку или столбец по их целочисленному индексу. В большинстве случаев можно использовать любой из них:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df.loc[<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span>]
name Xavier
city Mexico City
age <span class="hljs-number" style="color: rgb(255, 115, 253);">41</span>
py-score <span class="hljs-number" style="color: rgb(255, 115, 253);">88</span>
Name: <span class="hljs-number" style="color: rgb(255, 115, 253);">10</span>, dtype: object
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df.iloc[<span class="hljs-number" style="color: rgb(255, 115, 253);">0</span>]
name Xavier
city Mexico City
age <span class="hljs-number" style="color: rgb(255, 115, 253);">41</span>
py-score <span class="hljs-number" style="color: rgb(255, 115, 253);">88</span>
Name: <span class="hljs-number" style="color: rgb(255, 115, 253);">10</span>, dtype: object</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph"><u class="stk-reset">df.loc[10]</u> возвращает строку с меткой 10. Точно так же <u class="stk-reset">df.iloc[0]</u> возвращает строку с отсчитываемым от нуля индексом 0, то есть первую строку. Как видите, оба оператора возвращают одну и ту же строку в качестве объекта <u class="stk-reset">Series</u>.</p><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">Всего у Pandas четыре аксессора:</p><ul class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item"><u class="stk-reset">loc[]</u> — принимает метки строк и столбцов, выдаёт Series или DataFrames. Можно использовать как для получения целых строк или столбцов, так и для их частей.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><u class="stk-reset">iloc[]</u> — принимает отсчитываемые от нуля индексы строк и столбцов, выдает Series или DataFrames.Также годится и для целых строк (столбцов), и для их частей.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><u class="stk-reset">at[]</u> — принимает метки строк и столбцов, выдаёт одно значение данных.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><u class="stk-reset">iat[]</u> — принимает отсчитываемые от нуля индексы строк и столбцов, выдаёт одно значение данных.</li></ul><p class="stk-reset" data-ce-tag="paragraph"><u class="stk-reset">loc[]</u> и <u class="stk-reset">iloc[]</u> более эффективные: они поддерживают срезы и индексирование в стиле NumPy. Получим с их помощью доступ к столбцу:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df.loc[:, <span class="hljs-string" style="color: rgb(168, 255, 96);">'city'</span>]
<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span> Mexico City
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> Toronto
<span class="hljs-number" style="color: rgb(255, 115, 253);">12</span> Prague
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> Shanghai
<span class="hljs-number" style="color: rgb(255, 115, 253);">14</span> Manchester
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span> Cairo
<span class="hljs-number" style="color: rgb(255, 115, 253);">16</span> Osaka
Name: city, dtype: object
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df.iloc[:, <span class="hljs-number" style="color: rgb(255, 115, 253);">1</span>]
<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span> Mexico City
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> Toronto
<span class="hljs-number" style="color: rgb(255, 115, 253);">12</span> Prague
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> Shanghai
<span class="hljs-number" style="color: rgb(255, 115, 253);">14</span> Manchester
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span> Cairo
<span class="hljs-number" style="color: rgb(255, 115, 253);">16</span> Osaka
Name: city, dtype: object</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph"><u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">df.loc[:, 'city']</u> выдаёт столбец <u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">city</u>. Конструкция <a class="stk-reset" href="https://docs.python.org/dev/library/functions.html#slice" target="_blank" data-gtm-vis-has-fired-10171822_255="1">среза</a> <u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">[ :]</u> в месте метки строки означает, что должны быть включены все строки. <u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">df.iloc[:, 1]</u> выдаёт тот же столбец, поскольку отсчитываемый от нуля индекс 1 относится ко второму столбцу <u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">city</u>.</p><p class="stk-reset" data-ce-tag="paragraph">Как и в случае с NumPy, вы можете использовать срезы вместе со списками или массивами вместо индексов, чтобы получить несколько строк или столбцов:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df.loc[<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span>, [<span class="hljs-string" style="color: rgb(168, 255, 96);">'name'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'city'</span>]]
name city
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> Ann Toronto
<span class="hljs-number" style="color: rgb(255, 115, 253);">12</span> Jana Prague
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> Yi Shanghai
<span class="hljs-number" style="color: rgb(255, 115, 253);">14</span> Robin Manchester
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span> Amal Cairo
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df.iloc[<span class="hljs-number" style="color: rgb(255, 115, 253);">1</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">6</span>, [<span class="hljs-number" style="color: rgb(255, 115, 253);">0</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">1</span>]]
name city
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> Ann Toronto
<span class="hljs-number" style="color: rgb(255, 115, 253);">12</span> Jana Prague
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> Yi Shanghai
<span class="hljs-number" style="color: rgb(255, 115, 253);">14</span> Robin Manchester
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span> Amal Cairo</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><div class="stk-grid" data-ce-tag="grid" data-stk-css="stkM-GTx"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-reset " data-ce-tag="paragraph"><strong class="stk-reset">Совет.</strong> Не используйте кортежи вместо списков или массивов целых чисел для получения обычных строк или столбцов. Они предназначены для представления нескольких измерений в NumPy и Pandas, а также для <a href="https://pandas.pydata.org/pandas-docs/stable/user_guide/advanced.html" target="_blank" class="stk-reset">иерархической или многоуровневой индексации в Pandas</a>.</p></div></div><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">Как видно из представленных выше примеров, можно использовать:</p><ul class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item"><strong class="stk-reset">срезы </strong>для получения строк с метками от 11 до 15, которые эквивалентны индексам от 1 до 5;</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><strong class="stk-reset">списки</strong> для получения столбцов <u class="stk-reset">name</u> и <u class="stk-reset">city</u>, которые эквивалентны индексам 0 и 1.</li></ul><p class="stk-reset" data-ce-tag="paragraph">Оба оператора возвращают пересечение из искомых пяти строк и двух столбцов.</p><p class="stk-reset" data-ce-tag="paragraph">Следует отметить важное различие между <u class="stk-reset">loc[]</u> и <u class="stk-reset">iloc[]</u>. Когда мы задали в <u class="stk-reset">loc[]</u> метки строк 11:15, то получили строки 11–15. А когда в<u class="stk-reset"> iloc[]</u> задали индексы 1:6, то получили строки с индексами от 1 до 5.</p><p class="stk-reset" data-ce-tag="paragraph">Причина в том, что в <u class="stk-reset">iloc[]</u> остановка среза исключительная, то есть второй индекс не показывается в выдаваемых значениях. Это похоже на срезы в Python и массивы NumPy. А в <u class="stk-reset">loc[]</u> индексы <strong class="stk-reset">инклюзивны</strong>, то есть оба включаются в выдаваемые значения.</p><p class="stk-reset" data-ce-tag="paragraph">Вы можете пропускать строки и столбцы в <u class="stk-reset">iloc[]</u> так же, как и при нарезке кортежей, списков и массивов NumPy:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df.iloc[<span class="hljs-number" style="color: rgb(255, 115, 253);">1</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">6</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">2</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">0</span>]
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> Ann
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> Yi
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span> Amal
Name: name, dtype: object</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">В этом примере мы указываем нужные индексы строк с помощью среза <u class="stk-reset">1:6:2</u>. Это означает, что выборка элементов начинается со строки с индексом <u class="stk-reset">1</u> (вторая строка), останавливается перед строкой с индексом <u class="stk-reset">6</u> (седьмая строка) и пропускает каждую вторую строку.</p><p class="stk-reset" data-ce-tag="paragraph">Вместо среза вы можете использовать встроенный класс Python <a href="https://docs.python.org/3/library/functions.html#slice" target="_blank" class="stk-reset">slice()</a>, а также <a href="https://docs.scipy.org/doc/numpy/reference/generated/numpy.s_.html" target="_blank" class="stk-reset">numpy.s[]</a> или <a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.IndexSlice.html" target="_blank" class="stk-reset">pd.IndexSlice[]</a>:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df.iloc[slice(<span class="hljs-number" style="color: rgb(255, 115, 253);">1</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">6</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">2</span>), <span class="hljs-number" style="color: rgb(255, 115, 253);">0</span>]
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> Ann
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> Yi
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span> Amal
Name: name, dtype: object
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df.iloc[np.s_[<span class="hljs-number" style="color: rgb(255, 115, 253);">1</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">6</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">2</span>], <span class="hljs-number" style="color: rgb(255, 115, 253);">0</span>]
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> Ann
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> Yi
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span> Amal
Name: name, dtype: object
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df.iloc[pd.IndexSlice[<span class="hljs-number" style="color: rgb(255, 115, 253);">1</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">6</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">2</span>], <span class="hljs-number" style="color: rgb(255, 115, 253);">0</span>]
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> Ann
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> Yi
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span> Amal
Name: name, dtype: object</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Используя <u class="stk-reset">loc[]</u> и <u class="stk-reset">iloc[]</u>, можно также получать определённые значения данных. Однако, когда вам нужно только одно значение, Pandas рекомендует использовать специализированные методы доступа <u class="stk-reset">at[]</u> и <u class="stk-reset">iat[]</u>:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df.at[<span class="hljs-number" style="color: rgb(255, 115, 253);">12</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'name'</span>]
<span class="hljs-string" style="color: rgb(168, 255, 96);">'Jana'</span>
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df.iat[<span class="hljs-number" style="color: rgb(255, 115, 253);">2</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">0</span>]
<span class="hljs-string" style="color: rgb(168, 255, 96);">'Jana'</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Здесь <u class="stk-reset">at[]</u> используется для получения имени одного кандидата, с помощью соответствующих меток столбца и строки, а <u class="stk-reset">iat[]</u> для получения того же имени с помощью индексов.</p><h3 class="stk-theme_26309__style_medium_header stk-theme_26309__mb_05 stk-reset" id="stk-42" data-ce-tag="paragraph"><strong class="stk-reset">Установка данных с помощью аксессоров</strong></h3><p class="stk-reset" data-ce-tag="paragraph">Чтобы изменить DataFrame через аксессор, нужно задать последовательность Python, массив NumPy или число:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df.loc[:, <span class="hljs-string" style="color: rgb(168, 255, 96);">'py-score'</span>]
<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">12</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">14</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">68.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">61.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">16</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">84.0</span>
Name: py-score, dtype: float64
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df.loc[:<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'py-score'</span>] = [<span class="hljs-number" style="color: rgb(255, 115, 253);">40</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">50</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">60</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">70</span>]
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df.loc[<span class="hljs-number" style="color: rgb(255, 115, 253);">14</span>:, <span class="hljs-string" style="color: rgb(168, 255, 96);">'py-score'</span>] = <span class="hljs-number" style="color: rgb(255, 115, 253);">0</span>
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df[<span class="hljs-string" style="color: rgb(168, 255, 96);">'py-score'</span>]
<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">40.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">50.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">12</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">60.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">70.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">14</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">0.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">0.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">16</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">0.0</span>
Name: py-score, dtype: float64</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Оператор <u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">df.loc[:13, 'py-score'] = [40, 50, 60, 70]</u> изменяет первые четыре элемента в строках от 10 до 13 столбца <u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">py-score</u>, используя значения из предоставленного списка. <u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">df.loc[14:, 'py-score'] = 0</u> устанавливает остальные значения в этом столбце в 0.</p><p class="stk-reset" data-ce-tag="paragraph">В следующем примере показано, как получить доступ к элементам через <u class="stk-reset">iloc[]</u>, используя отрицательные индексы:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df.iloc[:, <span class="hljs-number" style="color: rgb(255, 115, 253);">-1</span>] = np.array([<span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">68.0</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">61.0</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">84.0</span>])
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df[<span class="hljs-string" style="color: rgb(168, 255, 96);">'py-score'</span>]
<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">12</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">14</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">68.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">61.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">16</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">84.0</span>
Name: py-score, dtype: float64</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Здесь мы изменили последний столбец (<u class="stk-reset">'py-score'</u>), который соответствует целочисленному индексу столбца <u class="stk-reset">-1</u>.</p></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph" id="stk-5"><strong class="stk-reset">Вставка и удаление данных</strong></h2><p class="stk-reset" data-ce-tag="paragraph">Pandas предоставляет несколько удобных методов для вставки и удаления строк и столбцов.</p><h3 class="stk-theme_26309__style_medium_header stk-theme_26309__mb_05 stk-reset" id="stk-51" data-ce-tag="paragraph"><strong class="stk-reset">Вставка и удаление строк</strong></h3><p class="stk-reset" data-ce-tag="paragraph">Допустим, нам нужно добавить нового человека в свой список кандидатов на работу. Для этого создадим новый объект <u class="stk-reset">Series</u>:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>john = pd.Series(data=[<span class="hljs-string" style="color: rgb(168, 255, 96);">'John'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'Boston'</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">34</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">79</span>],
<span class="hljs-meta" style="color: rgb(124, 124, 124);">... </span> index=df.columns, name=<span class="hljs-number" style="color: rgb(255, 115, 253);">17</span>)
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>john
name John
city Boston
age <span class="hljs-number" style="color: rgb(255, 115, 253);">34</span>
py-score <span class="hljs-number" style="color: rgb(255, 115, 253);">79</span>
Name: <span class="hljs-number" style="color: rgb(255, 115, 253);">17</span>, dtype: object
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>john.name
<span class="hljs-number" style="color: rgb(255, 115, 253);">17</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Объект <u class="stk-reset">john</u> хранит метки, соответствующие меткам столбцов из <u class="stk-reset">df</u>, поэтому нам понадобится <u class="stk-reset">index=df.columns</u>.</p><p class="stk-reset" data-ce-tag="paragraph">Поместим новую строку <u class="stk-reset">john</u> в конец <u class="stk-reset">df</u> с помощью <u class="stk-reset"><a class="stk-reset" href="https://skillbox.ru/media/code/metody-append-i-extend-v-python-dobavlyaem-elementy-v-spisok/" target="_blank">append()</a></u>:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df = df.append(john)
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df
name city age py-score
<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span> Xavier Mexico City <span class="hljs-number" style="color: rgb(255, 115, 253);">41</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> Ann Toronto <span class="hljs-number" style="color: rgb(255, 115, 253);">28</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">12</span> Jana Prague <span class="hljs-number" style="color: rgb(255, 115, 253);">33</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> Yi Shanghai <span class="hljs-number" style="color: rgb(255, 115, 253);">34</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">14</span> Robin Manchester <span class="hljs-number" style="color: rgb(255, 115, 253);">38</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">68.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span> Amal Cairo <span class="hljs-number" style="color: rgb(255, 115, 253);">31</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">61.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">16</span> Nori Osaka <span class="hljs-number" style="color: rgb(255, 115, 253);">37</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">84.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">17</span> John Boston <span class="hljs-number" style="color: rgb(255, 115, 253);">34</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Обратите внимание, как Pandas использует атрибут <u class="stk-reset">john.name</u> со значением 17, чтобы указать метку для новой строки.</p><p class="stk-reset" data-ce-tag="paragraph">Мы добавили новую строку с помощью <u class="stk-reset">append()</u>. Удалить её можно с помощью метода <u class="stk-reset">drop()</u>, указав параметр <u class="stk-reset">labels</u>:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df = df.drop(labels=[<span class="hljs-number" style="color: rgb(255, 115, 253);">17</span>])
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df
name city age py-score
<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span> Xavier Mexico City <span class="hljs-number" style="color: rgb(255, 115, 253);">41</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> Ann Toronto <span class="hljs-number" style="color: rgb(255, 115, 253);">28</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">12</span> Jana Prague <span class="hljs-number" style="color: rgb(255, 115, 253);">33</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> Yi Shanghai <span class="hljs-number" style="color: rgb(255, 115, 253);">34</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">14</span> Robin Manchester <span class="hljs-number" style="color: rgb(255, 115, 253);">38</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">68.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span> Amal Cairo <span class="hljs-number" style="color: rgb(255, 115, 253);">31</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">61.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">16</span> Nori Osaka <span class="hljs-number" style="color: rgb(255, 115, 253);">37</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">84.0</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Если вы зададите <u class="stk-reset">inplace=True</u>, исходный DataFrame будет изменён, а метод вернёт <u class="stk-reset">None</u>.</p><h3 class="stk-theme_26309__style_medium_header stk-theme_26309__mb_05 stk-reset" id="stk-52" data-ce-tag="paragraph"><strong class="stk-reset">Вставка и удаление столбцов</strong></h3><p class="stk-reset" data-ce-tag="paragraph">Самый простой способ вставить столбец в DataFrame — следовать той же процедуре, которую используют при добавлении элемента в словарь. Например, вот как можно добавить столбец, содержащий баллы кандидатов по тесту JavaScript:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df[<span class="hljs-string" style="color: rgb(168, 255, 96);">'js-score'</span>] = np.array([<span class="hljs-number" style="color: rgb(255, 115, 253);">71.0</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">95.0</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">91.0</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">91.0</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span>])
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df
name city age py-score js-score
<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span> Xavier Mexico City <span class="hljs-number" style="color: rgb(255, 115, 253);">41</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">71.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> Ann Toronto <span class="hljs-number" style="color: rgb(255, 115, 253);">28</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">95.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">12</span> Jana Prague <span class="hljs-number" style="color: rgb(255, 115, 253);">33</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> Yi Shanghai <span class="hljs-number" style="color: rgb(255, 115, 253);">34</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">14</span> Robin Manchester <span class="hljs-number" style="color: rgb(255, 115, 253);">38</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">68.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">91.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span> Amal Cairo <span class="hljs-number" style="color: rgb(255, 115, 253);">31</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">61.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">91.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">16</span> Nori Osaka <span class="hljs-number" style="color: rgb(255, 115, 253);">37</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">84.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Вы можете также добавить новый столбец с одним значением:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df[<span class="hljs-string" style="color: rgb(168, 255, 96);">'total-score'</span>] = <span class="hljs-number" style="color: rgb(255, 115, 253);">0.0</span>
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df
name city age py-score js-score total-score
<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span> Xavier Mexico City <span class="hljs-number" style="color: rgb(255, 115, 253);">41</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">71.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">0.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> Ann Toronto <span class="hljs-number" style="color: rgb(255, 115, 253);">28</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">95.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">0.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">12</span> Jana Prague <span class="hljs-number" style="color: rgb(255, 115, 253);">33</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">0.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> Yi Shanghai <span class="hljs-number" style="color: rgb(255, 115, 253);">34</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">0.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">14</span> Robin Manchester <span class="hljs-number" style="color: rgb(255, 115, 253);">38</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">68.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">91.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">0.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span> Amal Cairo <span class="hljs-number" style="color: rgb(255, 115, 253);">31</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">61.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">91.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">0.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">16</span> Nori Osaka <span class="hljs-number" style="color: rgb(255, 115, 253);">37</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">84.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">0.0</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">В DataFrame <u class="stk-reset">df</u> теперь есть дополнительный столбец, заполненный нулями. Однако такой способ не позволяет указать расположение нового столбца. Если это важно, можно использовать <u class="stk-reset">insert()</u>. Попробуем вставить ещё один столбец с результатами теста Django:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df.insert(loc=<span class="hljs-number" style="color: rgb(255, 115, 253);">4</span>, column=<span class="hljs-string" style="color: rgb(168, 255, 96);">'django-score'</span>,
<span class="hljs-meta" style="color: rgb(124, 124, 124);">... </span> value=np.array([<span class="hljs-number" style="color: rgb(255, 115, 253);">86.0</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">78.0</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">74.0</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">70.0</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span>]))
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df
name city age py-score django-score js-score total-score
<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span> Xavier Mexico City <span class="hljs-number" style="color: rgb(255, 115, 253);">41</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">86.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">71.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">0.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> Ann Toronto <span class="hljs-number" style="color: rgb(255, 115, 253);">28</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">95.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">0.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">12</span> Jana Prague <span class="hljs-number" style="color: rgb(255, 115, 253);">33</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">78.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">0.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> Yi Shanghai <span class="hljs-number" style="color: rgb(255, 115, 253);">34</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">0.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">14</span> Robin Manchester <span class="hljs-number" style="color: rgb(255, 115, 253);">38</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">68.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">74.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">91.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">0.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span> Amal Cairo <span class="hljs-number" style="color: rgb(255, 115, 253);">31</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">61.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">70.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">91.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">0.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">16</span> Nori Osaka <span class="hljs-number" style="color: rgb(255, 115, 253);">37</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">84.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">0.0</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Параметр <u class="stk-reset">loc</u> определяет расположение, или отсчитываемый от нуля индекс нового столбца в дата-фрейме. <u class="stk-reset">column</u> устанавливает метку нового столбца, а <u class="stk-reset">value</u> указывает значения данных для вставки.</p><p class="stk-reset" data-ce-tag="paragraph">Можно удалить один или несколько столбцов так же, как и в обычном словаре Python, используя оператор <u class="stk-reset">del</u>:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span><span class="hljs-keyword" style="color: rgb(150, 203, 254);">del</span> df[<span class="hljs-string" style="color: rgb(168, 255, 96);">'total-score'</span>]
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df
name city age py-score django-score js-score
<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span> Xavier Mexico City <span class="hljs-number" style="color: rgb(255, 115, 253);">41</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">86.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">71.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> Ann Toronto <span class="hljs-number" style="color: rgb(255, 115, 253);">28</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">95.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">12</span> Jana Prague <span class="hljs-number" style="color: rgb(255, 115, 253);">33</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">78.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> Yi Shanghai <span class="hljs-number" style="color: rgb(255, 115, 253);">34</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">14</span> Robin Manchester <span class="hljs-number" style="color: rgb(255, 115, 253);">38</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">68.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">74.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">91.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span> Amal Cairo <span class="hljs-number" style="color: rgb(255, 115, 253);">31</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">61.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">70.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">91.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">16</span> Nori Osaka <span class="hljs-number" style="color: rgb(255, 115, 253);">37</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">84.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Теперь в <u class="stk-reset">df</u> нет колонки <u class="stk-reset">total-score</u>. Ещё одно сходство со словарями заключается в том, что можно использовать метод <u class="stk-reset">pop()</u>, который удаляет указанный столбец и возвращает его. Это означает, что вы могли бы написать что-то вроде <u class="stk-reset">df.pop('total-score')</u> вместо <u class="stk-reset">del</u>.</p><p class="stk-reset" data-ce-tag="paragraph">Также можно удалить один или несколько столбцов с помощью <u class="stk-reset">drop()</u>. Нужно лишь указать метки нужных столбцов с помощью параметра <u class="stk-reset">labels</u> и выставить аргумент <u class="stk-reset">axis=1</u>:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df = df.drop(labels=<span class="hljs-string" style="color: rgb(168, 255, 96);">'age'</span>, axis=<span class="hljs-number" style="color: rgb(255, 115, 253);">1</span>)
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df
name city py-score django-score js-score
<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span> Xavier Mexico City <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">86.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">71.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> Ann Toronto <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">95.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">12</span> Jana Prague <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">78.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> Yi Shanghai <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">14</span> Robin Manchester <span class="hljs-number" style="color: rgb(255, 115, 253);">68.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">74.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">91.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span> Amal Cairo <span class="hljs-number" style="color: rgb(255, 115, 253);">61.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">70.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">91.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">16</span> Nori Osaka <span class="hljs-number" style="color: rgb(255, 115, 253);">84.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Например, сейчас мы удалили столбец <u class="stk-reset">age</u>.</p><p class="stk-reset" data-ce-tag="paragraph">По умолчанию, <u class="stk-reset">drop()</u> выдаёт дата-фрейм без указанных столбцов, если вы не передадите <u class="stk-reset">inplace=True</u>.</p></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph" id="stk-6"><strong class="stk-reset">Применение арифметических операций</strong></h2><p class="stk-reset" data-ce-tag="paragraph">Основные арифметические операции вроде сложения, вычитания, умножения и деления в Pandas Series и объектах DataFrame производятся так же, как и в массивах NumPy:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df[<span class="hljs-string" style="color: rgb(168, 255, 96);">'py-score'</span>] + df[<span class="hljs-string" style="color: rgb(168, 255, 96);">'js-score'</span>]
<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">159.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">174.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">12</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">169.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">159.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">14</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">159.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">152.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">16</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">164.0</span>
dtype: float64
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df[<span class="hljs-string" style="color: rgb(168, 255, 96);">'py-score'</span>] / <span class="hljs-number" style="color: rgb(255, 115, 253);">100</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">0.88</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">0.79</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">12</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">0.81</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">0.80</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">14</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">0.68</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">0.61</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">16</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">0.84</span>
Name: py-score, dtype: float64</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Кроме того, можно вставлять новые столбцы с более сложными арифметическими действиями. Например, попробуем рассчитать <u class="stk-reset">total</u> (общий балл) наших кандидатов в виде линейной комбинации их баллов по Python, Django и JavaScript:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df[<span class="hljs-string" style="color: rgb(168, 255, 96);">'total'</span>] =\
<span class="hljs-meta" style="color: rgb(124, 124, 124);">... </span> <span class="hljs-number" style="color: rgb(255, 115, 253);">0.4</span> * df[<span class="hljs-string" style="color: rgb(168, 255, 96);">'py-score'</span>] + <span class="hljs-number" style="color: rgb(255, 115, 253);">0.3</span> * df[<span class="hljs-string" style="color: rgb(168, 255, 96);">'django-score'</span>] + <span class="hljs-number" style="color: rgb(255, 115, 253);">0.3</span> * df[<span class="hljs-string" style="color: rgb(168, 255, 96);">'js-score'</span>]
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df
name city py-score django-score js-score total
<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span> Xavier Mexico City <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">86.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">71.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">82.3</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> Ann Toronto <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">95.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">84.4</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">12</span> Jana Prague <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">78.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">82.2</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> Yi Shanghai <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">82.1</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">14</span> Robin Manchester <span class="hljs-number" style="color: rgb(255, 115, 253);">68.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">74.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">91.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">76.7</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span> Amal Cairo <span class="hljs-number" style="color: rgb(255, 115, 253);">61.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">70.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">91.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">72.7</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">16</span> Nori Osaka <span class="hljs-number" style="color: rgb(255, 115, 253);">84.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.9</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph" id="stk-7"><strong class="stk-reset">Применение функций NumPy и SciPy</strong></h2><p class="stk-reset" data-ce-tag="paragraph">В большинстве программ с NumPy и SciPy в качестве аргументов можно передавать Pandas Series и объекты DataFrame, вместо массивов NumPy. Чтобы проиллюстрировать это, попробуем рассчитать результаты тестов кандидатов, используя процедуру NumPy <u class="stk-reset">numpy.average()</u>.</p><p class="stk-reset" data-ce-tag="paragraph">Вместо того чтобы передавать массив NumPy в <u class="stk-reset">numpy.average()</u>, передадим часть DataFrame:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span><span class="hljs-keyword" style="color: rgb(150, 203, 254);">import</span> numpy <span class="hljs-keyword" style="color: rgb(150, 203, 254);">as</span> np
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>score = df.iloc[:, <span class="hljs-number" style="color: rgb(255, 115, 253);">2</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">5</span>]
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>score
py-score django-score js-score
<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">86.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">71.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">95.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">12</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">78.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">14</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">68.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">74.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">91.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">61.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">70.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">91.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">16</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">84.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span>
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>np.average(score, axis=<span class="hljs-number" style="color: rgb(255, 115, 253);">1</span>,
<span class="hljs-meta" style="color: rgb(124, 124, 124);">... </span> weights=[<span class="hljs-number" style="color: rgb(255, 115, 253);">0.4</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">0.3</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">0.3</span>])
array([<span class="hljs-number" style="color: rgb(255, 115, 253);">82.3</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">84.4</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">82.2</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">82.1</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">76.7</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">72.7</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">81.9</span>])</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Переменная <u class="stk-reset">score</u> ссылается на DataFrame с оценками по Python, Django и JavaScript. Используем <u class="stk-reset">score</u> в качестве аргумента <u class="stk-reset">numpy.average()</u> и получим линейную комбинацию столбцов с указанными весами.</p><p class="stk-reset" data-ce-tag="paragraph">Но это ещё не всё! Вы можете использовать массив NumPy, возвращаемый <u class="stk-reset">average()</u> как новый столбец <u class="stk-reset">df</u>. Сначала удалите существующий столбец <u class="stk-reset">total</u> из <u class="stk-reset">df</u>, а затем добавьте новый:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span><span class="hljs-keyword" style="color: rgb(150, 203, 254);">del</span> df[<span class="hljs-string" style="color: rgb(168, 255, 96);">'total'</span>]
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df
name city py-score django-score js-score
<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span> Xavier Mexico City <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">86.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">71.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> Ann Toronto <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">95.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">12</span> Jana Prague <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">78.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> Yi Shanghai <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">14</span> Robin Manchester <span class="hljs-number" style="color: rgb(255, 115, 253);">68.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">74.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">91.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span> Amal Cairo <span class="hljs-number" style="color: rgb(255, 115, 253);">61.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">70.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">91.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">16</span> Nori Osaka <span class="hljs-number" style="color: rgb(255, 115, 253);">84.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span>
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df[<span class="hljs-string" style="color: rgb(168, 255, 96);">'total'</span>] = np.average(df.iloc[:, <span class="hljs-number" style="color: rgb(255, 115, 253);">2</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">5</span>], axis=<span class="hljs-number" style="color: rgb(255, 115, 253);">1</span>,
<span class="hljs-meta" style="color: rgb(124, 124, 124);">... </span> weights=[<span class="hljs-number" style="color: rgb(255, 115, 253);">0.4</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">0.3</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">0.3</span>])
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df
name city py-score django-score js-score total
<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span> Xavier Mexico City <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">86.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">71.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">82.3</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> Ann Toronto <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">95.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">84.4</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">12</span> Jana Prague <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">78.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">82.2</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> Yi Shanghai <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">82.1</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">14</span> Robin Manchester <span class="hljs-number" style="color: rgb(255, 115, 253);">68.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">74.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">91.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">76.7</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span> Amal Cairo <span class="hljs-number" style="color: rgb(255, 115, 253);">61.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">70.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">91.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">72.7</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">16</span> Nori Osaka <span class="hljs-number" style="color: rgb(255, 115, 253);">84.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.9</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Результат такой же, как и в предыдущем примере, но здесь вместо того, чтобы писать собственный код, мы использовали готовую функцию NumPy.</p></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph" id="stk-8"><strong class="stk-reset">Сортировка в Pandas DataFrame</strong></h2><p class="stk-reset" data-ce-tag="paragraph">Сортировать Pandas DataFrame можно с помощью <u class="stk-reset">sort_values()</u>:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df.sort_values(by=<span class="hljs-string" style="color: rgb(168, 255, 96);">'js-score'</span>, ascending=<span class="hljs-keyword" style="color: rgb(150, 203, 254);">False</span>)
name city py-score django-score js-score total
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> Ann Toronto <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">95.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">84.4</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">14</span> Robin Manchester <span class="hljs-number" style="color: rgb(255, 115, 253);">68.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">74.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">91.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">76.7</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span> Amal Cairo <span class="hljs-number" style="color: rgb(255, 115, 253);">61.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">70.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">91.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">72.7</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">12</span> Jana Prague <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">78.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">82.2</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">16</span> Nori Osaka <span class="hljs-number" style="color: rgb(255, 115, 253);">84.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.9</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> Yi Shanghai <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">82.1</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span> Xavier Mexico City <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">86.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">71.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">82.3</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">В этом примере дата-фрейм сортируется по значениям в столбце <u class="stk-reset">js-score</u>. Параметр <u class="stk-reset">by</u> задает метку строки или столбца для сортировки, <u class="stk-reset">ascending</u> указывает сортировать элементы по возрастанию (<u class="stk-reset">True</u>) или по убыванию (<u class="stk-reset">False</u>). По умолчанию элементы сортируются по убыванию. Параметр <u class="stk-reset">axis</u> определяет, что будет сортироваться: строки (<u class="stk-reset">axis=0</u>) или столбцы (<u class="stk-reset">axis=1</u>).</p><p class="stk-reset" data-ce-tag="paragraph">Если вы хотите отсортировать по нескольким столбцам, просто передайте списки в качестве аргументов для <u class="stk-reset">by</u> и <u class="stk-reset">ascending</u>:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df.sort_values(by=[<span class="hljs-string" style="color: rgb(168, 255, 96);">'total'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'py-score'</span>], ascending=[<span class="hljs-keyword" style="color: rgb(150, 203, 254);">False</span>, <span class="hljs-keyword" style="color: rgb(150, 203, 254);">False</span>])
name city py-score django-score js-score total
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> Ann Toronto <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">95.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">84.4</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span> Xavier Mexico City <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">86.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">71.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">82.3</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">12</span> Jana Prague <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">78.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">82.2</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> Yi Shanghai <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">82.1</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">16</span> Nori Osaka <span class="hljs-number" style="color: rgb(255, 115, 253);">84.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.9</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">14</span> Robin Manchester <span class="hljs-number" style="color: rgb(255, 115, 253);">68.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">74.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">91.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">76.7</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span> Amal Cairo <span class="hljs-number" style="color: rgb(255, 115, 253);">61.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">70.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">91.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">72.7</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">В этом случае DataFrame сортируется по столбцу <u class="stk-reset">total</u>, но если два значения совпадают, их порядок определяется значениями из столбца <u class="stk-reset">py-score</u>.</p><p class="stk-reset" data-ce-tag="paragraph">Необязательный параметр <u class="stk-reset">inplace</u> также можно использовать с <u class="stk-reset">sort_values()</u>. По умолчанию оно установлено в <u class="stk-reset">False</u>, что обеспечивает выдачу нового DataFrame. Когда вы установите <u class="stk-reset">inplace=True</u>, существующий DataFrame изменится и <u class="stk-reset">sort_values()</u> вернёт <u class="stk-reset">None</u>.</p><p class="stk-reset" data-ce-tag="paragraph">Если вы когда-нибудь пробовали сортировать значения в Excel, то подход Pandas может показаться вам более эффективным и удобным. Когда у вас есть большие объёмы данных, Pandas значительно превосходит Excel.</p><div class="stk-grid" data-ce-tag="grid" data-stk-css="stkpLTi1"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-reset stk-theme_26309__style_small_text" data-ce-tag="paragraph">Узнать больше о сортировке в Pandas можно в гайде <a href="https://realpython.com/pandas-sort-python/" target="_blank" class="stk-reset">Pandas Sort: Your Guide to Sorting Data in Python</a>.</p></div></div></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph" id="stk-9"><strong class="stk-reset">Фильтрация данных</strong></h2><p class="stk-reset" data-ce-tag="paragraph">Фильтрация данных — ещё одна суперспособность Pandas. Она работает аналогично <a href="https://docs.scipy.org/doc/numpy/user/quickstart.html#indexing-with-boolean-arrays" target="_blank" class="stk-reset">индексации логических массивов в NumPy</a>.</p><p class="stk-reset" data-ce-tag="paragraph">Если применить какую-либо логическую операцию к объекту Series, получится ещё одна серия с логическими значениями <u class="stk-reset">True</u> и <u class="stk-reset">False</u>:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>filter_ = df[<span class="hljs-string" style="color: rgb(168, 255, 96);">'django-score'</span>] >= <span class="hljs-number" style="color: rgb(255, 115, 253);">80</span>
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>filter_
<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span> <span class="hljs-keyword" style="color: rgb(150, 203, 254);">True</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> <span class="hljs-keyword" style="color: rgb(150, 203, 254);">True</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">12</span> <span class="hljs-keyword" style="color: rgb(150, 203, 254);">False</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> <span class="hljs-keyword" style="color: rgb(150, 203, 254);">True</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">14</span> <span class="hljs-keyword" style="color: rgb(150, 203, 254);">False</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span> <span class="hljs-keyword" style="color: rgb(150, 203, 254);">False</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">16</span> <span class="hljs-keyword" style="color: rgb(150, 203, 254);">True</span>
Name: django-score, dtype: bool</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">В данном случае <u class="stk-reset">df['django-score'] >= 80</u>. То есть <u class="stk-reset">True</u> присваивается строкам, в которых оценка по Django больше или равна 80, а <u class="stk-reset">False</u> —для строк с оценкой Django меньше 80.</p><p class="stk-reset" data-ce-tag="paragraph">Теперь у вас есть серия <u class="stk-reset">filter_</u>, заполненная булевыми значениями. Выражение <u class="stk-reset">df[filter_]</u> выдаёт Pandas DataFrame со строками <u class="stk-reset">df</u>, где в <u class="stk-reset">filter_</u> стоит <u class="stk-reset">True</u>:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df[filter_]
name city py-score django-score js-score total
<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span> Xavier Mexico City <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">86.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">71.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">82.3</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> Ann Toronto <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">95.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">84.4</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> Yi Shanghai <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">82.1</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">16</span> Nori Osaka <span class="hljs-number" style="color: rgb(255, 115, 253);">84.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.9</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Как видите, в <u class="stk-reset">filter_[10]</u>, <u class="stk-reset">filter_[11]</u>, <u class="stk-reset">filter_[13]</u> и <u class="stk-reset">filter_[16]</u> стоит <u class="stk-reset">True</u>, а в <u class="stk-reset">filter_[12]</u>, <u class="stk-reset">filter_[14]</u> и <u class="stk-reset">filter_[15]</u> — <u class="stk-reset">False</u>, поэтому соответствующие строки не появляются в <u class="stk-reset">df[filter_]</u>.</p><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">Вы можете создавать сложные выражения, комбинируя логические операции со следующими операторами:</p><ul class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item">NOT( ~)</li><li class="stk-reset stk-list-item" data-ce-tag="list-item">AND( &)</li><li class="stk-reset stk-list-item" data-ce-tag="list-item">OR( |)</li><li class="stk-reset stk-list-item" data-ce-tag="list-item">XOR( ^)</li></ul><p class="stk-reset" data-ce-tag="paragraph">Например, попробуем получить DataFrame с кандидатами, чьи результаты <u class="stk-reset">py-score</u> и <u class="stk-reset">js-score</u> больше или равны 80:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df[(df[<span class="hljs-string" style="color: rgb(168, 255, 96);">'py-score'</span>] >= <span class="hljs-number" style="color: rgb(255, 115, 253);">80</span>) & (df[<span class="hljs-string" style="color: rgb(168, 255, 96);">'js-score'</span>] >= <span class="hljs-number" style="color: rgb(255, 115, 253);">80</span>)]
name city py-score django-score js-score total
<span class="hljs-number" style="color: rgb(255, 115, 253);">12</span> Jana Prague <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">78.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">82.2</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">16</span> Nori Osaka <span class="hljs-number" style="color: rgb(255, 115, 253);">84.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.9</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Выражение <u class="stk-reset">(df['py-score'] >= 80) & (df['js-score'] >= 80)</u> задаёт <u class="stk-reset">True</u> в строках, где <u class="stk-reset">py-score</u> и <u class="stk-reset">js-score</u> больше или равны 80, и <u class="stk-reset">False</u> — в остальных. В этом случае только строки с метками 12 и 16 удовлетворяют обоим условиям.</p><p class="stk-reset" data-ce-tag="paragraph">Для некоторых операций, требующих фильтрации данных, удобнее использовать <a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.where.html" target="_blank" class="stk-reset">where()</a>:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df[<span class="hljs-string" style="color: rgb(168, 255, 96);">'django-score'</span>].where(cond=df[<span class="hljs-string" style="color: rgb(168, 255, 96);">'django-score'</span>] >= <span class="hljs-number" style="color: rgb(255, 115, 253);">80</span>, other=<span class="hljs-number" style="color: rgb(255, 115, 253);">0.0</span>)
<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">86.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">12</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">0.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">14</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">0.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">0.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">16</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span>
Name: django-score, dtype: float64</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">В данном примере условие — <u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">df['django-score'] >= 80</u>. Значения DataFrame или Series, которые вызываются, при использовании <u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">where()</u> останутся <u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">True</u> и будут заменены значением в параметре <u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">other</u> (в данном случае 0.0), если условие не выполняется.</p></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph" id="stk-10"><strong class="stk-reset">Работа со статистическими данными</strong></h2><p class="stk-reset" data-ce-tag="paragraph">Pandas предоставляет множество <a class="stk-reset" href="https://pandas.pydata.org/pandas-docs/stable/reference/frame.html#computations-descriptive-stats" target="_blank">статистических методов</a> для DataFrames. Базовую статистику для числовых столбцов в DataFrame можно получить с помощью метода <a class="stk-reset" href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.describe.html" target="_blank">describe()</a>:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df.describe()
py-score django-score js-score total
count <span class="hljs-number" style="color: rgb(255, 115, 253);">7.000000</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">7.000000</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">7.000000</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">7.000000</span>
mean <span class="hljs-number" style="color: rgb(255, 115, 253);">77.285714</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">79.714286</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">85.000000</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">80.328571</span>
std <span class="hljs-number" style="color: rgb(255, 115, 253);">9.446592</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">6.343350</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">8.544004</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">4.101510</span>
min <span class="hljs-number" style="color: rgb(255, 115, 253);">61.000000</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">70.000000</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">71.000000</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">72.700000</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">25</span>% <span class="hljs-number" style="color: rgb(255, 115, 253);">73.500000</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">76.000000</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">79.500000</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">79.300000</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">50</span>% <span class="hljs-number" style="color: rgb(255, 115, 253);">80.000000</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.000000</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.000000</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">82.100000</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">75</span>% <span class="hljs-number" style="color: rgb(255, 115, 253);">82.500000</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">83.500000</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">91.000000</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">82.250000</span>
max <span class="hljs-number" style="color: rgb(255, 115, 253);">88.000000</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.000000</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">95.000000</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">84.400000</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">В этом примере <u class="stk-reset">describe()</u> возвращает новый DataFrame с количеством строк, указанным в <u class="stk-reset">count</u>, а также средним значением, стандартным отклонением, минимумом, максимумом и квартилями столбцов.</p><p class="stk-reset" data-ce-tag="paragraph">Если вы хотите получить конкретную статистику для некоторых или всех ваших столбцов, можно вызвать такие методы, как <a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.mean.html" target="_blank" class="stk-reset">mean()</a> или <a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.std.html" target="_blank" class="stk-reset">std()</a>:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df.mean()
py-score <span class="hljs-number" style="color: rgb(255, 115, 253);">77.285714</span>
django-score <span class="hljs-number" style="color: rgb(255, 115, 253);">79.714286</span>
js-score <span class="hljs-number" style="color: rgb(255, 115, 253);">85.000000</span>
total <span class="hljs-number" style="color: rgb(255, 115, 253);">80.328571</span>
dtype: float64
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df[<span class="hljs-string" style="color: rgb(168, 255, 96);">'py-score'</span>].mean()
<span class="hljs-number" style="color: rgb(255, 115, 253);">77.28571428571429</span>
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df.std()
py-score <span class="hljs-number" style="color: rgb(255, 115, 253);">9.446592</span>
django-score <span class="hljs-number" style="color: rgb(255, 115, 253);">6.343350</span>
js-score <span class="hljs-number" style="color: rgb(255, 115, 253);">8.544004</span>
total <span class="hljs-number" style="color: rgb(255, 115, 253);">4.101510</span>
dtype: float64
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df[<span class="hljs-string" style="color: rgb(168, 255, 96);">'py-score'</span>].std()
<span class="hljs-number" style="color: rgb(255, 115, 253);">9.446591726019244</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">При применении к Pandas DataFrame эти методы позволяют выдать Series с результатами для каждого столбца. При применении к объекту Series или одному столбцу будут выданы скаляры.</p><div class="stk-grid" data-ce-tag="grid" data-stk-css="stkHaFTJ"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-reset stk-theme_26309__style_small_text" data-ce-tag="paragraph">Узнать больше о статистических вычислениях в Pandas, и ознакомиться с описательной статистикой в Python можно в <a href="https://realpython.com/python-statistics/" target="_blank" class="stk-reset">этой статье</a>. А изучить работу с корреляцией в NumPy, SciPy и Pandas — <a href="https://realpython.com/numpy-scipy-pandas-correlation-python/" target="_blank" class="stk-reset">в этой</a>.</p></div></div></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph" id="stk-11"><strong class="stk-reset">Обработка отсутствующих данных</strong></h2><p class="stk-reset" data-ce-tag="paragraph">Отсутствующие данные очень распространены в науке о данных и машинном обучении. К счасть, у Pandas есть очень мощные функции для работы с ними. Более того, в его документации есть <a href="https://pandas.pydata.org/pandas-docs/stable/user_guide/missing_data.html" target="_blank" class="stk-reset">целый раздел</a>, посвящённый работе с отсутствующими данными.</p><p class="stk-reset" data-ce-tag="paragraph">Pandas обычно представляет отсутствующие данные значениями <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">NaN</strong> (не число). В Python вы можете получить <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">NaN</strong> с помощью <a class="stk-reset" href="https://docs.python.org/3/library/functions.html#float" target="_blank" data-gtm-vis-has-fired-10171822_255="1">float('nan')</a>, <a class="stk-reset" href="https://docs.python.org/3/library/math.html#math.nan" target="_blank" data-gtm-vis-has-fired-10171822_255="1">math.nan</a> или <a class="stk-reset" href="https://docs.scipy.org/doc/numpy/reference/constants.html#numpy.nan" target="_blank" data-gtm-vis-has-fired-10171822_255="1">numpy.nan</a>. Начиная с Pandas 1.0, используются также <a class="stk-reset" href="https://pandas.pydata.org/docs/reference/api/pandas.BooleanDtype.html" target="_blank" data-gtm-vis-has-fired-10171822_255="1">BooleanDtype</a>, <a class="stk-reset" href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Int8Dtype.html" target="_blank" data-gtm-vis-has-fired-10171822_255="1">Int8Dtype</a>, <a class="stk-reset" href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Int16Dtype.html" target="_blank" data-gtm-vis-has-fired-10171822_255="1">Int16Dtype</a>, <a class="stk-reset" href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Int32Dtype.html" target="_blank" data-gtm-vis-has-fired-10171822_255="1">Int32Dtype</a> и <a class="stk-reset" href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Int64Dtype.html" target="_blank" data-gtm-vis-has-fired-10171822_255="1">Int64Dtype</a>. Вот пример работы с отсутствующим значением:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df_ = pd.DataFrame({<span class="hljs-string" style="color: rgb(168, 255, 96);">'x'</span>: [<span class="hljs-number" style="color: rgb(255, 115, 253);">1</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">2</span>, np.nan, <span class="hljs-number" style="color: rgb(255, 115, 253);">4</span>]})
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df_
x
<span class="hljs-number" style="color: rgb(255, 115, 253);">0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">1.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">1</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">2.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2</span> NaN
<span class="hljs-number" style="color: rgb(255, 115, 253);">3</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">4.0</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Переменная <u class="stk-reset">df_</u> относится к DataFrame с одним столбцом <u class="stk-reset">x</u> и четырьмя значениями. Третье значение <strong class="stk-reset">NaN</strong> по умолчанию считается отсутствующим.</p><h3 class="stk-theme_26309__style_medium_header stk-theme_26309__mb_05 stk-reset" id="stk-111" data-ce-tag="paragraph"><strong class="stk-reset">Расчёт с отсутствующими данными</strong></h3><p class="stk-reset" data-ce-tag="paragraph">Многие методы Pandas опускают значения <strong class="stk-reset">NaN</strong> при выполнении вычислений, если только они явно не указаны:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df_.mean()
x <span class="hljs-number" style="color: rgb(255, 115, 253);">2.333333</span>
dtype: float64
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df_.mean(skipna=<span class="hljs-keyword" style="color: rgb(150, 203, 254);">False</span>)
x NaN
dtype: float64</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">В первом примере <u class="stk-reset">df_.mean()</u> вычисляет среднее значение без учёта <strong class="stk-reset">NaN</strong> (третьего значения). Он просто принимает 1.0, 2.0 и 4.0 и выдаёт их среднее значение, равное 2.33.</p><p class="stk-reset" data-ce-tag="paragraph">Однако, если вы с помощью <u class="stk-reset">skipna=False</u> прикажете <u class="stk-reset">mean()</u> не пропускать <strong class="stk-reset">NaN</strong>, то он будет возвращать их там, где отсутствует значение.</p><h3 class="stk-theme_26309__style_medium_header stk-theme_26309__mb_05 stk-reset" id="stk-112" data-ce-tag="paragraph"><strong class="stk-reset">Заполнение недостающих данных</strong></h3><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">В Pandas есть несколько способов заполнения или замены отсутствующих значений другими значениями. Один из самых удобных — <a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.fillna.html" target="_blank" class="stk-reset">fillna()</a>. Он позволяет заменять <strong class="stk-reset">NaN</strong> на:</p><ul class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item">указанные значения,</li><li class="stk-reset stk-list-item" data-ce-tag="list-item">значение выше пропущенного значения,</li><li class="stk-reset stk-list-item" data-ce-tag="list-item">значение ниже пропущенного значения.</li></ul><p class="stk-reset" data-ce-tag="paragraph">Вот как вы можете применить параметры, упомянутые выше:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df_.fillna(value=<span class="hljs-number" style="color: rgb(255, 115, 253);">0</span>)
x
<span class="hljs-number" style="color: rgb(255, 115, 253);">0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">1.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">1</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">2.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">0.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">3</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">4.0</span>
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df_.fillna(method=<span class="hljs-string" style="color: rgb(168, 255, 96);">'ffill'</span>)
x
<span class="hljs-number" style="color: rgb(255, 115, 253);">0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">1.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">1</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">2.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">2.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">3</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">4.0</span>
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df_.fillna(method=<span class="hljs-string" style="color: rgb(168, 255, 96);">'bfill'</span>)
x
<span class="hljs-number" style="color: rgb(255, 115, 253);">0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">1.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">1</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">2.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">4.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">3</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">4.0</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">В первом примере <u class="stk-reset">fillna(value=0)</u> вставляет число 0.0, которое указано в <u class="stk-reset">value</u>. Во втором <u class="stk-reset">fillna(method='ffill')</u> заменяет отсутствующее значение тем, что расположено над ним, то есть 2.0. А в третьем <u class="stk-reset">fillna(method='bfill')</u> вставляет то, что расположено ниже отсутствующего значения, то есть 4.0.</p><p class="stk-reset" data-ce-tag="paragraph">Другой популярный вариант — применить <a href="https://en.wikipedia.org/wiki/Interpolation" target="_blank" class="stk-reset">интерполяцию</a> и заменить отсутствующие значения интерполированными с помощью <a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.interpolate.html" target="_blank" class="stk-reset">interpolate()</a>:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df_.interpolate()
x
<span class="hljs-number" style="color: rgb(255, 115, 253);">0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">1.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">1</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">2.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">3.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">3</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">4.0</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">Также можно использовать необязательный параметр <u class="stk-reset">inplace</u> с <u class="stk-reset">fillna()</u>. Это позволит:</p><ul class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item">Создавать и возвращать новый DataFrame, когда <u class="stk-reset">inplace=False</u>;</li><li class="stk-reset stk-list-item" data-ce-tag="list-item">Изменять существующий DataFrame на <strong class="stk-reset">None</strong> когда <u class="stk-reset">inplace=True</u>.</li></ul><p class="stk-reset" data-ce-tag="paragraph">По умолчанию параметр <u class="stk-reset">inplace</u> равен <u class="stk-reset">False</u>. Однако его полезно устанавливать в <u class="stk-reset">True</u>, во время работы с большими объёмами данных для предотвращения ненужного и неэффективного копирования.</p><h3 class="stk-theme_26309__style_medium_header stk-theme_26309__mb_05 stk-reset" id="stk-113" data-ce-tag="paragraph"><strong class="stk-reset">Удаление строк и столбцов с отсутствующими данными</strong></h3><p class="stk-reset" data-ce-tag="paragraph">В некоторых ситуациях может потребоваться удалить строки или даже столбцы, в которых отсутствуют значения. Сделать это можно с помощью <a class="stk-reset" href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.dropna.html" target="_blank">dropna()</a>:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df_.dropna()
x
<span class="hljs-number" style="color: rgb(255, 115, 253);">0</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">1.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">1</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">2.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">3</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">4.0</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">В приведённом выше примере метод <u class="stk-reset">dropna()</u> удаляет строку с <strong class="stk-reset">NaN</strong>, вместе с её меткой. Он также имеет необязательный параметр <u class="stk-reset">inplace</u>, который ведёт себя так же, как <u class="stk-reset">.fillna()</u> и <u class="stk-reset">.interpolate()</u>.</p></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph" id="stk-12"><strong class="stk-reset">Итерации в Pandas DataFrame</strong></h2><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">Как мы уже знаем, метки строк и столбцов DataFrame можно получить в виде последовательностей с помощью атрибутов <u class="stk-reset">index</u> и <u class="stk-reset">columns</u>. Их можно использовать также для перебора меток и получения или установки значений данных. Однако Pandas предоставляет несколько более удобных методов итерации:</p><ul class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.items.html" target="_blank" class="stk-reset">items()</a> — перебирать столбцы;</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a href="https://pandas.pydata.org/pandas-docs/version/1.0/reference/api/pandas.DataFrame.iteritems.html" target="_blank" class="stk-reset">iteritems()</a> — перебирать столбцы;</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.iterrows.html" target="_blank" class="stk-reset">iterrows()</a> — перебирать строки;</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.itertuples.html" target="_blank" class="stk-reset">itertuples()</a> — перебирать строки и получать именованные кортежи.</li></ul><p class="stk-reset" data-ce-tag="paragraph">Каждая итерация <u class="stk-reset">items()</u> и <u class="stk-reset">iteritems()</u> возвращает кортеж с именем и данными столбца в виде объекта Series:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span><span class="hljs-keyword" style="color: rgb(150, 203, 254);">for</span> col_label, col <span class="hljs-keyword" style="color: rgb(150, 203, 254);">in</span> df.iteritems():
<span class="hljs-meta" style="color: rgb(124, 124, 124);">... </span> print(col_label, col, sep=<span class="hljs-string" style="color: rgb(168, 255, 96);">'\n'</span>, end=<span class="hljs-string" style="color: rgb(168, 255, 96);">'\n\n'</span>)
...
name
<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span> Xavier
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> Ann
<span class="hljs-number" style="color: rgb(255, 115, 253);">12</span> Jana
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> Yi
<span class="hljs-number" style="color: rgb(255, 115, 253);">14</span> Robin
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span> Amal
<span class="hljs-number" style="color: rgb(255, 115, 253);">16</span> Nori
Name: name, dtype: object
city
<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span> Mexico City
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> Toronto
<span class="hljs-number" style="color: rgb(255, 115, 253);">12</span> Prague
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> Shanghai
<span class="hljs-number" style="color: rgb(255, 115, 253);">14</span> Manchester
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span> Cairo
<span class="hljs-number" style="color: rgb(255, 115, 253);">16</span> Osaka
Name: city, dtype: object
py-score
<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">12</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">14</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">68.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">61.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">16</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">84.0</span>
Name: py-score, dtype: float64
django-score
<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">86.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">12</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">78.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">14</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">74.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">70.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">16</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.0</span>
Name: django-score, dtype: float64
js-score
<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">71.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">95.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">12</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">88.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">79.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">14</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">91.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">91.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">16</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">80.0</span>
Name: js-score, dtype: float64
total
<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">82.3</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">84.4</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">12</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">82.2</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">82.1</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">14</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">76.7</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">72.7</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">16</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">81.9</span>
Name: total, dtype: float64</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Каждая итерация с помощью <u class="stk-reset">iterrows()</u> даёт кортеж с именем строки и данными строки в виде серии:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span><span class="hljs-keyword" style="color: rgb(150, 203, 254);">for</span> row_label, row <span class="hljs-keyword" style="color: rgb(150, 203, 254);">in</span> df.iterrows():
<span class="hljs-meta" style="color: rgb(124, 124, 124);">... </span> print(row_label, row, sep=<span class="hljs-string" style="color: rgb(168, 255, 96);">'\n'</span>, end=<span class="hljs-string" style="color: rgb(168, 255, 96);">'\n\n'</span>)
...
<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span>
name Xavier
city Mexico City
py-score <span class="hljs-number" style="color: rgb(255, 115, 253);">88</span>
django-score <span class="hljs-number" style="color: rgb(255, 115, 253);">86</span>
js-score <span class="hljs-number" style="color: rgb(255, 115, 253);">71</span>
total <span class="hljs-number" style="color: rgb(255, 115, 253);">82.3</span>
Name: <span class="hljs-number" style="color: rgb(255, 115, 253);">10</span>, dtype: object
<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span>
name Ann
city Toronto
py-score <span class="hljs-number" style="color: rgb(255, 115, 253);">79</span>
django-score <span class="hljs-number" style="color: rgb(255, 115, 253);">81</span>
js-score <span class="hljs-number" style="color: rgb(255, 115, 253);">95</span>
total <span class="hljs-number" style="color: rgb(255, 115, 253);">84.4</span>
Name: <span class="hljs-number" style="color: rgb(255, 115, 253);">11</span>, dtype: object
<span class="hljs-number" style="color: rgb(255, 115, 253);">12</span>
name Jana
city Prague
py-score <span class="hljs-number" style="color: rgb(255, 115, 253);">81</span>
django-score <span class="hljs-number" style="color: rgb(255, 115, 253);">78</span>
js-score <span class="hljs-number" style="color: rgb(255, 115, 253);">88</span>
total <span class="hljs-number" style="color: rgb(255, 115, 253);">82.2</span>
Name: <span class="hljs-number" style="color: rgb(255, 115, 253);">12</span>, dtype: object
<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span>
name Yi
city Shanghai
py-score <span class="hljs-number" style="color: rgb(255, 115, 253);">80</span>
django-score <span class="hljs-number" style="color: rgb(255, 115, 253);">88</span>
js-score <span class="hljs-number" style="color: rgb(255, 115, 253);">79</span>
total <span class="hljs-number" style="color: rgb(255, 115, 253);">82.1</span>
Name: <span class="hljs-number" style="color: rgb(255, 115, 253);">13</span>, dtype: object
<span class="hljs-number" style="color: rgb(255, 115, 253);">14</span>
name Robin
city Manchester
py-score <span class="hljs-number" style="color: rgb(255, 115, 253);">68</span>
django-score <span class="hljs-number" style="color: rgb(255, 115, 253);">74</span>
js-score <span class="hljs-number" style="color: rgb(255, 115, 253);">91</span>
total <span class="hljs-number" style="color: rgb(255, 115, 253);">76.7</span>
Name: <span class="hljs-number" style="color: rgb(255, 115, 253);">14</span>, dtype: object
<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span>
name Amal
city Cairo
py-score <span class="hljs-number" style="color: rgb(255, 115, 253);">61</span>
django-score <span class="hljs-number" style="color: rgb(255, 115, 253);">70</span>
js-score <span class="hljs-number" style="color: rgb(255, 115, 253);">91</span>
total <span class="hljs-number" style="color: rgb(255, 115, 253);">72.7</span>
Name: <span class="hljs-number" style="color: rgb(255, 115, 253);">15</span>, dtype: object
<span class="hljs-number" style="color: rgb(255, 115, 253);">16</span>
name Nori
city Osaka
py-score <span class="hljs-number" style="color: rgb(255, 115, 253);">84</span>
django-score <span class="hljs-number" style="color: rgb(255, 115, 253);">81</span>
js-score <span class="hljs-number" style="color: rgb(255, 115, 253);">80</span>
total <span class="hljs-number" style="color: rgb(255, 115, 253);">81.9</span>
Name: <span class="hljs-number" style="color: rgb(255, 115, 253);">16</span>, dtype: object</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Точно так же <u class="stk-reset">itertuples()</u> перебирает строки и на каждой итерации (опционально) даёт именованный кортеж с индексом и данными:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span><span class="hljs-keyword" style="color: rgb(150, 203, 254);">for</span> row <span class="hljs-keyword" style="color: rgb(150, 203, 254);">in</span> df.loc[:, [<span class="hljs-string" style="color: rgb(168, 255, 96);">'name'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'city'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'total'</span>]].itertuples():
<span class="hljs-meta" style="color: rgb(124, 124, 124);">... </span> print(row)
...
Pandas(Index=<span class="hljs-number" style="color: rgb(255, 115, 253);">10</span>, name=<span class="hljs-string" style="color: rgb(168, 255, 96);">'Xavier'</span>, city=<span class="hljs-string" style="color: rgb(168, 255, 96);">'Mexico City'</span>, total=<span class="hljs-number" style="color: rgb(255, 115, 253);">82.3</span>)
Pandas(Index=<span class="hljs-number" style="color: rgb(255, 115, 253);">11</span>, name=<span class="hljs-string" style="color: rgb(168, 255, 96);">'Ann'</span>, city=<span class="hljs-string" style="color: rgb(168, 255, 96);">'Toronto'</span>, total=<span class="hljs-number" style="color: rgb(255, 115, 253);">84.4</span>)
Pandas(Index=<span class="hljs-number" style="color: rgb(255, 115, 253);">12</span>, name=<span class="hljs-string" style="color: rgb(168, 255, 96);">'Jana'</span>, city=<span class="hljs-string" style="color: rgb(168, 255, 96);">'Prague'</span>, total=<span class="hljs-number" style="color: rgb(255, 115, 253);">82.19999999999999</span>)
Pandas(Index=<span class="hljs-number" style="color: rgb(255, 115, 253);">13</span>, name=<span class="hljs-string" style="color: rgb(168, 255, 96);">'Yi'</span>, city=<span class="hljs-string" style="color: rgb(168, 255, 96);">'Shanghai'</span>, total=<span class="hljs-number" style="color: rgb(255, 115, 253);">82.1</span>)
Pandas(Index=<span class="hljs-number" style="color: rgb(255, 115, 253);">14</span>, name=<span class="hljs-string" style="color: rgb(168, 255, 96);">'Robin'</span>, city=<span class="hljs-string" style="color: rgb(168, 255, 96);">'Manchester'</span>, total=<span class="hljs-number" style="color: rgb(255, 115, 253);">76.7</span>)
Pandas(Index=<span class="hljs-number" style="color: rgb(255, 115, 253);">15</span>, name=<span class="hljs-string" style="color: rgb(168, 255, 96);">'Amal'</span>, city=<span class="hljs-string" style="color: rgb(168, 255, 96);">'Cairo'</span>, total=<span class="hljs-number" style="color: rgb(255, 115, 253);">72.7</span>)
Pandas(Index=<span class="hljs-number" style="color: rgb(255, 115, 253);">16</span>, name=<span class="hljs-string" style="color: rgb(168, 255, 96);">'Nori'</span>, city=<span class="hljs-string" style="color: rgb(168, 255, 96);">'Osaka'</span>, total=<span class="hljs-number" style="color: rgb(255, 115, 253);">81.9</span>)</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Имя кортежа устанавливается параметром <u class="stk-reset">name</u>. Дополнительно можно указать, включать ли метки строк в <u class="stk-reset">index</u> (по умолчанию установлен в <u class="stk-reset">True</u>).</p></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph" id="stk-13"><strong class="stk-reset">Работа с временными рядами</strong></h2><p class="stk-reset" data-ce-tag="paragraph">Pandas отлично справляется с временными рядами. Хотя эта функция частично основана на <a href="https://docs.scipy.org/doc/numpy/reference/arrays.datetime.html" target="_blank" class="stk-reset">datetimes и timedeltas</a>, Pandas обеспечивает гораздо большую гибкость.</p><h3 class="stk-theme_26309__style_medium_header stk-theme_26309__mb_05 stk-reset" id="stk-131" data-ce-tag="paragraph"><strong class="stk-reset">Создание DataFrame с метками временных рядов</strong></h3><p class="stk-reset" data-ce-tag="paragraph">Попробуем создать дата-фрейм, используя почасовые данные о температуре за день.</p><p class="stk-reset" data-ce-tag="paragraph">Начнём со списка (кортежа, массива NumPy или другого типа данных) со значениями данных, которые будут представлять собой почасовую температуру, указанную в градусах Цельсия:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>temp_c = [ <span class="hljs-number" style="color: rgb(255, 115, 253);">8.0</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">7.1</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">6.8</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">6.4</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">6.0</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">5.4</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">4.8</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">5.0</span>,
<span class="hljs-meta" style="color: rgb(124, 124, 124);">... </span> <span class="hljs-number" style="color: rgb(255, 115, 253);">9.1</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">12.8</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">15.3</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">19.1</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">21.2</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">22.1</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">22.4</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">23.1</span>,
<span class="hljs-meta" style="color: rgb(124, 124, 124);">... </span> <span class="hljs-number" style="color: rgb(255, 115, 253);">21.0</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">17.9</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">15.5</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">14.4</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">11.9</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">11.0</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">10.2</span>, <span class="hljs-number" style="color: rgb(255, 115, 253);">9.1</span>]</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Переменная <u class="stk-reset">temp_c</u> ссылается на список значений температуры.</p><p class="stk-reset" data-ce-tag="paragraph">Следующий шаг — создание последовательности дат и времени. Для этого в Pandas есть очень удобная функция <a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.date_range.html" target="_blank" class="stk-reset">date_range()</a>, ранжирующая аргументы, которые вы используете для указания начала или конца диапазона, количества периодов, частоты, часового пояса и так далее:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>dt = pd.date_range(start=<span class="hljs-string" style="color: rgb(168, 255, 96);">'2019-10-27 00:00:00.0'</span>, periods=<span class="hljs-number" style="color: rgb(255, 115, 253);">24</span>,
<span class="hljs-meta" style="color: rgb(124, 124, 124);">... </span> freq=<span class="hljs-string" style="color: rgb(168, 255, 96);">'H'</span>)
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>dt
DatetimeIndex([<span class="hljs-string" style="color: rgb(168, 255, 96);">'2019-10-27 00:00:00'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'2019-10-27 01:00:00'</span>,
<span class="hljs-string" style="color: rgb(168, 255, 96);">'2019-10-27 02:00:00'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'2019-10-27 03:00:00'</span>,
<span class="hljs-string" style="color: rgb(168, 255, 96);">'2019-10-27 04:00:00'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'2019-10-27 05:00:00'</span>,
<span class="hljs-string" style="color: rgb(168, 255, 96);">'2019-10-27 06:00:00'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'2019-10-27 07:00:00'</span>,
<span class="hljs-string" style="color: rgb(168, 255, 96);">'2019-10-27 08:00:00'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'2019-10-27 09:00:00'</span>,
<span class="hljs-string" style="color: rgb(168, 255, 96);">'2019-10-27 10:00:00'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'2019-10-27 11:00:00'</span>,
<span class="hljs-string" style="color: rgb(168, 255, 96);">'2019-10-27 12:00:00'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'2019-10-27 13:00:00'</span>,
<span class="hljs-string" style="color: rgb(168, 255, 96);">'2019-10-27 14:00:00'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'2019-10-27 15:00:00'</span>,
<span class="hljs-string" style="color: rgb(168, 255, 96);">'2019-10-27 16:00:00'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'2019-10-27 17:00:00'</span>,
<span class="hljs-string" style="color: rgb(168, 255, 96);">'2019-10-27 18:00:00'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'2019-10-27 19:00:00'</span>,
<span class="hljs-string" style="color: rgb(168, 255, 96);">'2019-10-27 20:00:00'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'2019-10-27 21:00:00'</span>,
<span class="hljs-string" style="color: rgb(168, 255, 96);">'2019-10-27 22:00:00'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'2019-10-27 23:00:00'</span>],
dtype=<span class="hljs-string" style="color: rgb(168, 255, 96);">'datetime64[ns]'</span>, freq=<span class="hljs-string" style="color: rgb(168, 255, 96);">'H'</span>)</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><div class="stk-grid" data-ce-tag="grid" data-stk-css="stkWLdEv"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-reset " data-ce-tag="paragraph"><strong class="stk-reset">Примечание.</strong> Хотя доступны и другие параметры, по умолчанию в Pandas в основном используют <a class="stk-reset" href="https://en.wikipedia.org/wiki/ISO_8601" target="_blank">формат даты и времени ISO 8601</a>.</p></div></div><p class="stk-reset" data-ce-tag="paragraph">Теперь создадим DataFrame. Во многих случаях удобно использовать значения даты и времени в качестве меток строк:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>temp = pd.DataFrame(data={<span class="hljs-string" style="color: rgb(168, 255, 96);">'temp_c'</span>: temp_c}, index=dt)
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>temp
temp_c
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">8.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">01</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">7.1</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">02</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">6.8</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">03</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">6.4</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">04</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">6.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">05</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">5.4</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">06</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">4.8</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">07</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">5.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">08</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">9.1</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">09</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">12.8</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">10</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">15.3</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">11</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">19.1</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">12</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">21.2</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">13</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">22.1</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">14</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">22.4</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">15</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">23.1</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">16</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">21.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">17</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">17.9</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">18</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">15.5</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">19</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">14.4</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">20</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">11.9</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">21</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">11.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">22</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">10.2</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">23</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">9.1</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><h3 class="stk-theme_26309__style_medium_header stk-theme_26309__mb_05 stk-reset" id="stk-132" data-ce-tag="paragraph"><strong class="stk-reset">Индексирование и нарезка</strong></h3><p class="stk-reset" data-ce-tag="paragraph">К DataFrame с данными временных рядов можно применить срезы, чтобы получить только часть информации:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>temp[<span class="hljs-string" style="color: rgb(168, 255, 96);">'2019-10-27 05'</span>:<span class="hljs-string" style="color: rgb(168, 255, 96);">'2019-10-27 14'</span>]
temp_c
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">05</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">5.4</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">06</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">4.8</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">07</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">5.0</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">08</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">9.1</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">09</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">12.8</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">10</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">15.3</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">11</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">19.1</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">12</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">21.2</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">13</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">22.1</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">14</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">22.4</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">В этом примере показано, как извлечь значения температуры между 05:00 и 14:00. Pandas понимает, что метки строк — это значения даты и времени, и соответственно их интерпретирует.</p><h3 class="stk-theme_26309__style_medium_header stk-theme_26309__mb_05 stk-reset" id="stk-133" data-ce-tag="paragraph"><strong class="stk-reset">Ресемплинг и роллинг</strong></h3><p class="stk-reset" data-ce-tag="paragraph">Если вы хотите разбить день на четыре шестичасовых интервала и получить среднюю температуру для каждого из них, в Pandas есть метод <a class="stk-reset" href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.resample.html" target="_blank">resample()</a>, который можно комбинировать с другими, например с <u class="stk-reset">mean()</u>:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>temp.resample(rule=<span class="hljs-string" style="color: rgb(168, 255, 96);">'6h'</span>).mean()
temp_c
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">6.616667</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">06</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">11.016667</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">12</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">21.283333</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">18</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">12.016667</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Каждая строка соответствует одному шестичасовому интервалу. Например, значение 6.616667 представляет собой среднее значение первых шести температур из дата-фрейма <u class="stk-reset">temp</u>, тогда как 12.016667 — среднее значение последних шести значений температуры.</p><p class="stk-reset" data-ce-tag="paragraph">Вместо <u class="stk-reset">mean()</u> можно применить <u class="stk-reset">min()</u> или <u class="stk-reset">max()</u>. Аналогично можно использовать <u class="stk-reset">sum()</u> для получения сумм значений данных. Вы можете свернуть окно, выбрав другой набор смежных строк для вычислений.</p><p class="stk-reset" data-ce-tag="paragraph">Первое окно начинается с первой строки в DataFrame и включает столько смежных строк, сколько вы укажете. Затем можно переместить окно вниз на одну строку, опуская первую строку и добавляя ту, которая идёт сразу после последней, и снова вычислить ту же статистику. Процесс нужно повторять, пока вы не дойдёте до последней строки DataFrame. Для этого в Pandas есть метод <a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.rolling.html" target="_blank" class="stk-reset">rolling()</a>:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>temp.rolling(window=<span class="hljs-number" style="color: rgb(255, 115, 253);">3</span>).mean()
temp_c
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> NaN
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">01</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> NaN
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">02</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">7.300000</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">03</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">6.766667</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">04</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">6.400000</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">05</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">5.933333</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">06</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">5.400000</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">07</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">5.066667</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">08</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">6.300000</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">09</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">8.966667</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">10</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">12.400000</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">11</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">15.733333</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">12</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">18.533333</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">13</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">20.800000</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">14</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">21.900000</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">15</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">22.533333</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">16</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">22.166667</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">17</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">20.666667</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">18</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">18.133333</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">19</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">15.933333</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">20</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">13.933333</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">21</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">12.433333</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">22</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">11.033333</span>
<span class="hljs-number" style="color: rgb(255, 115, 253);">2019</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-10</span><span class="hljs-number" style="color: rgb(255, 115, 253);">-27</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">23</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span>:<span class="hljs-number" style="color: rgb(255, 115, 253);">00</span> <span class="hljs-number" style="color: rgb(255, 115, 253);">10.100000</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Параметр <u class="stk-reset">window</u> определяет размер скользящего временного окна.</p><p class="stk-reset" data-ce-tag="paragraph">В приведённом выше примере третье значение (7.3) представляет собой среднюю температуру за первые три часа (00:00:00, 01:00:00 и 02:00:00). Четвёртое — среднюю температуру за часы 02:00:00, 03:00:00 и 04:00:00. Последнее — среднюю температуру за последние три часа, 21:00:00, 22:00:00 и 23:00:00. Первые два значения отсутствуют, так как для их вычисления не хватило данных.</p></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph" id="stk-14"><strong class="stk-reset">Графика в Pandas DataFrame</strong></h2><p class="stk-reset" data-ce-tag="paragraph">Pandas позволяет визуализировать данные или создавать графики на основе DataFrames с использованием Matplotlib в фоновом режиме, поэтому построение графиков в Pandas очень похоже на работу с Matplotlib.</p><p class="stk-reset" data-ce-tag="paragraph">Для работы с графиками сначала нужно импортировать модуль <strong class="stk-reset">matplotlib.pyplot</strong>:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span><span class="hljs-keyword" style="color: rgb(150, 203, 254);">import</span> matplotlib.pyplot <span class="hljs-keyword" style="color: rgb(150, 203, 254);">as</span> plt</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Теперь вы можете создавать графики с <a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.plot.html" target="_blank" class="stk-reset">Pandas.DataFrame.plot()</a> и визуализировать их с <a href="https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.pyplot.show.html" target="_blank" class="stk-reset">plt.show()</a>:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>temp.plot()
<matplotlib.axes._subplots.AxesSubplot object at <span class="hljs-number" style="color: rgb(255, 115, 253);">0x7f070cd9d950</span>>
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>plt.show()</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Команда <u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">plot()</u> отображает объект <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">plot</strong>, который выглядит так:</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/12080419072023_241fa6e93576890d440a9a37e8c3191b6a64c5eb.png" data-image-id="58476" data-image-name="таблица 13.07-04.png" width="1540" height="1006" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Инфографика: Катя Павловская для Skillbox Media</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Тот же результат можно получить, применив <a class="stk-reset" href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.plot.line.html#pandas.DataFrame.plot.line" target="_blank">plot.line()</a>. У <u class="stk-reset">plot()</u> и <u class="stk-reset">plot.line()</u> есть много необязательных параметров, которые позволяют указать внешний вид графика.</p><p class="stk-reset" data-ce-tag="paragraph">Для сохранения изображения используется объединённая команда <u class="stk-reset">get_figure()<a class="stk-reset" href="https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.figure.Figure.html#matplotlib.figure.Figure.savefig" target="_blank">.savefig()</a></u>:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>temp.plot().get_figure().savefig(<span class="hljs-string" style="color: rgb(168, 255, 96);">'temperatures.png'</span>)</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">В результате график сохраняется в рабочем каталоге как файл <u class="stk-reset">temperatures.png</u>.</p><p class="stk-reset" data-ce-tag="paragraph">Pandas DataFrame позволяет создавать <a href="https://pandas.pydata.org/pandas-docs/stable/reference/frame.html#plotting" target="_blank" class="stk-reset">разные типы графиков</a>. Например, с помощью <a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.plot.hist.html" target="_blank" class="stk-reset">plot.hist()</a> можно визуализировать данные кандидатов в виде гистограммы:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>df.loc[:, [<span class="hljs-string" style="color: rgb(168, 255, 96);">'py-score'</span>, <span class="hljs-string" style="color: rgb(168, 255, 96);">'total'</span>]].plot.hist(bins=<span class="hljs-number" style="color: rgb(255, 115, 253);">5</span>, alpha=<span class="hljs-number" style="color: rgb(255, 115, 253);">0.4</span>)
<matplotlib.axes._subplots.AxesSubplot object at <span class="hljs-number" style="color: rgb(255, 115, 253);">0x7f070c69edd0</span>>
<span class="hljs-meta" style="color: rgb(124, 124, 124);">>>> </span>plt.show()</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Выглядит это так:</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/12080619072023_a736b3ab7c13cfaa2f80a783960b89bf4cb8c89f.png" data-image-id="58477" data-image-name="таблица 13.07-05.png" width="1540" height="1013" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Инфографика: Катя Павловская для Skillbox Media</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Настроить детали можно с помощью дополнительных методов и параметров: <u class="stk-reset">plot.hist()</u>, <u class="stk-reset">plt.rcParams</u> и многих других. Более подробную информацию вы найдёте в бесплатном учебнике <a class="stk-reset" href="https://github.com/matplotlib/AnatomyOfMatplotlib" target="_blank">Anatomy of Matplotlib</a>.</p></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph" id="stk-15"><strong class="stk-reset">Рекомендуемая литература</strong></h2><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">Pandas DataFrames — это очень многофункциональные объекты, которые поддерживают многие операции, не упомянутые в этой статье:</p><ul class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a href="https://pandas.pydata.org/pandas-docs/stable/user_guide/advanced.html#hierarchical-indexing-multiindex" target="_blank" class="stk-reset">Иерархическую (многоуровневую) индексацию</a>;</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a href="https://realpython.com/lessons/working-groupby-pandas/" target="_blank" class="stk-reset">Группировку</a>;</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a href="https://realpython.com/pandas-merge-join-and-concat/" target="_blank" class="stk-reset">Слияние, объединение и конкатенацию</a>;</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a href="https://realpython.com/lessons/use-categorical-data-save-time-and-space/" target="_blank" class="stk-reset">Работу с категориальными данными</a>.</li></ul><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">Большинство доступных опций хорошо описано в официальном <a href="http://pandas.pydata.org/pandas-docs/stable/getting_started/" target="_blank" class="stk-reset">учебнике по Pandas</a>. Если вы хотите узнать больше, можно ознакомиться со следующими руководствами (все они написаны на английском языке):</p><ul class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a href="https://realpython.com/python-data-cleaning-numpy-pandas/" target="_blank" class="stk-reset">Очистка данных в Pandas и NumPy</a>;</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a href="https://realpython.com/courses/pandas-dataframes-101/" target="_blank" class="stk-reset">Pandas DataFrames 101</a>;</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a href="https://realpython.com/courses/introduction-pandas-and-vincent/" target="_blank" class="stk-reset">Знакомство с Pandas и Vincent</a>;</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a href="https://realpython.com/python-pandas-tricks/" target="_blank" class="stk-reset">Python Pandas: приёмы и возможности, о которых вы могли не знать</a>;</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a href="https://realpython.com/courses/idiomatic-pandas-tricks-features-you-may-not-know/" target="_blank" class="stk-reset">Идиоматические Pandas: приёмы и возможности, о которых вы могли не знать</a>;</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a href="https://realpython.com/lessons/reading-csvs-pandas/" target="_blank" class="stk-reset">Чтение CSV в Pandas</a>;</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a href="https://realpython.com/lessons/writing-csvs-pandas/" target="_blank" class="stk-reset">Написание CSV в Pandas</a>;</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a href="https://realpython.com/python-csv/" target="_blank" class="stk-reset">Чтение и запись файлов CSV в Python</a>;</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a href="https://realpython.com/courses/reading-and-writing-csv-files/" target="_blank" class="stk-reset">Чтение и запись файлов CSV</a>;</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a href="https://realpython.com/working-with-large-excel-files-in-pandas/" target="_blank" class="stk-reset">Использование Pandas для чтения больших файлов Excel в Python</a>;</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a href="https://realpython.com/fast-flexible-pandas/" target="_blank" class="stk-reset">Быстро, гибко, просто и интуитивно понятно: как ускорить ваши проекты в Pandas</a>.</li></ul><p class="stk-reset" data-ce-tag="paragraph">Если вам нужно работать данными более чем в двух измерениях, можно использовать <a href="http://xarray.pydata.org/en/stable/" target="_blank" class="stk-reset">Xarray</a> — ещё одну мощную библиотеку Python, очень похожую на Pandas.</p><p class="stk-reset" data-ce-tag="paragraph">Для работы с большими объёмами данных есть также <a href="https://docs.dask.org/en/latest/dataframe.html" target="_blank" class="stk-reset">DataFrame API</a> в Dask.</p></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph" id="stk-16"><strong class="stk-reset">Заключение</strong></h2><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">Из этого гайда вы узнали:</p><ul class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item">Что такое Pandas DataFrame и как его создать.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item">Как получить доступ, изменить, добавить, отсортировать, отфильтровать и удалить данные.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item">Как использовать подпрограммы NumPy с DataFrames.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item">Как обрабатывать пропущенные значения.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item">Как работать с данными временных рядов.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item">Как визуализировать данные, содержащиеся в DataFrames.</li></ul><p class="stk-reset" data-ce-tag="paragraph">Если хотите глубже изучить работу с данными в Python, ознакомьтесь с другими <a href="https://realpython.com/search?q=pandas" target="_blank" class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">руководствами по Pandas</a> на сайте Real Python.</p><div class="stk-grid" data-ce-tag="grid" data-stk-css="stkERHat"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col" data-stk-css="" data-stk-css-m=""><p class="stk-reset stk-theme_26309__style_small_text stk-theme_26309__mb_05" data-ce-tag="paragraph"><strong class="stk-reset">Читайте также:</strong></p><ul class="stk-theme_26309__style_small_text stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-theme_26309__style_small_text stk-reset stk-list-item" data-ce-tag="list-item"><a href="https://skillbox.ru/media/code/rabotaem-s-pandas-osnovnye-ponyatiya-i-realnye-dannye/" target="_blank" class="stk-reset">Работаем с Pandas: основные понятия и реальные данные</a></li><li class="stk-theme_26309__style_small_text stk-reset stk-list-item" data-ce-tag="list-item"><a href="https://skillbox.ru/media/code/test-ugaday-izvestnogo-programmista-po-ego-rabochemu-stolu/" target="_blank" class="stk-reset">Тест: угадай известного программиста по его рабочему столу</a></li><li class="stk-theme_26309__style_small_text stk-reset stk-list-item" data-ce-tag="list-item"><a href="https://skillbox.ru/media/code/chatboty-v-telegram-na-python-chast-1/" target="_blank" class="stk-reset">Чат-боты в Telegram на Python и Aiogram: пишем первого бота</a></li></ul></div></div></div></div><style data-stk-css="stkHaFTJ" media="all" class="">[data-stk-css="stkHaFTJ"]:not(#stk):not(#stk):not(style){border-left: 4px solid #f5a74f; padding: 20px; background-color: rgba(241, 242, 246, 1)}</style><style data-stk-css="stkpLTi1" media="all" class="">[data-stk-css="stkpLTi1"]:not(#stk):not(#stk):not(style){border-left: 4px solid #f5a74f; padding: 20px; background-color: rgba(241, 242, 246, 1)}</style><style data-stk-css="stkWLdEv" media="all" class="">
[data-stk-css="stkWLdEv"]:not(#stk):not(#stk):not(style) {
border-left: 4px solid #f5a74f;
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style><style data-stk-css="stkERHat" media="all" class="">
[data-stk-css="stkERHat"]:not(#stk):not(#stk):not(style) {
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style><style data-stk-css="stkM-GTx" media="all" class="">
[data-stk-css="stkM-GTx"]:not(#stk):not(#stk):not(style) {
border-left: 4px solid #f5a74f;
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style><style data-stk-css="stkOUSoh" media="all" class="">
[data-stk-css="stkOUSoh"]:not(#stk):not(#stk):not(style) {
border-left: 4px solid #f5a74f;
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style><style data-stk-css="stk3YmC4" media="all" class="">
[data-stk-css="stk3YmC4"]:not(#stk):not(#stk):not(style) {
border-left: 4px solid #f5a74f;
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style><style data-stk-css="stkCceCv" media="all" class="">
[data-stk-css="stkCceCv"]:not(#stk):not(#stk):not(style) {
border-left: 4px solid #f5a74f;
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style><style data-stk-css="stksHZud" class="" media="all">[data-stk-css="stksHZud"]:not(#stk):not(#stk):not(style){border: 1px solid grey; background-color: #a6c1f5}</style><style data-stk-css="stkdF56P" class="" media="all">[data-stk-css="stkdF56P"]:not(#stk):not(#stk):not(style){border: 1px solid grey; background-color: #9ae3c5}</style><style data-stk-css="stk5iSNp" class="" media="all">[data-stk-css="stk5iSNp"]:not(#stk):not(#stk):not(style){border: 1px solid grey; background-color: #9ae3c5}</style><style data-stk-css="stkoA-1m" class="" media="all">[data-stk-css="stkoA-1m"]:not(#stk):not(#stk):not(style){border: 1px solid grey; background-color: #9ae3c5}</style><style data-stk-css="stk72osD" class="" media="all">[data-stk-css="stk72osD"]:not(#stk):not(#stk):not(style){border: 1px solid grey; background-color: #9ae3c5}</style><style data-stk-css="stkMg1VS" class="" media="all">
[data-stk-css="stkMg1VS"]:not(#stk):not(#stk):not(style) {
border-radius: 16px;
padding: 40px;
border: 1px solid;
background-color: rgba(255, 255, 255, 1);
border-color: #E4E4E4;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
}
</style><style data-stk-css="stk4XQdm" media="all" class="">
[data-stk-css="stk4XQdm"]:not(#stk):not(#stk):not(style) {
border-left: 4px solid #f5a74f;
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style><style data-stk-css="stkIaeaJ" class="" media="all">[data-stk-css="stkIaeaJ"]:not(#stk):not(#stk):not(style){margin-left: 52px}</style><style data-stk-css="stk2_tG_" class="" media="all">[data-stk-css="stk2_tG_"]:not(#stk):not(#stk):not(style){margin-left: 52px}</style><style data-stk-css="stk2fxe6" class="" media="all">[data-stk-css="stk2fxe6"]:not(#stk):not(#stk):not(style){margin-left: 52px}</style><style data-stk-css="stkQcwKg" class="" media="all">[data-stk-css="stkQcwKg"]:not(#stk):not(#stk):not(style){margin-left: 52px}</style><style data-stk-css="stkSBgSf" class="" media="all">[data-stk-css="stkSBgSf"]:not(#stk):not(#stk):not(style){margin-left: 52px}</style><style data-stk-css="stk3rTzi" class="" media="all">[data-stk-css="stk3rTzi"]:not(#stk):not(#stk):not(style){margin-left: 52px}</style><style data-stk-css="stkNaXq6" class="" media="all">[data-stk-css="stkNaXq6"]:not(#stk):not(#stk):not(style){border: 1px solid grey}</style><style data-stk-css="stkv4al8" class="" media="all">[data-stk-css="stkv4al8"]:not(#stk):not(#stk):not(style){border: 1px solid grey}</style><style data-stk-css="stkD4RlQ" class="" media="all">[data-stk-css="stkD4RlQ"]:not(#stk):not(#stk):not(style){border: 1px solid grey}</style><style data-stk-css="stkq56DE" class="" media="all">[data-stk-css="stkq56DE"]:not(#stk):not(#stk):not(style){border: 1px solid grey}</style><style data-stk-css="stkSfOzQ" class="" media="all">[data-stk-css="stkSfOzQ"]:not(#stk):not(#stk):not(style){border: 1px solid grey}</style><style data-stk-css="stkS2zh7" class="" media="all">[data-stk-css="stkS2zh7"]:not(#stk):not(#stk):not(style){background-color: #F08080}</style><style data-stk-css="stkAsFfS" class="" media="all">[data-stk-css="stkAsFfS"]:not(#stk):not(#stk):not(style){background-color: rgba(255, 255, 255, 1)}</style></div> </div>
</div>
</div>
</div>
<div class="col-xl-9 col-lg-8 col-poster">
<div class="article-preview-info">
</div>
</div>
<noindex>
<div class="share" data-nosnippet>
<button class="share__handler-btn ">
<span class="share__handler-icon">
<svg width="11" height="12" viewBox="0 0 11 12" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11 4.99902L6 0V2.99805C2.688 2.99805 0 5.68505 0 8.99805V11.498H0.0980225C0.765022 8.91205 3.107 6.99805 5.901 6.99805H6.00098V9.99805L11 4.99902Z" fill="currentColor"/>
</svg>
</span>
<span class="share__handler-text">Поделиться</span>
</button>
<div class="share__list">
<a href="#" class="share__item" data-code="vk">
<span class="share__item-icon share__item-icon--vk">
<svg width="9" height="5" viewBox="0 0 9 5" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.04776 4.98054H4.53996C4.62377 4.97136 4.70279 4.9361 4.76621 4.87951C4.81226 4.81209 4.83594 4.73139 4.83369 4.64925C4.83369 4.64925 4.82574 3.94629 5.1314 3.84125C5.43701 3.73621 5.826 4.51998 6.23879 4.82297C6.39281 4.95308 6.59128 5.01558 6.79053 4.99669L7.89399 4.98054C7.89399 4.98054 8.47355 4.94415 8.19965 4.46339C7.98372 4.08315 7.70589 3.743 7.37799 3.45744C6.68338 2.77872 6.77865 2.8878 7.61219 1.71216C8.12024 0.997077 8.32269 0.556717 8.25918 0.370875C8.14651 0.254767 7.98299 0.205914 7.82655 0.241594L6.58018 0.249674C6.52565 0.241067 6.46984 0.251007 6.42141 0.277954C6.37298 0.314507 6.33466 0.363228 6.31025 0.419356C6.18259 0.772814 6.0287 1.11586 5.8498 1.44552C5.29807 2.43936 5.07579 2.49188 4.98451 2.43128C4.77416 2.28584 4.82574 1.85356 4.82574 1.54248C4.82574 0.580957 4.96468 0.176954 4.55979 0.0719133C4.36879 0.0254376 4.17259 0.00505841 3.97631 0.0113129C3.62834 -0.0214164 3.27745 0.017045 2.94429 0.124433C2.8014 0.197154 2.69423 0.358753 2.76171 0.370875C2.90334 0.385518 3.03406 0.454932 3.12688 0.564795C3.21268 0.750336 3.25481 0.953675 3.24993 1.15868C3.24993 1.15868 3.32535 2.29392 3.07925 2.43532C2.91254 2.53228 2.68232 2.33432 2.18616 1.4334C2.01958 1.11848 1.87243 0.793298 1.74557 0.459754C1.72231 0.404013 1.68704 0.354309 1.64236 0.314316C1.58589 0.272672 1.52066 0.245006 1.45184 0.233514L0.268986 0.241594C0.181167 0.241154 0.0958013 0.271066 0.0268587 0.326434C-0.00595087 0.396174 -0.00882613 0.476652 0.0189202 0.548633C0.0189202 0.548633 0.947737 2.83932 1.99563 3.99477C2.51 4.60651 3.2568 4.96526 4.04776 4.98054Z" fill="white"/>
</svg>
</span>
<span class="share__item-text">Vkontakte</span>
</a>
<a href="#" class="share__item" data-code="tw">
<span class="share__item-icon share__item-icon--tw">
<svg width="9" height="7" viewBox="0 0 9 7" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M5.52788 0.00144284V0H5.9158L6.05754 0.027414C6.15204 0.0452114 6.23783 0.068535 6.31491 0.0973918C6.39201 0.126249 6.46661 0.159917 6.53872 0.198391C6.61083 0.236864 6.67623 0.276066 6.73492 0.315982C6.79311 0.355422 6.84533 0.397265 6.89158 0.441509C6.93733 0.486237 7.0087 0.49778 7.10568 0.476138C7.20266 0.454495 7.3071 0.424433 7.419 0.38596C7.5309 0.347487 7.64156 0.304201 7.75097 0.256104C7.86039 0.208007 7.92703 0.177469 7.95091 0.164484C7.97428 0.151022 7.98671 0.143808 7.98821 0.142841L7.98969 0.140677L7.99715 0.13707L8.00461 0.133463L8.01207 0.129856L8.01953 0.126249L8.02102 0.124084L8.02326 0.122642L8.02551 0.121199L8.02699 0.119034L8.03445 0.11687L8.04191 0.115427L8.04043 0.126249L8.03818 0.13707L8.03445 0.147891L8.03072 0.158713L8.02699 0.165927L8.02326 0.173141L8.01953 0.183962C8.01705 0.191176 8.01456 0.200793 8.01207 0.212819C8.00959 0.224845 7.98596 0.272935 7.9412 0.357103C7.89644 0.441271 7.84049 0.526637 7.77335 0.613208C7.70621 0.699778 7.64604 0.765182 7.59283 0.809434C7.53911 0.854162 7.50355 0.885421 7.48614 0.903219C7.46874 0.921492 7.4476 0.938323 7.42273 0.953718L7.38543 0.977525L7.37797 0.981132L7.37051 0.984739L7.36902 0.986903L7.36678 0.988346L7.36454 0.989789L7.36305 0.991953L7.35559 0.99556L7.34813 0.999168L7.34664 1.00133L7.3444 1.00277L7.34216 1.00422L7.34067 1.00638L7.33918 1.00855L7.33694 1.00999L7.3347 1.01143L7.33321 1.0136H7.37051L7.57939 0.970311C7.71865 0.941454 7.85168 0.906588 7.9785 0.865705L8.17992 0.800777L8.2023 0.793563L8.21349 0.789956L8.22095 0.786348L8.22841 0.782741L8.23587 0.779134L8.24333 0.775527L8.25825 0.773363L8.27317 0.77192V0.786348L8.26944 0.787791L8.26571 0.789956L8.26423 0.79212L8.26198 0.793563L8.25974 0.795006L8.25825 0.79717L8.25677 0.799334L8.25452 0.800777L8.25228 0.80222L8.25079 0.804384L8.24931 0.806548L8.24706 0.807991L8.24333 0.815205L8.2396 0.82242L8.23736 0.823862C8.23637 0.825305 8.20479 0.866181 8.14262 0.946504C8.08046 1.0273 8.04689 1.06818 8.04191 1.06915C8.03694 1.07059 8.02997 1.0778 8.02102 1.09079C8.01257 1.10425 7.95985 1.15788 7.86287 1.25166C7.76589 1.34545 7.67091 1.42889 7.57791 1.502C7.48441 1.57558 7.43716 1.666 7.43616 1.77325C7.43467 1.88002 7.42895 2.00074 7.419 2.13541C7.40905 2.27007 7.3904 2.41555 7.36305 2.57186C7.3357 2.72817 7.29342 2.90492 7.23623 3.10211C7.17904 3.29929 7.10941 3.49168 7.02735 3.67925C6.94529 3.86681 6.8595 4.03514 6.76998 4.18424C6.68046 4.33334 6.5984 4.45958 6.5238 4.56299C6.4492 4.66639 6.37336 4.76378 6.29626 4.85516C6.21918 4.94654 6.12171 5.04947 6.00384 5.16393C5.88547 5.27791 5.82082 5.34044 5.80988 5.3515C5.79844 5.36208 5.74971 5.40152 5.66365 5.46981C5.57812 5.53858 5.48611 5.60736 5.38763 5.67614C5.28966 5.74443 5.19964 5.80143 5.11758 5.84711C5.03552 5.8928 4.93655 5.94498 4.82067 6.00366C4.70529 6.06282 4.58046 6.11765 4.44618 6.16815C4.3119 6.21865 4.17016 6.26554 4.02096 6.30882C3.87176 6.35211 3.72753 6.38578 3.58827 6.40982C3.44903 6.43387 3.29112 6.45431 3.11456 6.47114L2.84973 6.49639V6.5H2.36483V6.49639L2.30142 6.49279C2.25915 6.49038 2.22433 6.48797 2.19698 6.48557C2.16963 6.48317 2.06643 6.46994 1.88739 6.44589C1.70835 6.42185 1.56785 6.3978 1.4659 6.37375C1.36395 6.34971 1.21225 6.30401 1.01083 6.23668C0.809413 6.16935 0.637087 6.10129 0.493854 6.03252C0.351121 5.96422 0.261601 5.92094 0.225293 5.90266C0.189485 5.88487 0.149201 5.86275 0.10444 5.83629L0.0373001 5.79661L0.0358156 5.79445L0.0335701 5.79301L0.0313321 5.79156L0.0298401 5.7894L0.0223801 5.78579L0.0149201 5.78219L0.0134355 5.78002L0.01119 5.77858L0.00895204 5.77714L0.00746003 5.77497L0.00597548 5.77281L0.00373001 5.77137H0V5.75694L0.00746003 5.75838L0.0149201 5.76054L0.0484902 5.76415C0.0708703 5.76655 0.131796 5.77016 0.231261 5.77497C0.330733 5.77978 0.436412 5.77978 0.548312 5.77497C0.660213 5.77016 0.774605 5.75934 0.891474 5.74251C1.00835 5.72568 1.14636 5.69682 1.30551 5.65594C1.46466 5.61505 1.61087 5.56648 1.74416 5.51021C1.87695 5.45346 1.97144 5.41114 2.02764 5.38324C2.08334 5.35583 2.16838 5.30484 2.28277 5.2303L2.45435 5.11848L2.45584 5.11632L2.45808 5.11487L2.46033 5.11343L2.46181 5.11127L2.4633 5.1091L2.46554 5.10766L2.46779 5.10622L2.46927 5.10405L2.47673 5.10189L2.48419 5.10044L2.48568 5.09323L2.48792 5.08602L2.49017 5.08457L2.49165 5.08241L2.43197 5.0788C2.39219 5.0764 2.35364 5.07399 2.31634 5.07159C2.27904 5.06918 2.2206 5.05836 2.14103 5.03912C2.06146 5.01988 1.97567 4.99103 1.88366 4.95255C1.79165 4.91408 1.70213 4.86838 1.6151 4.81548C1.52807 4.76258 1.46515 4.71857 1.42636 4.68346C1.38807 4.64883 1.33833 4.59978 1.27716 4.53629C1.21648 4.47233 1.16376 4.40668 1.119 4.33934C1.07424 4.27202 1.03148 4.19433 0.990699 4.10633L0.928774 3.97503L0.925044 3.96421L0.921314 3.95339L0.919076 3.94617L0.917584 3.93896L0.928774 3.9404L0.939964 3.94256L1.02202 3.95339C1.07674 3.9606 1.16253 3.963 1.27939 3.9606C1.39627 3.9582 1.47709 3.95339 1.52185 3.94617C1.56661 3.93896 1.59396 3.93414 1.60391 3.93174L1.61883 3.92814L1.63748 3.92453L1.65613 3.92092L1.65762 3.91876L1.65986 3.91731L1.6621 3.91587L1.66359 3.91371L1.64867 3.9101L1.63375 3.90649L1.61883 3.90289L1.60391 3.89928L1.58899 3.89567C1.57904 3.89327 1.56164 3.88846 1.53677 3.88124C1.5119 3.87403 1.44476 3.84757 1.33535 3.80189C1.22594 3.7562 1.1389 3.71171 1.07424 3.66842C1.00943 3.62501 0.947626 3.57754 0.889235 3.5263C0.831047 3.47436 0.767145 3.40751 0.697513 3.32575C0.627888 3.24399 0.565724 3.149 0.511012 3.04079C0.456308 2.93257 0.415277 2.82917 0.387922 2.73058C0.360676 2.63256 0.3427 2.53235 0.334217 2.43119L0.320781 2.27969L0.328241 2.28113L0.335701 2.2833L0.343161 2.2869L0.350621 2.29051L0.358081 2.29412L0.365541 2.29772L0.481172 2.34822C0.558264 2.38189 0.653998 2.41075 0.768383 2.43479C0.882775 2.45884 0.951154 2.47207 0.973534 2.47447L1.0071 2.47808H1.07424L1.07276 2.47592L1.07051 2.47447L1.06828 2.47303L1.06678 2.47087L1.0653 2.4687L1.06305 2.46726L1.06082 2.46582L1.05932 2.46365L1.05186 2.46004L1.0444 2.45644L1.04292 2.45427L1.04067 2.45283L1.03844 2.45139L1.03694 2.44922L1.02948 2.44562L1.02202 2.44201L1.02054 2.43984C1.01905 2.43888 0.99766 2.42349 0.956376 2.39367C0.915592 2.36337 0.872823 2.32418 0.828063 2.27608C0.783303 2.22798 0.738543 2.17749 0.693783 2.12458C0.64894 2.07156 0.609 2.01483 0.574422 1.95505C0.539614 1.89493 0.502806 1.81846 0.464014 1.72564C0.425721 1.6333 0.396627 1.54023 0.376731 1.44645C0.356843 1.35266 0.345653 1.26008 0.343161 1.1687C0.340677 1.07732 0.343161 0.999168 0.350621 0.93424C0.358081 0.869312 0.373001 0.795965 0.395382 0.714206C0.417762 0.632448 0.450093 0.545877 0.492362 0.454495L0.555772 0.317425L0.559502 0.306604L0.563232 0.295782L0.565478 0.29434L0.566962 0.292175L0.568454 0.290011L0.570692 0.288568L0.572938 0.290011L0.574422 0.292175L0.575914 0.29434L0.578152 0.295782L0.580398 0.297225L0.581882 0.29939L0.583374 0.301554L0.585612 0.302997L0.589342 0.310211L0.593072 0.317425L0.595318 0.318868L0.596802 0.321032L0.697513 0.429245C0.764653 0.501387 0.844229 0.581948 0.936234 0.670921C1.02825 0.759894 1.07922 0.806065 1.08916 0.809434C1.09912 0.813279 1.11154 0.824338 1.12646 0.842619C1.14138 0.860417 1.19112 0.902981 1.27567 0.970311C1.36022 1.03764 1.47087 1.1158 1.60764 1.20477C1.74441 1.29375 1.89609 1.38152 2.0627 1.46809C2.22931 1.55466 2.40835 1.63281 2.59982 1.70255C2.7913 1.77229 2.92558 1.81798 3.00266 1.83962C3.07975 1.86127 3.21154 1.88892 3.39804 1.92259C3.58454 1.95625 3.72505 1.9779 3.81954 1.98751C3.91403 1.99713 3.97869 2.00266 4.0135 2.00411L4.06572 2.00555L4.06423 1.99473L4.06199 1.98391L4.04707 1.89373C4.03712 1.83361 4.03215 1.74944 4.03215 1.64123C4.03215 1.53302 4.04085 1.43322 4.05826 1.34184C4.07567 1.25046 4.10178 1.15788 4.13659 1.0641C4.1714 0.970311 4.20547 0.895038 4.23879 0.838291C4.27261 0.78202 4.31687 0.717814 4.37158 0.645671C4.42629 0.573529 4.49716 0.498985 4.58419 0.422031C4.67122 0.345077 4.77069 0.276542 4.88259 0.216426C4.99449 0.15631 5.09769 0.110615 5.19218 0.0793563C5.28668 0.0480971 5.36625 0.0276521 5.4309 0.0180355C5.49556 0.00841898 5.52788 0.00288568 5.52788 0.00144284Z" fill="white"/>
</svg>
</span>
<span class="share__item-text">Twitter</span>
</a>
<a href="#" class="share__item" data-code="tg">
<span class="share__item-icon share__item-icon--tg">
<svg width="10" height="7" viewBox="0 0 10 7" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.39589 3.04852C1.39589 3.04852 5.05491 1.51189 6.32392 0.9708C6.8104 0.754384 8.46012 0.0617918 8.46012 0.0617918C8.46012 0.0617918 9.22155 -0.241191 9.15809 0.494655C9.13692 0.797667 8.96773 1.85815 8.79854 3.00523C8.54472 4.62846 8.26976 6.40316 8.26976 6.40316C8.26976 6.40316 8.22746 6.90097 7.86791 6.98753C7.50836 7.0741 6.91613 6.68455 6.8104 6.59795C6.72577 6.53304 5.22411 5.5591 4.6742 5.08295C4.52614 4.9531 4.35695 4.6934 4.69533 4.39039C5.45676 3.67617 6.36622 2.78882 6.91613 2.2261C7.16995 1.96638 7.42374 1.36038 6.36622 2.09622C4.86456 3.15674 3.38403 4.15231 3.38403 4.15231C3.38403 4.15231 3.04561 4.36873 2.41111 4.17394C1.77657 3.97918 1.03631 3.71945 1.03631 3.71945C1.03631 3.71945 0.528726 3.39481 1.39589 3.04852Z" fill="white"/>
</svg>
</span>
<span class="share__item-text">Telegram</span>
</a>
<a href="#" class="share__item js-share-item-copy">
<span class="share__item-icon share__item-icon--copy">
<svg width="10" height="10" viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4.19922 5.40327C4.37217 5.63449 4.59283 5.8258 4.84622 5.96425C5.09962 6.10269 5.37982 6.18501 5.66783 6.20564C5.95584 6.22627 6.24492 6.18471 6.51546 6.08379C6.78599 5.98287 7.03166 5.82495 7.2358 5.62074L8.44399 4.41255C8.81079 4.03277 9.01375 3.52412 9.00917 2.99615C9.00458 2.46818 8.79281 1.96313 8.41946 1.58978C8.04611 1.21644 7.54106 1.00466 7.01309 1.00008C6.48512 0.995488 5.97647 1.19845 5.59669 1.56525L4.904 2.25392" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M5.81002 4.59658C5.63707 4.36536 5.41641 4.17404 5.16302 4.0356C4.90962 3.89716 4.62942 3.81483 4.34141 3.79421C4.0534 3.77358 3.76432 3.81514 3.49379 3.91605C3.22325 4.01697 2.97758 4.17489 2.77344 4.3791L1.56525 5.58729C1.19845 5.96707 0.995488 6.47572 1.00008 7.0037C1.00466 7.53167 1.21644 8.03672 1.58978 8.41006C1.96313 8.78341 2.46818 8.99518 2.99615 8.99977C3.52412 9.00436 4.03277 8.80139 4.41255 8.43459L5.10122 7.74592" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</span>
<span class="share__item-text">Скопировать ссылку</span>
</a>
</div>
</div>
</noindex>
</div>
<section class="container inset" data-banner="225284" data-source="216050" data-format="horizontal">
<div class="row">
<div class="col-lg-8 col-sm-12">
<div class="inset__wrapper" style="background-color: #cae3f9;">
<div class="inset__content">
<!-- <h2 class="inset__header">Бесплатный курс</h2>
-->
<p class="inset__description" style="color:#1e3a2b!important">
Python для всех
</p>
<p class="inset__text" style="color:#1e3a2b!important">
Вы освоите Python на практике и создадите проекты для портфолио — телеграм-бот, веб-парсер и сайт с нуля. А ещё получите готовый план выхода на удалёнку и фриланс. Спикер — руководитель отдела разработки в «Сбере».
</p>
<a data-source="216050" data-banner="225284" href="https://bootcamp.skillbox.ru/python/?utm_source=media&utm_medium=banners&utm_campaign=all_all_media_banners_invite_bootcamp-617_all_all_skillbox" class="inset__button article-advert-banner__link courseLink" target="_blank" style="color:#fff; background-color:#3d3bff" data-courseid="">Пройти бесплатно</a>
</div>
<div class="inset__image">
<img src="https://optim.tildacdn.com/tild6662-3838-4630-a136-393038343431/-/resize/123x/-/format/webp/device_1-2_1.png.webp" width="145" height="auto" alt="">
</div>
</div>
</div>
</div>
</section>
<div style="align-content: center; background-color: black; overflow: hidden;">
<noindex>
<div style="display: flex; align-items: center; justify-content: center; background-color: black; height: 60px; color: white; text-align: center">
Листая дальше, вы перейдете на страницу <a style="text-decoration: underline;" data-type="scroll" href="https://bootcamp.skillbox.ru/python/?utm_source=media&utm_medium=banners&utm_campaign=all_all_media_banners_invite_bootcamp-617_all_scroll_skillbox">Python для всех: старт в IT с нуля</a>
</div>
<div class="iframe-wrapper" style="height: 100vh; transform: scale(0.5);">
<iframe id="test_iframe" scrolling="no" style="overflow: hidden;margin: 0 auto;display: block; width: 100%; height: 100%" src="https://bootcamp.skillbox.ru/python/?utm_source=media&utm_medium=banners&utm_campaign=all_all_media_banners_invite_bootcamp-617_all_scroll_skillbox">
</iframe>
</div>
</noindex>
</div>
<script>
jQuery(document).ready(function($) {
$('footer.without-buttons').remove();
let iframeWrapper = $('.iframe-wrapper');
var check = false;
$(window).on('scroll', function() {
let iframeWrapperHeight = iframeWrapper.height();
let iframeWrapperOffset = iframeWrapper.offset().top - iframeWrapperHeight;
let scrollTop = $(window).scrollTop();
const {scrollHeight, clientHeight } = document.documentElement;
const maxScroll = scrollHeight - clientHeight;
const power = 1
const scale = (scrollTop / maxScroll) * power;
iframeWrapper.css('height', `${clientHeight}`)
if (scrollTop > iframeWrapperOffset) {
if(!check) {
document.dispatchEvent(new CustomEvent('articleAdvertBanner', {
detail: {
event: 'show',
id: 225782,
sourceId: 216050,
format: "new_banner"
}
}));
}
check = true;
iframeWrapper.css({'transform': `scale(${scale})`})
if (maxScroll === scrollTop || maxScroll === iframeWrapper.offset().top) {
redirect();
} else if (maxScroll <= scrollTop + 1 ) {
redirect();
}
}
function isNeedAddUtm(url)
{
if (typeof url !== 'string') {
return false;
}
var externalLinks = [
'freelancer.skillbox.ru',
'sale.skillbox.ru',
'course.skillbox.ru',
'interiordesign.skillbox.ru',
'iamwebdev.skillbox.ru',
'iammarketer.skillbox.ru',
'iamdesigner.skillbox.ru',
'live.skillbox.ru',
'b2b.skillbox.ru',
'highereducation.skillbox.ru',
'skillbox.ru/courses',
'skillbox.ru/sale',
'skillbox.ru/media'
];
for (var i = 0; i < externalLinks.length; i++) {
externalLinks[i] = escapeRegExp(externalLinks[i]);
}
var regexp = new RegExp('^http[s]?:\/\/(skillbox\.ru|' + escapeRegExp(window.location.host) + '|' + externalLinks.join('|') + ')\/(?!media/)[a-zA-Z0-9-_/]*');
return !!url.match(regexp);
}
function escapeRegExp(string) {
return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
}
function redirect() {
document.dispatchEvent(new CustomEvent('articleAdvertBanner', {
detail: {
event: 'click',
id: 225782,
sourceId: 216050,
format: "new_banner"
}
}));
var page = window.location.href;
var $article = $('section[data-article-text]');
var pageId = $article.data('articleid');
if(pageId === undefined)
{
pageId = 0;
}
window.dataLayer.push({
'event': 'go_to_course',
'courseID': 225782,
'page': page,
'pageID': pageId
});
var link = "https://bootcamp.skillbox.ru/python/?utm_source=media&utm_medium=banners&utm_campaign=all_all_media_banners_invite_bootcamp-617_all_scroll_skillbox";
if(isNeedAddUtm(link)) {
var urlSplit = link.split('?');
var urlBase = urlSplit[0] ? urlSplit[0] : '';
link = urlBase + '?utm_source=media&utm_medium=banners&utm_campaign=all_all_media_banners_banners_scroll_all_all_skillbox';
}
window.location.assign(link);
// var iframe = document.getElementById("test_iframe");
// var src = iframe.src;
// var document_frame = iframe.contentWindow.document.documentElement;
// var body = window.document.body.innerHTML;
// var title = iframe.contentWindow.document.head.title;
//
// window.history.pushState({
// "html": body,
// "pageTitle": title,
// "src": document.location.href
// }, '', src);
// window.addEventListener("popstate", function(e) {
// window.location.href = document.location;
// });
//
// document.documentElement.replaceWith(document_frame);
}
});
});
</script> </section>
<div class="article-banner" data-banner="225285" data-source="216050" data-format="vertical" data-type="vertical">
<div class="row">
<div class="col-sm-4 col-sm-12">
<a data-source="216050" data-banner="225285" href="https://bootcamp.skillbox.ru/python/?utm_source=media&utm_medium=banners&utm_campaign=all_all_media_banners_invite_bootcamp-617_all_all_skillbox" class="inset__wrapper" style="background-color: #cae3f9; display: block; text-decoration: none; color: inherit;" target="_blank">
<div class="inset__content">
<div class="inset__image" style="text-align: center;">
<img src="https://optim.tildacdn.com/tild6662-3838-4630-a136-393038343431/-/resize/123x/-/format/webp/device_1-2_1.png.webp" width="250" height="135" alt="">
</div>
<p class="inset__description" style="color:#000!important; padding-bottom:13px;">
Учитесь Python бесплатно ➞
</p>
<p class="inset__text" style="color:#000!important">
Пройдите бесплатный курс по разработке на Python. Получите готовый план выхода на фриланс и полезный гайд по созданию резюме.
</p>
<div class="inset__button article-advert-banner__link" style="color:#fff; background-color:#3d3bff; display: inline-block;">Пройти курс</div>
</div>
</a>
</div>
</div> </div>
<a data-source="216050" data-banner="225282" target="_blank" href="https://bootcamp.skillbox.ru/python/?utm_source=media&utm_medium=banners&utm_campaign=all_all_media_banners_invite_bootcamp-617_all_all_skillbox" class="article-banner article-advert-banner__link" style="background-color: #cae3f9!important;" data-format="top" data-type="top">
<div class="article-banner__img">
<img src="https://optim.tildacdn.com/tild6662-3838-4630-a136-393038343431/-/resize/123x/-/format/webp/device_1-2_1.png.webp" alt="">
</div>
<span class="article-banner__title"><b>Бесплатный курс по разработке на Python ➞</b><br>
Пройдите бесплатный курс по Python и создайте с нуля телеграм-бот, веб-парсер и сайт. Спикер — руководитель отдела разработки в «Сбере».
</span>
<span class="article-banner__link">Пройти курс</span> </a>
<div class="question">
<div class="container">
<div class="question__inner">
<div class="question__title">Понравилась статья?</div>
<a href="#" data-cur-url="/media/code/pandas-dataframe-kak-upoitelno-rabotat-s-dannymi/"
class="question__btn js-modalLink" data-mfp-src="#modalAuth">Да</a>
</div>
</div>
</div>
</div>
<span
data-area="article-bottom"
data-current-url="/media/code/pandas-dataframe-kak-upoitelno-rabotat-s-dannymi/"
data-id="216050">
</span>
</div>
<script type="application/ld+json">
{"@context":"http:\/\/schema.org","@type":"Article","url":"https:\/\/skillbox.ru\/media\/code\/pandas-dataframe-kak-upoitelno-rabotat-s-dannymi\/","headline":"Pandas DataFrame: \u043a\u0430\u043a\u00a0\u0443\u043f\u043e\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u00a0\u0434\u0430\u043d\u043d\u044b\u043c\u0438","articleSection":"\u041a\u043e\u0434","articleBody":"\r\n \r\n\r\n\r\n\u041c\u0438\u0440\u043a\u043e \u0421\u0442\u043e\u0438\u043b\u044c\u043a\u043e\u0432\u0438\u0447\r\n----------------------\r\n\r\n\r\n\r\n\r\n\u041e\u0431 \u0430\u0432\u0442\u043e\u0440\u0435\r\n\r\n\r\nPh. d. \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043c\u0430\u0448\u0438\u043d\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f, \u0434\u043e\u0446\u0435\u043d\u0442 \r\n\u041d\u0438\u0448\u0441\u043a\u043e\u0433\u043e \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u0430 . \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f: \u0433\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0432 \u044d\u043d\u0435\u0440\u0433\u0435\u0442\u0438\u043a\u0435. \u0412\u043b\u0430\u0434\u0435\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u044f\u0437\u044b\u043a\u0430\u043c\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u0440\u0435\u0434\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 Python, C#, C \u0438 JavaScript.\r\n----------------------\r\n\r\n\r\n\r\n\r\n\u0441\u0441\u044b\u043b\u043a\u0438\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n----------------------\r\n\r\n\r\n\r\n\r\n\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a\r\n\r\n\r\nThe pandas DataFrame: Make Working With Data Delightful \r\n \r\n----------------------\r\n\r\n\r\nPandas DataFrame \r\n\u0430\u043a\u0442\u0438\u0432\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442 \u0432 data science, \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u043c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438, \u043d\u0430\u0443\u0447\u043d\u044b\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f\u0445 \u0438 \u043c\u043d\u043e\u0433\u0438\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u043e\u0431\u043b\u0430\u0441\u0442\u044f\u0445, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0445.\r\n\r\n\u042d\u0442\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0432\u043e \u043c\u043d\u043e\u0433\u043e\u043c \u043f\u043e\u0445\u043e\u0436\u0438 \u043d\u0430 SQL, \r\n\u0442\u0430\u0431\u043b\u0438\u0446\u044b Excel \u0438 Calc. \u041e\u0434\u043d\u0430\u043a\u043e \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e DataFrame \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u043f\u0440\u043e\u0449\u0435 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0438 \u043c\u043e\u0449\u043d\u0435\u0435 \u2014 \u0432\u0435\u0434\u044c \u044d\u0442\u043e \u043d\u0435\u043e\u0442\u044a\u0435\u043c\u043b\u0435\u043c\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u044b Python \u0438 NumPy.\r\n\r\n\u0418\u0437 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u044b \u0443\u0437\u043d\u0430\u0435\u0442\u0435:\r\n\r\n- \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 DataFrame \u0432 Pandas \u0438 \u043a\u0430\u043a \u0435\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c.\r\n- \u041a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f, \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c, \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c, \r\n\u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435.\r\n- \u041a\u0430\u043a \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.\r\n- \u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u0440\u044f\u0434\u0430\u043c\u0438.\r\n- \u041a\u0430\u043a \u0431\u044b\u0441\u0442\u0440\u043e \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435.\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435:\r\n\r\n- \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Pandas DataFrame [ #stk-1 ] \r\n- \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 Pandas DataFrame [ #stk-2 ] \r\n\r\n\r\n\r\n- \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438\u0437 \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u0439 [ #stk-21 ] \r\n- \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u043e\u0432 [ #stk-22 ] \r\n- \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438\u0437 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 NumPy [ #stk-23 ] \r\n- \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438\u0437 \u0444\u0430\u0439\u043b\u043e\u0432 [ #stk-24 ] \r\n\r\n- \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u043a \u0438 \u0434\u0430\u043d\u043d\u044b\u0445 [ #stk-3 ] \r\n\r\n\r\n\r\n- \u041c\u0435\u0442\u043a\u0438 Pandas DataFrame \u043a\u0430\u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \r\n[ #stk-31 ] \r\n- \u0414\u0430\u043d\u043d\u044b\u0435 \u0432 \u0432\u0438\u0434\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 NumPy [ #stk-32 ] \r\n- \u0422\u0438\u043f\u044b \u0434\u0430\u043d\u043d\u044b\u0445 [ #stk-33 ] \r\n- \u0420\u0430\u0437\u043c\u0435\u0440 Pandas DataFrame [ #stk-34 ] \r\n\r\n- \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \r\n[ #stk-4 ] \r\n\r\n\r\n\r\n- \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u043a\u0441\u0435\u0441\u0441\u043e\u0440\u043e\u0432 \r\n[ #stk-41 ] \r\n- \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u043a\u0441\u0435\u0441\u0441\u043e\u0440\u043e\u0432 \r\n[ #stk-42 ] \r\n\r\n- \u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 [ #stk-5 ] \r\n\r\n\r\n\r\n- \u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a [ #stk-51 ] \r\n- \u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 [ #stk-52 ] \r\n\r\n- \u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 [ #stk-6 ]\r\n \r\n- \u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 NumPy \u0438 SciPy [ #stk-7 ] \r\n- \u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u0432 Pandas DataFrame [ #stk-8 ] \r\n- \u0424\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 [ #stk-9 ] \r\n- \u0420\u0430\u0431\u043e\u0442\u0430 \u0441\u043e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \r\n[ #stk-10 ] \r\n- \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 [ #stk-11 ]\r\n \r\n\r\n\r\n\r\n- \u0420\u0430\u0441\u0447\u0451\u0442 \u0441 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 [ #stk-111 ]\r\n \r\n- \u0417\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 [ #stk-112 ]\r\n \r\n- \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a \u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0441 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \r\n\u0434\u0430\u043d\u043d\u044b\u043c\u0438 [ #stk-113 ] \r\n\r\n- \u0418\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0432 Pandas DataFrame [ #stk-12 ] \r\n- \u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u0440\u044f\u0434\u0430\u043c\u0438 [ #stk-13 ] \r\n\r\n\r\n\r\n- \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 DataFrame \u0441 \u043c\u0435\u0442\u043a\u0430\u043c\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \r\n\u0440\u044f\u0434\u043e\u0432 [ #stk-131 ] \r\n- \u0418\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u043d\u0430\u0440\u0435\u0437\u043a\u0430 [ #stk-132 ] \r\n- \u0420\u0435\u0441\u0435\u043c\u043f\u043b\u0438\u043d\u0433 \u0438 \u0440\u043e\u043b\u043b\u0438\u043d\u0433 [ #stk-133 ] \r\n\r\n- \u0413\u0440\u0430\u0444\u0438\u043a\u0430 \u0432 Pandas DataFrame [ #stk-14 ] \r\n- \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u0430\u044f \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u0430 [ #stk-15 ] \r\n- \u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 [ #stk-16 ] \r\n----------------------\r\n\r\n\r\n\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Pandas DataFrame\r\n\r\nPandas DataFrame (\u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u0430\u0442\u0430 \u0444\u0440\u0435\u0439\u043c\u044b) \u2014 \u044d\u0442\u043e \r\n\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u0442 \u0438\u0437:\r\n\r\n- \u0434\u0430\u043d\u043d\u044b\u0445, \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0432 \u0434\u0432\u0443\u0445 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f\u0445 \u2014 \r\n\u0441\u0442\u0440\u043e\u043a\u0430\u0445 \u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u0430\u0445;\r\n- \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u044d\u0442\u0438\u043c \u0441\u0442\u0440\u043e\u043a\u0430\u043c \u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u0430\u043c \r\n\u043c\u0435\u0442\u043e\u043a.\r\n\r\n\u041c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u0432 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \r\n\u043a\u043e\u043d\u0441\u043e\u043b\u0438 Python. \u0427\u0442\u043e\u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 Pandas, \u043d\u0443\u0436\u043d\u043e \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0451 \u043c\u043e\u0434\u0443\u043b\u044c:\r\n\r\n>>> import pandas as pd\r\n\r\n\r\n\r\n\u0415\u0441\u043b\u0438 \u0432 \u0432\u0430\u0448\u0435\u043c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0438 \u043d\u0435\u0442 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \r\nPandas, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0435\u0451 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0430\u043a\u0435\u0442\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 PIP.\r\n\r\n\u0421\u0440\u0430\u0437\u0443 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \r\n\u0442\u0430\u043a\u0443\u044e \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e: \u043d\u0430\u0448\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u0438\u0449\u0435\u0442 Python-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0432 \u043d\u043e\u0432\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443. \u041a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432 \u0442\u0430\u043a \u043c\u043d\u043e\u0433\u043e, \u0447\u0442\u043e \u043e\u0442\u0431\u0438\u0440\u0430\u0442\u044c \u0438\u0445 \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u0431\u044b\u043b\u043e \u0431\u044b \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043e\u043b\u0433\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u0441 \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0434\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.\r\n\r\n\u041d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0442 \u0438\u043c\u0435\u043d\u0430 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432 (name), \u0433\u043e\u0440\u043e\u0434\u0430 \r\n\u043f\u0440\u043e\u0436\u0438\u0432\u0430\u043d\u0438\u044f (city), \u0432\u043e\u0437\u0440\u0430\u0441\u0442 (age) \u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u0430\u043b\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043e\u043d\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0432 \u0442\u0435\u0441\u0442\u0435 \u043f\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e (py-score):\r\n\r\n name city age py-score \r\n101 Xavier Mexico City 41 88.0 \r\n102 Ann Toronto 28 79.0 \r\n103 Jana Prague 33 81.0 \r\n104 Yi Shanghai 34 80.0 \r\n105 Robin Manchester 38 68.0 \r\n106 Amal Cairo 31 61.0 \r\n107 Nori Osaka 37 84.0 \r\n\r\n\r\n\u0412 \u044d\u0442\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043f\u0435\u0440\u0432\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \r\n\u043c\u0435\u0442\u043a\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 (name, city \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435). \u041f\u0435\u0440\u0432\u044b\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043c\u0435\u0442\u043a\u0438 \u0441\u0442\u0440\u043e\u043a (101, 102 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435). \u0412\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445.\r\n\r\n\u0415\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0441\u043e\u0437\u0434\u0430\u0442\u044c data frame. \r\n\u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0432\u0438\u0434\u0435 \u0434\u0432\u0443\u043c\u0435\u0440\u043d\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430, \u043a\u043e\u0440\u0442\u0435\u0436\u0430 \u0438\u043b\u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 NumPy . \u0422\u0430\u043a\u0436\u0435 \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u0441\u043b\u043e\u0432\u0430\u0440\u044c, Pandas Series \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0442\u0438\u043f\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043d\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e\u0442\u0441\u044f.\r\n\r\n\u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u0441\u043b\u043e\u0432\u0430\u0440\u044c:\r\n\r\n>>> data = { ... 'name': ['Xavier', 'Ann', 'Jana', 'Yi', 'Robin', \r\n'Amal', 'Nori'], ... 'city': ['Mexico City', 'Toronto', 'Prague', 'Shanghai', ... 'Manchester', 'Cairo', 'Osaka'], ... 'age': [41, 28, 33, 34, 38, 31, 37], ... 'py-score': [88.0, 79.0, 81.0, 80.0, 68.0, 61.0, 84.0] ... } >>> row_labels = [101, 102, 103, 104, 105, 106, 107]\r\n\r\n\r\n\r\n \r\n\r\n\r\n\u0427\u0438\u0442\u0430\u0439\u0442\u0435 \u0442\u0430\u043a\u0436\u0435:\r\n\r\n\u0420\u0430\u0431\u043e\u0442\u0430 \u0441\u043e \u0441\u043b\u043e\u0432\u0430\u0440\u044f\u043c\u0438 \u0432 Python: \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \r\n\u0437\u043d\u0430\u0442\u044c \u0438 \u043a\u0430\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \r\n\r\n\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 data\u2014 \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \r\nPython , \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u043b\u043e\u0432\u0430\u0440\u044c, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0434\u0430\u043d\u043d\u044b\u0435 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432. \u041e\u043d\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043c\u0435\u0442\u043a\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432:\r\n\r\n- 'name'\r\n- 'city'\r\n- 'age'\r\n- 'py-score'\r\n\r\n\u0410 row_labels \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u043f\u0438\u0441\u043e\u043a, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \r\n\u043c\u0435\u0442\u043a\u0438 \u0441\u0442\u0440\u043e\u043a, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u0441\u043e\u0431\u043e\u0439 \u0447\u0438\u0441\u043b\u0430 \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 \u043e\u0442 101 \u0434\u043e 107.\r\n\r\n\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c Pandas DataFrame:\r\n\r\n>>> df = pd.DataFrame(data=data, index=row_labels) >>> \r\ndf name city age py-score 101 Xavier Mexico City 41 88.0 102 Ann Toronto 28 79.0 103 Jana Prague 33 81.0 104 Yi Shanghai 34 80.0 105 Robin Manchester 38 68.0 106 Amal Cairo 31 61.0 107 Nori Osaka 37 84.0\r\n\r\n\u0417\u0434\u0435\u0441\u044c df \u2014 \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0430\u044f \r\n\u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043d\u0430\u0448 \u043e\u0431\u044a\u0435\u043a\u0442 DataFrame. \u041e\u043d \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u0430\u044f \u0432\u044b\u0448\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432, \u0438 \u0438\u043c\u0435\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438:\r\n\r\n- \u041c\u0435\u0442\u043a\u0438 \u0441\u0442\u0440\u043e\u043a \u043e\u0442 101 \u0434\u043e 107;\r\n- \u041c\u0435\u0442\u043a\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 'name', 'city', 'age' \u0438 'py-score';\r\n- \u0414\u0430\u043d\u043d\u044b\u0435: \u0438\u043c\u0435\u043d\u0430 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432, \u0433\u043e\u0440\u043e\u0434\u0430, \u0432\u043e\u0437\u0440\u0430\u0441\u0442 \r\n\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0442\u0435\u0441\u0442\u043e\u0432 Python.\r\n\r\n\u0412 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u043c\u0435\u0442\u043a\u0438 \u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \r\n\u0438\u0437 df: \u043a\u0440\u0430\u0441\u043d\u044b\u0435 \u2014 \u043c\u0435\u0442\u043a\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432, \u0441\u0438\u043d\u0438\u0435 \u2014 \u043c\u0435\u0442\u043a\u0438 \u0441\u0442\u0440\u043e\u043a, \u0437\u0435\u043b\u0451\u043d\u044b\u0435 \u2014 \u0434\u0430\u043d\u043d\u044b\u0435.\r\n\r\n0 name city age py-score \r\n101 Xavier Mexico City 41 88.0 \r\n102 Ann Toronto 28 79.0 \r\n103 Jana Prague 33 81.0 \r\n104 Yi Shanghai 34 80.0 \r\n105 Robin Manchester 38 68.0 \r\n106 Amal Cairo 31 61.0 \r\n107 Nori Osaka 37 84.0 \r\n\r\n\r\n\u0418\u043d\u043e\u0433\u0434\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u044b Pandas DataFrames \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u0435, \r\n\u0447\u0442\u043e \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e. \u0427\u0442\u043e\u0431\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c \u043c\u0435\u0442\u043e\u0434\u043e\u043c head() , \u0430 \u0434\u043b\u044f \u043f\u043e\u043a\u0430\u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u2014 tail() . \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 n \u0432 \u0441\u043a\u043e\u0431\u043a\u0430\u0445 \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0440\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c:\r\n\r\n>>> df.head(n=2) name city age py-score 101 Xavier Mexico City \r\n41 88.0 102 Ann Toronto 28 79.0\r\n\r\n>>> df.tail(n=2) name city age py-score 106 Amal Cairo 31 61.0 \r\n107 Nori Osaka 37 84.0\r\n\r\n\r\n\r\n\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435. \u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \r\nPandas DataFrame \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0438\u043b\u0438 \u043a\u0430\u043a Pandas Series \u0441 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438.\r\n\r\n\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0442\u043e\u043b\u0431\u0446\u0430\u043c \u0432 Pandas DataFrame \u043c\u043e\u0436\u043d\u043e \r\n\u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c \u0438\u0437 \u0441\u043b\u043e\u0432\u0430\u0440\u044f, \u2014 \u044d\u0442\u043e \u0441\u0430\u043c\u044b\u0439 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431:\r\n\r\n>>> cities = df['city'] >>> cities 101 Mexico City 102 \r\nToronto 103 Prague 104 Shanghai 105 Manchester 106 Cairo 107 Osaka Name: city, dtype: object\r\n\r\n\u0415\u0441\u043b\u0438 \u0438\u043c\u044f \u0441\u0442\u043e\u043b\u0431\u0446\u0430 \u2014 \u0441\u0442\u0440\u043e\u043a\u0430, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0430\u044f \r\n\u0432 \u0432\u0438\u0434\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 Python [ https:\/\/docs.python.org\/3\/reference\/lexical_analysis.html#identifiers ] , \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043d\u0435\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c \u0447\u0435\u0440\u0435\u0437 \u0442\u043e\u0447\u043a\u0443, \u0442\u043e \u0435\u0441\u0442\u044c \u0442\u0435\u043c \u0436\u0435 \u043f\u0443\u0442\u0451\u043c, \u043a\u0430\u043a \u0438 \u0434\u043b\u044f \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u043a\u043b\u0430\u0441\u0441\u0430. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0438\u0437\u0432\u043b\u0435\u0447\u044c \u0442\u0430\u043a\u0438\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0432\u0441\u0451 \u0442\u043e\u0442 \u0436\u0435 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0441 \u043c\u0435\u0442\u043a\u043e\u0439 'city', \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0439 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u043c\u0435\u0441\u0442\u043e\u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0438 \u043d\u0430\u0448\u0438\u0445 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432:\r\n\r\n>>> df.city 101 Mexico City 102 Toronto 103 Prague 104 Shanghai \r\n105 Manchester 106 Cairo 107 Osaka Name: city, dtype: object\r\n\r\n\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u043c\u044b \u0438\u0437\u0432\u043b\u0435\u043a\u043b\u0438 \u043a\u0430\u043a \u0434\u0430\u043d\u043d\u044b\u0435, \r\n\u0442\u0430\u043a \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043c\u0435\u0442\u043a\u0438 \u0441\u0442\u0440\u043e\u043a:\r\n \r\n\u0418\u043d\u0444\u043e\u0433\u0440\u0430\u0444\u0438\u043a\u0430: \u041a\u0430\u0442\u044f \u041f\u0430\u0432\u043b\u043e\u0432\u0441\u043a\u0430\u044f \u0434\u043b\u044f Skillbox Media\r\n\r\n\u041a\u0430\u0436\u0434\u044b\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 Pandas DataFrame \u2014 \u044d\u0442\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \r\n\u043a\u043b\u0430\u0441\u0441\u0430 Pandas.Series \u2014 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043e\u0434\u043d\u043e\u043c\u0435\u0440\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u0438\u0445 \u043c\u0435\u0442\u043a\u0438. \u0412\u044b\u0437\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0438\u0437 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 Series \u043c\u043e\u0436\u043d\u043e \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438\u0437 \u0441\u043b\u043e\u0432\u0430\u0440\u044f, \u0442\u043e \u0435\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0435\u0433\u043e \u043c\u0435\u0442\u043a\u0443 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043a\u043b\u044e\u0447\u0430:\r\n\r\n>>> cities[102] 'Toronto'\r\n\r\n\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 'Toronto' \u2014 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \r\n\u0434\u0430\u043d\u043d\u044b\u0445, \u0430 102 \u2014 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0430\u044f \u043c\u0435\u0442\u043a\u0430. \u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 [ #stk-2 ] \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 Pandas DataFrame.\r\n\r\n\u0414\u043e\u0441\u0442\u0443\u043f \u043a\u043e \u0432\u0441\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \r\n\u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u043a\u0441\u0435\u0441\u0441\u043e\u0440\u0430 .loc[] :\r\n\r\n>>> df.loc[103] name Jana city Prague age 33 py-score 81.0 Name: \r\n103, dtype: object\r\n\r\n\u041d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043c\u044b \u0438\u0437\u0432\u043b\u0435\u043a\u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0443, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \r\n\u043c\u0435\u0442\u043a\u0435 103, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0443\u044e \u0434\u0430\u043d\u043d\u044b\u0435 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043a\u0438 \u043f\u043e \u0438\u043c\u0435\u043d\u0438 Jana. \u041a\u0440\u043e\u043c\u0435 \u0441\u0430\u043c\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u0438 \u043c\u0435\u0442\u043a\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432:\r\n \r\n\u0418\u043d\u0444\u043e\u0433\u0440\u0430\u0444\u0438\u043a\u0430: \u041a\u0430\u0442\u044f \u041f\u0430\u0432\u043b\u043e\u0432\u0441\u043a\u0430\u044f \u0434\u043b\u044f Skillbox Media\r\n\r\n\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u2014 \u0442\u043e\u0436\u0435 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \r\nPandas.Series.\r\n\r\n\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 Pandas DataFrame\r\n\r\n\u041a\u0430\u043a \u0443\u0436\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u043e\u0441\u044c, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \r\n\u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0434\u0430\u0442\u0430 \u0444\u0440\u0435\u0439\u043c. \u0412 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0432\u044b \u043d\u0430\u0443\u0447\u0438\u0442\u0435\u0441\u044c \u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430 DataFrame, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f:\r\n\r\n- \u0441\u043b\u043e\u0432\u0430\u0440\u0438 Python;\r\n- \u0441\u043f\u0438\u0441\u043a\u0438 Python;\r\n- \u0434\u0432\u0443\u043c\u0435\u0440\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b NumPy;\r\n- \u0444\u0430\u0439\u043b\u044b.\r\n\r\n\u0415\u0441\u0442\u044c \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \r\n\u0443\u0437\u043d\u0430\u0442\u044c \u0438\u0437 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 .\r\n\r\n\u041d\u0430\u0447\u043d\u0451\u043c \u0441 \u0438\u043c\u043f\u043e\u0440\u0442\u0430 NumPy, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f \r\n\u043d\u0430\u043c \u0434\u0430\u043b\u044c\u0448\u0435:\r\n\r\n>>> import numpy as np >>> import Pandas as pd\r\n\r\n\u0412\u043e\u0442 \u0438 \u0432\u0441\u0451. \u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \r\n\u0432\u0438\u0434\u043e\u0432 DataFrame.\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438\u0437 \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u0439\r\n\r\n\u041a\u0430\u043a \u0432\u044b \u0443\u0436\u0435 \u0437\u043d\u0430\u0435\u0442\u0435, Pandas DataFrame \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \r\n\u0438\u0437 \u0441\u043b\u043e\u0432\u0430\u0440\u044f Python:\r\n\r\n>>> d = {'x': [1, 2, 3], 'y': np.array([2, 4, 8]), 'z': 100} >>> \r\npd.DataFrame(d) x y z 0 1 2 100 1 2 4 100 2 3 8 100\r\n\r\n\u041a\u043b\u044e\u0447\u0438 \u0441\u043b\u043e\u0432\u0430\u0440\u044f \u2014 \u044d\u0442\u043e \u043c\u0435\u0442\u043a\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 DataFrame, \r\n\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0432\u0430\u0440\u044f \u2014 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0441\u0442\u043e\u043b\u0431\u0446\u0430\u0445 DataFrame. \u041e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u043a\u043e\u0440\u0442\u0435\u0436\u0435 [ https:\/\/docs.python.org\/3\/tutorial\/datastructures.html#tuples-and-sequences ] , \u0441\u043f\u0438\u0441\u043a\u0435 [ https:\/\/docs.python.org\/3\/tutorial\/datastructures.html#more-on-lists ] , \u043e\u0434\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u043c \u043c\u0430\u0441\u0441\u0438\u0432\u0435 NumPy , \u043e\u0431\u044a\u0435\u043a\u0442\u0435 Pandas Series \u0438\u043b\u0438 \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u0442\u0438\u043f\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445. \u041c\u043e\u0436\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u0441\u0442\u043e\u043b\u0431\u0446\u0443.\r\n\r\n\u041c\u043e\u0436\u043d\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \r\n\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 columns, \u0430 \u043c\u0435\u0442\u043e\u043a \u0441\u0442\u0440\u043e\u043a \u2014 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e index:\r\n\r\n>>> pd.DataFrame(d, index=[100, 200, 300], columns=['z', 'y', \r\n'x']) z y x 100 100 2 1 200 100 4 2 300 100 8 3\r\n\r\n\u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u043c\u044b \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u043c\u0435\u0442\u043a\u0438 \u0441\u0442\u0440\u043e\u043a 100, \r\n200 \u0438 300, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0438\u0437\u043c\u0435\u043d\u0438\u0432 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432: z, y, x.\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u043e\u0432\r\n\r\n\u0414\u0440\u0443\u0433\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u043e\u0437\u0434\u0430\u0442\u044c Pandas DataFrame \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \r\n\u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u0439:\r\n\r\n>>> l = [{'x': 1, 'y': 2, 'z': 100}, ... {'x': 2, 'y': 4, 'z': \r\n100}, ... {'x': 3, 'y': 8, 'z': 100}] >>> pd.DataFrame(l) x y z 0 1 2 100 1 2 4 100 2 3 8 100\r\n\r\n\u041e\u043f\u044f\u0442\u044c \u0436\u0435, \u043a\u043b\u044e\u0447\u0438 \u0441\u043b\u043e\u0432\u0430\u0440\u044f \u2014 \u044d\u0442\u043e \u043c\u0435\u0442\u043a\u0438 \r\n\u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432, \u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0432\u0430\u0440\u044f \u2014 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 DataFrame.\r\n\r\n\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \r\n\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0441\u043f\u0438\u0441\u043a\u0438 \u0438 \u0434\u0430\u0436\u0435 \u0441\u043f\u0438\u0441\u043a\u0438 \u0441\u043f\u0438\u0441\u043a\u043e\u0432. \u0412 \u044d\u0442\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043b\u0443\u0447\u0448\u0435 \u044f\u0432\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043a\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432, \u0441\u0442\u0440\u043e\u043a \u0438\u043b\u0438 \u0438 \u0442\u043e\u0433\u043e \u0438 \u0434\u0440\u0443\u0433\u043e\u0433\u043e:\r\n\r\n>>> l = [[1, 2, 100], ... [2, 4, 100], ... [3, 8, 100]] >>> \r\npd.DataFrame(l, columns=['x', 'y', 'z']) x y z 0 1 2 100 1 2 4 100 2 3 8 100\r\n\r\n\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u0440\u0442\u0435\u0436\u0435\u0439 \u2014 \r\n\u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u0435 \u0438\u043c\u0438 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0441\u043f\u0438\u0441\u043a\u0438 \u0432 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u043c \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0435.\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438\u0437 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 NumPy\r\n\r\n\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0434\u0432\u0443\u043c\u0435\u0440\u043d\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \r\nNumPy \u0432 DataFrame \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 \u0432 \u0432\u044b\u0448\u0435\u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c \u0441\u043f\u0438\u0441\u043a\u043e\u043c:\r\n\r\n>>> arr = np.array([[1, 2, 100], ... [2, 4, 100], ... [3, 8, 100]]) \r\n>>> df_ = pd.DataFrame(arr, columns=['x', 'y', 'z']) >>> df_ x y z 0 1 2 100 1 2 4 100 2 3 8 100\r\n\r\n\u0425\u043e\u0442\u044f \u044d\u0442\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u043e\u0445\u043e\u0436\u0438\u043c \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439, \r\n\u0443 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c \u043e\u0434\u043d\u043e \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e: \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 copy. \u041a\u043e\u0433\u0434\u0430 \u0434\u043b\u044f copy \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 False (\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e), \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 NumPy \u043d\u0435 \u043a\u043e\u043f\u0438\u0440\u0443\u044e\u0442\u0441\u044f. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u044e\u0442\u0441\u044f DataFrame Pandas. \u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0435 \u043c\u0430\u0441\u0441\u0438\u0432, \u0432\u0430\u0448 DataFrame \u0442\u043e\u0436\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0441\u044f:\r\n\r\n>>> arr[0, 0] = 1000 >>> df_ x y z 0 1000 2 100 1 2 4 \r\n100 2 3 8 100\r\n\r\n\u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0435 \u043f\u0435\u0440\u0432\u044b\u0439 \r\n\u044d\u043b\u0435\u043c\u0435\u043d\u0442 arr, \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0435 df_.\r\n\r\n\r\n\r\n\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435. \u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \r\n\u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u043e\u0436\u0435\u0442 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u043e\u0431\u044a\u0451\u043c\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445.\r\n\r\n\u0415\u0441\u043b\u0438 \u0436\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c copy=True, \u0432\u043c\u0435\u0441\u0442\u043e \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \r\n\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432 df_ \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u043a\u043e\u043f\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 arr.\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438\u0437 \u0444\u0430\u0439\u043b\u043e\u0432\r\n\r\n\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \r\n\u0438 \u043c\u0435\u0442\u043a\u0438 \u0438\u0437 Pandas DataFrame \u0432 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0444\u0430\u0439\u043b\u043e\u0432, \u0432\u043a\u043b\u044e\u0447\u0430\u044f CSV, Excel, SQL, JSON \u0438 \u0434\u0440\u0443\u0433\u0438\u0435, \u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442. \u042d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043c\u043e\u0449\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f.\r\n\r\n\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u043c DataFrame \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432 \u0432 \u0444\u0430\u0439\u043b CSV \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \r\n\u043c\u0435\u0442\u043e\u0434\u0430 to_csv() :\r\n\r\n>>> df.to_csv('data.csv')\r\n\r\n\u041f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0441\u043e\u0437\u0434\u0430\u0441\u0442 CSV-\u0444\u0430\u0439\u043b \r\n , \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e data.csv \u0438\u0437 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430:\r\n\r\n,name,city,age,py-score\r\n\r\n101,Xavier,Mexico City,41,88.0\r\n\r\n102,Ann,Toronto,28,79.0\r\n\r\n103,Jana,Prague,33,81.0\r\n\r\n104,Yi,Shanghai,34,80.0\r\n\r\n105,Robin,Manchester,38,68.0\r\n\r\n106,Amal,Cairo,31,61.0\r\n\r\n107,Nori,Osaka,37,84.0\r\n\r\n\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u043c \u0435\u0433\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e read_csv() \r\n:\r\n\r\n>>> pd.read_csv('data.csv', index_col=0) name city age py-score \r\n101 Xavier Mexico City 41 88.0 102 Ann Toronto 28 79.0 103 Jana Prague 33 81.0 104 Yi Shanghai 34 80.0 105 Robin Manchester 38 68.0 106 Amal Cairo 31 61.0 107 Nori Osaka 37 84.0\r\n\r\nindex_col=0 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043c\u0435\u0442\u043a\u0438 \u0441\u0442\u0440\u043e\u043a \r\n\u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u044b \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u0435 CSV-\u0444\u0430\u0439\u043b\u0430.\r\n\r\n\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u043a \u0438 \u0434\u0430\u043d\u043d\u044b\u0445\r\n\r\n\u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 DataFrame, \u043c\u043e\u0436\u043d\u043e \r\n\u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0442\u044c \u0438\u0437 \u043d\u0435\u0433\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432 Pandas \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f:\r\n\r\n- \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u043a \u0441\u0442\u0440\u043e\u043a \u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \r\n\u0432 \u0432\u0438\u0434\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0435\u0439;\r\n- \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0432\u0438\u0434\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \r\nNumPy;\r\n- \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0442\u0438\u043f\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \r\n;\r\n- \u0430\u043d\u0430\u043b\u0438\u0437 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 DataFrame.\u041c\u0435\u0442\u043a\u0438 Pandas \r\nDataFrame \u043a\u0430\u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\r\n\r\n\u041c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043c\u0435\u0442\u043a\u0438 \u0441\u0442\u0440\u043e\u043a DataFrame \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \r\n\u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 index \u0438 \u043c\u0435\u0442\u043a\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e columns :\r\n\r\n>>> df.index Int64Index([1, 2, 3, 4, 5, 6, 7], dtype='int64') \r\n>>> df.columns Index(['name', 'city', 'age', 'py-score'], dtype='object')\r\n\r\n\u041a\u0430\u043a \u0438 \u0432 \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \r\n\u0432 Python, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 df.columns:\r\n\r\n>>> df.columns[1] 'city'\r\n\r\n\u041f\u043e\u043c\u0438\u043c\u043e \u044d\u0442\u0438\u0445 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0434\u0440\u0443\u0433\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \r\n\u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044e \u043f\u043e \u043c\u0435\u0442\u043a\u0430\u043c \u0441\u0442\u0440\u043e\u043a \u0438\u043b\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432. \u041e\u0434\u043d\u0430\u043a\u043e \u0432 \u043d\u0438\u0445 \u0440\u0435\u0434\u043a\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c, \u0442\u0430\u043a \u043a\u0430\u043a Pandas \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u0438\u0434\u044b \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439 \u0432 DataFrames, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u0434\u0430\u043b\u0435\u0435.\r\n\r\n\u042d\u0442\u043e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438 \u0434\u043b\u044f \r\n\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u043e\u043a:\r\n\r\n>>> df.index = np.arange(10, 17) >>> df.index Int64Index([10, \r\n11, 12, 13, 14, 15, 16], dtype='int64') >>> df name city age py-score 10 Xavier Mexico City 41 88.0 11 Ann Toronto 28 79.0 12 Jana Prague 33 81.0 13 Yi Shanghai 34 80.0 14 Robin Manchester 38 68.0 15 Amal Cairo 31 61.0 16 Nori Osaka 37 84.0\r\n\r\n\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 numpy.arange() \r\n\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043c\u0435\u0442\u043e\u043a \u0441\u0442\u0440\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0446\u0435\u043b\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u043e\u0442 10 \u0434\u043e 16. \u0418\u043c\u0435\u0439\u0442\u0435 \u0432 \u0432\u0438\u0434\u0443: \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u043f\u044b\u0442\u0430\u0435\u0442\u0435\u0441\u044c \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 index \u0438\u043b\u0438 columns, \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u043e\u0448\u0438\u0431\u043a\u0443 TypeError.\r\n\r\n\r\n\r\n\u0423\u0437\u043d\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043e \u043c\u0435\u0442\u043e\u0434\u0435 arange() \u043c\u043e\u0436\u043d\u043e \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \r\nNumPy arange(): How to Use np.arange() \u0414\u0430\u043d\u043d\u044b\u0435 \u0432 \u0432\u0438\u0434\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 NumPy\r\n\r\n\u0418\u043d\u043e\u0433\u0434\u0430 \u0432\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0438\u0437\u0432\u043b\u0435\u0447\u044c \r\n\u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 Pandas DataFrame \u0431\u0435\u0437 \u043c\u0435\u0442\u043e\u043a. \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432 NumPy \u0441 \u043d\u0435\u043c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043c\u0435\u0442\u043e\u0434 to_numpy() \u0438\u043b\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e values :\r\n\r\n>>> df.to_numpy() array([['Xavier', 'Mexico City', 41, 88.0], \r\n['Ann', 'Toronto', 28, 79.0], ['Jana', 'Prague', 33, 81.0], ['Yi', 'Shanghai', 34, 80.0], ['Robin', 'Manchester', 38, 68.0], ['Amal', 'Cairo', 31, 61.0], ['Nori', 'Osaka', 37, 84.0]], dtype=object)\r\n\r\n\u0418 to_numpy(), \u0438 values \u0434\u0430\u044e\u0442 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \r\n\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442: \u043e\u043d\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u043c\u0430\u0441\u0441\u0438\u0432 NumPy \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438\u0437 DataFrame Pandas:\r\n \r\n\u0418\u043d\u0444\u043e\u0433\u0440\u0430\u0444\u0438\u043a\u0430: \u041a\u0430\u0442\u044f \u041f\u0430\u0432\u043b\u043e\u0432\u0441\u043a\u0430\u044f \u0434\u043b\u044f Skillbox Media\r\n\r\n\u041e\u0434\u043d\u0430\u043a\u043e \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 Pandas \r\n\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c to_numpy(), \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u044d\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u0433\u0438\u0431\u043a\u0438\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0441 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438:\r\n\r\n- dtype \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \r\n\u0442\u0438\u043f \u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0435\u0433\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 None;\r\n- copy \u2014 \u0435\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \r\n\u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 DataFrame, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0432 False. \u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 True.\r\n\r\n\u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0432\u0430\u043c, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0447\u0430\u0449\u0435 \u0431\u0443\u0434\u0435\u0442 \r\n\u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0442\u044c\u0441\u044f values, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432 \u0441\u0442\u0430\u0440\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0445, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e to_numpy() \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u0431\u044b\u043b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0432 Pandas 0.24.0.\u0422\u0438\u043f\u044b \u0434\u0430\u043d\u043d\u044b\u0445\r\n\r\n\u0422\u0438\u043f\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u0438\u043b\u0438 dtypes, \u0432\u0430\u0436\u043d\u044b, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \r\n\u043e\u0431\u044a\u0451\u043c \u043f\u0430\u043c\u044f\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0432\u0430\u0448 DataFrame, \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u0438 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0441\u0447\u0451\u0442\u043e\u0432.\r\n\r\nPandas \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d \u043d\u0430 \u0442\u0438\u043f\u0430\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \r\nNumPy . \u041e\u0434\u043d\u0430\u043a\u043e \u0432 Pandas 1.0 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0442\u0438\u043f\u044b:\r\n\r\n- BooleanDtype [ https:\/\/pandas.pydata.org\/docs\/reference\/api\/pandas.BooleanDtype.html#pandas.BooleanDtype ] \r\n\u0438 BooleanArray [ https:\/\/pandas.pydata.org\/docs\/reference\/api\/pandas.arrays.BooleanArray.html#pandas.arrays.BooleanArray ] \u2014 \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0438 \u0442\u0440\u0451\u0445\u0437\u043d\u0430\u0447\u043d\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438 \u041a\u043b\u0438\u043d\u0438 [ https:\/\/pandas.pydata.org\/docs\/user_guide\/boolean.html#kleene-logical-operations ] .\r\n- StringDtype [ https:\/\/pandas.pydata.org\/docs\/reference\/api\/pandas.StringDtype.html#pandas.StringDtype ] \r\n\u0438 StringArray \u2014 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0435 \u0442\u0438\u043f\u044b.\r\n\r\n\u0422\u0438\u043f\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u0430 Pandas DataFrame \r\n\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e dtypes:\r\n\r\n>>> df.dtypes name object city object age int64 py-score float64 \r\ndtype: object\r\n\r\n\u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, dtypes \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 Series \u0441 \u0438\u043c\u0435\u043d\u0430\u043c\u0438 \r\n\u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043c\u0435\u0442\u043e\u043a \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \u0442\u0438\u043f\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439.\r\n\r\n\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0442\u0438\u043f \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0434\u043d\u043e\u0433\u043e \r\n\u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 astype() :\r\n\r\n>>> df_ = df.astype(dtype={'age': np.int32, 'py-score': np.float32}) \r\n>>> df_.dtypes name object city object age int32 py-score float32 dtype: object\r\n\r\n\u0421\u0430\u043c\u044b\u0439 \u0432\u0430\u0436\u043d\u044b\u0439 \u0438 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \r\n\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0434\u043b\u044f astype() \u2014 dtype. \u0415\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0442\u0438\u043f \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043b\u0438 \u0441\u043b\u043e\u0432\u0430\u0440\u044c. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u043e \u0441\u043b\u043e\u0432\u0430\u0440\u0451\u043c \u043a\u043b\u044e\u0447\u0438 \u0431\u0443\u0434\u0443\u0442 \u0438\u043c\u0435\u043d\u0430\u043c\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432, \u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u2014 \u0442\u0438\u043f\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445.\r\n\r\n\u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u0442\u0438\u043f\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 age \r\n\u0438 py-score \u0432 DataFrame df \u2014 int64 \u0438 float64 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0442\u043e \u0435\u0441\u0442\u044c 64-\u0431\u0438\u0442\u043d\u044b\u0435 (\u0438\u043b\u0438 8-\u0431\u0430\u0439\u0442\u043e\u0432\u044b\u0435) \u0446\u0435\u043b\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u0438 \u0447\u0438\u0441\u043b\u0430 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439. \u0410 \u0432 df_ \u0434\u043b\u044f \u0442\u0435\u0445 \u0436\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f 32-\u0431\u0438\u0442\u043d\u044b\u0435 (4-\u0431\u0430\u0439\u0442\u043e\u0432\u044b\u0435) \u0442\u0438\u043f\u044b.\u0420\u0430\u0437\u043c\u0435\u0440 Pandas DataFrame\r\n\r\n\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u044b ndim \r\n, size \u0438 shape \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044e \u0438 \u043e\u0431\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0434\u0430\u043d\u043d\u044b\u0445:\r\n\r\n>>> df_.ndim 2 >>> df_.shape (7, 4) >>> df_.size \r\n28\r\n\r\n\u042d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u044b DataFrame \u0438\u043c\u0435\u044e\u0442 \u0434\u0432\u0430 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f (\u0441\u0442\u0440\u043e\u043a\u0438 \r\n\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u044b), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 ndim \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 2. \u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 Series \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u043d\u0435\u0433\u043e ndim \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a 1.\r\n\r\n\u0412 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0435 shape \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043a\u043e\u0440\u0442\u0435\u0436 \u0441 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \r\n\u0441\u0442\u0440\u043e\u043a (\u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 7) \u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 (4). \u041d\u0430\u043a\u043e\u043d\u0435\u0446, size \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0446\u0435\u043b\u043e\u0435 \u0447\u0438\u0441\u043b\u043e, \u0440\u0430\u0432\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432 DataFrame (28).\r\n\r\n\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e memory_usage() \r\n\u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u043c\u044f\u0442\u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446:\r\n\r\n>>> df_.memory_usage() Index 56 name 56 city 56 age 28 py-score \r\n28 dtype: int64\r\n\r\n\u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, memory_usage() \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 Series \r\n\u0441 \u0438\u043c\u0435\u043d\u0430\u043c\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043c\u0435\u0442\u043e\u043a \u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u0431\u0430\u0439\u0442\u0430\u0445 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0434\u0430\u043d\u043d\u044b\u0445. \u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u043c, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u043c \u043c\u0435\u0442\u043a\u0438 \u0441\u0442\u0440\u043e\u043a, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 index=False.\r\n\r\n\u0412 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u043c \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \r\n\u0434\u0432\u0430 \u0441\u0442\u043e\u043b\u0431\u0446\u0430 age \u0438 py-score \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043f\u043e 28 \u0431\u0430\u0439\u0442\u043e\u0432 \u043f\u0430\u043c\u044f\u0442\u0438: \u0441\u0442\u043e\u043b\u0431\u0446\u044b \u0438\u043c\u0435\u044e\u0442 \u0441\u0435\u043c\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u043a\u0430\u0436\u0434\u043e\u0435 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0446\u0435\u043b\u043e\u0435 \u0447\u0438\u0441\u043b\u043e, \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0449\u0435\u0435 32 \u0431\u0438\u0442\u0430, \u0438\u043b\u0438 4 \u0431\u0430\u0439\u0442\u0430. 7 \u0446\u0435\u043b\u044b\u0445 \u0447\u0438\u0441\u0435\u043b, \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u043d\u0430 4 \u0431\u0430\u0439\u0442\u0430, \u0434\u0430\u044e\u0442 \u0432 \u043e\u0431\u0449\u0435\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 28 \u0431\u0430\u0439\u0442\u043e\u0432.\r\n\r\n\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445\r\n\r\n\u0412\u044b \u0443\u0436\u0435 \u0437\u043d\u0430\u0435\u0442\u0435, \u043a\u0430\u043a \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u0443\u044e \r\n\u0441\u0442\u0440\u043e\u043a\u0443 \u0438\u043b\u0438 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 Pandas DataFrame \u0432 \u0432\u0438\u0434\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 Series:\r\n\r\n>>> df['name'] 10 Xavier 11 Ann 12 Jana 13 Yi 14 Robin 15 Amal \r\n16 Nori Name: name, dtype: object >>> df.loc[10] name Xavier city Mexico City age 41 py-score 88 Name: 10, dtype: object\r\n\r\n\u0412 \u043f\u0435\u0440\u0432\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0442\u043e\u043b\u0431\u0446\u0443 \r\n\u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e name \u2014 \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 \u0438\u0437 \u0441\u043b\u043e\u0432\u0430\u0440\u044f, \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0435\u0433\u043e \u043c\u0435\u0442\u043a\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043a\u043b\u044e\u0447\u0430. \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u0435\u0441\u043b\u0438 \u043c\u0435\u0442\u043a\u0430 \u0441\u0442\u043e\u043b\u0431\u0446\u0430 \u2014 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 Python, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043d\u0435\u043c\u0443 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0442\u043e\u0447\u043a\u0443. \u0412\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0443 \u043f\u043e \u043c\u0435\u0442\u043a\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e loc[].\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u043a\u0441\u0435\u0441\u0441\u043e\u0440\u043e\u0432\r\n\r\n\u0412 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a loc[], Pandas \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \r\n\u043c\u0435\u0442\u043e\u0434 iloc[] , \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0438\u043b\u0438 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u043f\u043e \u0438\u0445 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u0438\u043d\u0434\u0435\u043a\u0441\u0443. \u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0438\u0437 \u043d\u0438\u0445:\r\n\r\n>>> df.loc[10] name Xavier city Mexico City age 41 py-score 88 \r\nName: 10, dtype: object >>> df.iloc[0] name Xavier city Mexico City age 41 py-score 88 Name: 10, dtype: object\r\n\r\ndf.loc[10] \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0441 \u043c\u0435\u0442\u043a\u043e\u0439 10. \r\n\u0422\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435 df.iloc[0] \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0441 \u043e\u0442\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c\u044b\u043c \u043e\u0442 \u043d\u0443\u043b\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u043c 0, \u0442\u043e \u0435\u0441\u0442\u044c \u043f\u0435\u0440\u0432\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443. \u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u043e\u0431\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u043e\u0434\u043d\u0443 \u0438 \u0442\u0443 \u0436\u0435 \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 Series.\r\n\r\n\u0412\u0441\u0435\u0433\u043e \u0443 Pandas \u0447\u0435\u0442\u044b\u0440\u0435 \u0430\u043a\u0441\u0435\u0441\u0441\u043e\u0440\u0430:\r\n\r\n- loc[] \u2014 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043c\u0435\u0442\u043a\u0438 \u0441\u0442\u0440\u043e\u043a \u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432, \r\n\u0432\u044b\u0434\u0430\u0451\u0442 Series \u0438\u043b\u0438 DataFrames. \u041c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0446\u0435\u043b\u044b\u0445 \u0441\u0442\u0440\u043e\u043a \u0438\u043b\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432, \u0442\u0430\u043a \u0438 \u0434\u043b\u044f \u0438\u0445 \u0447\u0430\u0441\u0442\u0435\u0439.\r\n- iloc[] \u2014 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u0442\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u043e\u0442 \u043d\u0443\u043b\u044f \r\n\u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0441\u0442\u0440\u043e\u043a \u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432, \u0432\u044b\u0434\u0430\u0435\u0442 Series \u0438\u043b\u0438 DataFrames.\u0422\u0430\u043a\u0436\u0435 \u0433\u043e\u0434\u0438\u0442\u0441\u044f \u0438 \u0434\u043b\u044f \u0446\u0435\u043b\u044b\u0445 \u0441\u0442\u0440\u043e\u043a (\u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432), \u0438 \u0434\u043b\u044f \u0438\u0445 \u0447\u0430\u0441\u0442\u0435\u0439.\r\n- at[] \u2014 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043c\u0435\u0442\u043a\u0438 \u0441\u0442\u0440\u043e\u043a \u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432, \r\n\u0432\u044b\u0434\u0430\u0451\u0442 \u043e\u0434\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445.\r\n- iat[] \u2014 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u0442\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u043e\u0442 \u043d\u0443\u043b\u044f \r\n\u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0441\u0442\u0440\u043e\u043a \u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432, \u0432\u044b\u0434\u0430\u0451\u0442 \u043e\u0434\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445.\r\n\r\nloc[] \u0438 iloc[] \u0431\u043e\u043b\u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0435: \u043e\u043d\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \r\n\u0441\u0440\u0435\u0437\u044b \u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 \u0441\u0442\u0438\u043b\u0435 NumPy. \u041f\u043e\u043b\u0443\u0447\u0438\u043c \u0441 \u0438\u0445 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0442\u043e\u043b\u0431\u0446\u0443:\r\n\r\n>>> df.loc[:, 'city'] 10 Mexico City 11 Toronto 12 Prague 13 Shanghai \r\n14 Manchester 15 Cairo 16 Osaka Name: city, dtype: object >>> df.iloc[:, 1] 10 Mexico City 11 Toronto 12 Prague 13 Shanghai 14 Manchester 15 Cairo 16 Osaka Name: city, dtype: object\r\n\r\ndf.loc[:, 'city'] \u0432\u044b\u0434\u0430\u0451\u0442 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 city. \u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \r\n\u0441\u0440\u0435\u0437\u0430 [ https:\/\/docs.python.org\/dev\/library\/functions.html#slice ] [ :] \u0432 \u043c\u0435\u0441\u0442\u0435 \u043c\u0435\u0442\u043a\u0438 \u0441\u0442\u0440\u043e\u043a\u0438 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0432\u0441\u0435 \u0441\u0442\u0440\u043e\u043a\u0438. df.iloc[:, 1] \u0432\u044b\u0434\u0430\u0451\u0442 \u0442\u043e\u0442 \u0436\u0435 \u0441\u0442\u043e\u043b\u0431\u0435\u0446, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u0442\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c\u044b\u0439 \u043e\u0442 \u043d\u0443\u043b\u044f \u0438\u043d\u0434\u0435\u043a\u0441 1 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a\u043e \u0432\u0442\u043e\u0440\u043e\u043c\u0443 \u0441\u0442\u043e\u043b\u0431\u0446\u0443 city.\r\n\r\n\u041a\u0430\u043a \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 NumPy, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \r\n\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0440\u0435\u0437\u044b \u0432\u043c\u0435\u0441\u0442\u0435 \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u0430\u043c\u0438 \u0438\u043b\u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u043c\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u043e\u043a \u0438\u043b\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432:\r\n\r\n>>> df.loc[11:15, ['name', 'city']] name city 11 Ann Toronto 12 \r\nJana Prague 13 Yi Shanghai 14 Robin Manchester 15 Amal Cairo >>> df.iloc[1:6, [0, 1]] name city 11 Ann Toronto 12 Jana Prague 13 Yi Shanghai 14 Robin Manchester 15 Amal Cairo\r\n\r\n\r\n\r\n\u0421\u043e\u0432\u0435\u0442. \u041d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043a\u043e\u0440\u0442\u0435\u0436\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \r\n\u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u0438\u043b\u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u0446\u0435\u043b\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0441\u0442\u0440\u043e\u043a \u0438\u043b\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432. \u041e\u043d\u0438 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u044b \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439 \u0432 NumPy \u0438 Pandas, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u043b\u044f \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0438\u043b\u0438 \u043c\u043d\u043e\u0433\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0439 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u0438 \u0432 Pandas .\r\n\r\n\u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432, \r\n\u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c:\r\n\r\n- \u0441\u0440\u0435\u0437\u044b \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u043e\u043a \u0441 \u043c\u0435\u0442\u043a\u0430\u043c\u0438 \r\n\u043e\u0442 11 \u0434\u043e 15, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u044b \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u043c \u043e\u0442 1 \u0434\u043e 5;\r\n- \u0441\u043f\u0438\u0441\u043a\u0438 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 name \u0438 city, \r\n\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u044b \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u043c 0 \u0438 1.\r\n\r\n\u041e\u0431\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u0438\u0441\u043a\u043e\u043c\u044b\u0445 \r\n\u043f\u044f\u0442\u0438 \u0441\u0442\u0440\u043e\u043a \u0438 \u0434\u0432\u0443\u0445 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432.\r\n\r\n\u0421\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u0432\u0430\u0436\u043d\u043e\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \r\nloc[] \u0438 iloc[]. \u041a\u043e\u0433\u0434\u0430 \u043c\u044b \u0437\u0430\u0434\u0430\u043b\u0438 \u0432 loc[] \u043c\u0435\u0442\u043a\u0438 \u0441\u0442\u0440\u043e\u043a 11:15, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0438 11\u201315. \u0410 \u043a\u043e\u0433\u0434\u0430 \u0432 iloc[] \u0437\u0430\u0434\u0430\u043b\u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u044b 1:6, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u043c\u0438 \u043e\u0442 1 \u0434\u043e 5.\r\n\r\n\u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432 iloc[] \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \r\n\u0441\u0440\u0435\u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f, \u0442\u043e \u0435\u0441\u0442\u044c \u0432\u0442\u043e\u0440\u043e\u0439 \u0438\u043d\u0434\u0435\u043a\u0441 \u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0432\u044b\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u0445. \u042d\u0442\u043e \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u0441\u0440\u0435\u0437\u044b \u0432 Python \u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u044b NumPy. \u0410 \u0432 loc[] \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0438\u043d\u043a\u043b\u044e\u0437\u0438\u0432\u043d\u044b, \u0442\u043e \u0435\u0441\u0442\u044c \u043e\u0431\u0430 \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u0432 \u0432\u044b\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.\r\n\r\n\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u044b \r\n\u0432 iloc[] \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 \u043f\u0440\u0438 \u043d\u0430\u0440\u0435\u0437\u043a\u0435 \u043a\u043e\u0440\u0442\u0435\u0436\u0435\u0439, \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 NumPy:\r\n\r\n>>> df.iloc[1:6:2, 0] 11 Ann 13 Yi 15 Amal Name: name, dtype: \r\nobject\r\n\r\n\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043d\u0443\u0436\u043d\u044b\u0435 \r\n\u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0441\u0442\u0440\u043e\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0440\u0435\u0437\u0430 1:6:2. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u044b\u0431\u043e\u0440\u043a\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u0438 \u0441 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u043c 1 (\u0432\u0442\u043e\u0440\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430), \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0434 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u0441 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u043c 6 (\u0441\u0435\u0434\u044c\u043c\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430) \u0438 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043a\u0430\u0436\u0434\u0443\u044e \u0432\u0442\u043e\u0440\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443.\r\n\r\n\u0412\u043c\u0435\u0441\u0442\u043e \u0441\u0440\u0435\u0437\u0430 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \r\n\u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 Python slice() [ https:\/\/docs.python.org\/3\/library\/functions.html#slice ] , \u0430 \u0442\u0430\u043a\u0436\u0435 numpy.s[] \u0438\u043b\u0438 pd.IndexSlice[] :\r\n\r\n>>> df.iloc[slice(1, 6, 2), 0] 11 Ann 13 Yi 15 Amal Name: name, \r\ndtype: object >>> df.iloc[np.s_[1:6:2], 0] 11 Ann 13 Yi 15 Amal Name: name, dtype: object >>> df.iloc[pd.IndexSlice[1:6:2], 0] 11 Ann 13 Yi 15 Amal Name: name, dtype: object\r\n\r\n\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f loc[] \u0438 iloc[], \u043c\u043e\u0436\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \r\n\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u041e\u0434\u043d\u0430\u043a\u043e, \u043a\u043e\u0433\u0434\u0430 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, Pandas \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0434\u043e\u0441\u0442\u0443\u043f\u0430 at[] \u0438 iat[]:\r\n\r\n>>> df.at[12, 'name'] 'Jana' >>> df.iat[2, 0] 'Jana'\r\n\r\n\u0417\u0434\u0435\u0441\u044c at[] \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u043c\u0435\u043d\u0438 \r\n\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u0430, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043c\u0435\u0442\u043e\u043a \u0441\u0442\u043e\u043b\u0431\u0446\u0430 \u0438 \u0441\u0442\u0440\u043e\u043a\u0438, \u0430 iat[] \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0442\u043e\u0433\u043e \u0436\u0435 \u0438\u043c\u0435\u043d\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432.\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u043a\u0441\u0435\u0441\u0441\u043e\u0440\u043e\u0432\r\n\r\n\u0427\u0442\u043e\u0431\u044b \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c DataFrame \u0447\u0435\u0440\u0435\u0437 \u0430\u043a\u0441\u0435\u0441\u0441\u043e\u0440, \u043d\u0443\u0436\u043d\u043e \r\n\u0437\u0430\u0434\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c Python, \u043c\u0430\u0441\u0441\u0438\u0432 NumPy \u0438\u043b\u0438 \u0447\u0438\u0441\u043b\u043e:\r\n\r\n>>> df.loc[:, 'py-score'] 10 88.0 11 79.0 12 81.0 13 80.0 14 68.0 \r\n15 61.0 16 84.0 Name: py-score, dtype: float64 >>> df.loc[:13, 'py-score'] = [40, 50, 60, 70] >>> df.loc[14:, 'py-score'] = 0 >>> df['py-score'] 10 40.0 11 50.0 12 60.0 13 70.0 14 0.0 15 0.0 16 0.0 Name: py-score, dtype: float64\r\n\r\n\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 df.loc[:13, 'py-score'] = [40, 50, 60, 70] \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \r\n\u043f\u0435\u0440\u0432\u044b\u0435 \u0447\u0435\u0442\u044b\u0440\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0432 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 \u043e\u0442 10 \u0434\u043e 13 \u0441\u0442\u043e\u043b\u0431\u0446\u0430 py-score, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430. df.loc[14:, 'py-score'] = 0 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u044d\u0442\u043e\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u0435 \u0432 0.\r\n\r\n\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e, \u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \r\n\u0434\u043e\u0441\u0442\u0443\u043f \u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c \u0447\u0435\u0440\u0435\u0437 iloc[], \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u044b:\r\n\r\n>>> df.iloc[:, -1] = np.array([88.0, 79.0, 81.0, 80.0, 68.0, 61.0, \r\n84.0]) >>> df['py-score'] 10 88.0 11 79.0 12 81.0 13 80.0 14 68.0 15 61.0 16 84.0 Name: py-score, dtype: float64\r\n\r\n\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \r\n('py-score'), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u0438\u043d\u0434\u0435\u043a\u0441\u0443 \u0441\u0442\u043e\u043b\u0431\u0446\u0430 -1.\r\n\r\n\u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445\r\n\r\nPandas \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0434\u043e\u0431\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \r\n\u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u043e\u043a \u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432.\u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\r\n\r\n\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u043e\u0433\u043e \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430 \r\n\u0432 \u0441\u0432\u043e\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u043e\u0432\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 Series:\r\n\r\n>>> john = pd.Series(data=['John', 'Boston', 34, 79], ... index=df.columns, \r\nname=17) >>> john name John city Boston age 34 py-score 79 Name: 17, dtype: object >>> john.name 17\r\n\r\n\u041e\u0431\u044a\u0435\u043a\u0442 john \u0445\u0440\u0430\u043d\u0438\u0442 \u043c\u0435\u0442\u043a\u0438, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \r\n\u043c\u0435\u0442\u043a\u0430\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0438\u0437 df, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f index=df.columns.\r\n\r\n\u041f\u043e\u043c\u0435\u0441\u0442\u0438\u043c \u043d\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 john \u0432 \u043a\u043e\u043d\u0435\u0446 df \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \r\nappend() :\r\n\r\n>>> df = df.append(john) >>> df name city age py-score \r\n10 Xavier Mexico City 41 88.0 11 Ann Toronto 28 79.0 12 Jana Prague 33 81.0 13 Yi Shanghai 34 80.0 14 Robin Manchester 38 68.0 15 Amal Cairo 31 61.0 16 Nori Osaka 37 84.0 17 John Boston 34 79.0\r\n\r\n\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u043a\u0430\u043a Pandas \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \r\njohn.name \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c 17, \u0447\u0442\u043e\u0431\u044b \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043c\u0435\u0442\u043a\u0443 \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438.\r\n\r\n\u041c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u043d\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \r\nappend(). \u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0435\u0451 \u043c\u043e\u0436\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0442\u043e\u0434\u0430 drop(), \u0443\u043a\u0430\u0437\u0430\u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 labels:\r\n\r\n>>> df = df.drop(labels=[17]) >>> df name city age py-score \r\n10 Xavier Mexico City 41 88.0 11 Ann Toronto 28 79.0 12 Jana Prague 33 81.0 13 Yi Shanghai 34 80.0 14 Robin Manchester 38 68.0 15 Amal Cairo 31 61.0 16 Nori Osaka 37 84.0\r\n\r\n\u0415\u0441\u043b\u0438 \u0432\u044b \u0437\u0430\u0434\u0430\u0434\u0438\u0442\u0435 inplace=True, \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 DataFrame \r\n\u0431\u0443\u0434\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0451\u043d, \u0430 \u043c\u0435\u0442\u043e\u0434 \u0432\u0435\u0440\u043d\u0451\u0442 None.\u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432\r\n\r\n\u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \r\n\u0432 DataFrame \u2014 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u0439 \u0436\u0435 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0435, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043f\u0440\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0432 \u0441\u043b\u043e\u0432\u0430\u0440\u044c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u043e\u0442 \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0435\u0446, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0431\u0430\u043b\u043b\u044b \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432 \u043f\u043e \u0442\u0435\u0441\u0442\u0443 JavaScript:\r\n\r\n>>> df['js-score'] = np.array([71.0, 95.0, 88.0, 79.0, 91.0, 91.0, \r\n80.0]) >>> df name city age py-score js-score 10 Xavier Mexico City 41 88.0 71.0 11 Ann Toronto 28 79.0 95.0 12 Jana Prague 33 81.0 88.0 13 Yi Shanghai 34 80.0 79.0 14 Robin Manchester 38 68.0 91.0 15 Amal Cairo 31 61.0 91.0 16 Nori Osaka 37 84.0 80.0\r\n\r\n\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \r\n\u0441 \u043e\u0434\u043d\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c:\r\n\r\n>>> df['total-score'] = 0.0 >>> df name city age py-score \r\njs-score total-score 10 Xavier Mexico City 41 88.0 71.0 0.0 11 Ann Toronto 28 79.0 95.0 0.0 12 Jana Prague 33 81.0 88.0 0.0 13 Yi Shanghai 34 80.0 79.0 0.0 14 Robin Manchester 38 68.0 91.0 0.0 15 Amal Cairo 31 61.0 91.0 0.0 16 Nori Osaka 37 84.0 80.0 0.0\r\n\r\n\u0412 DataFrame df \u0442\u0435\u043f\u0435\u0440\u044c \u0435\u0441\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \r\n\u0441\u0442\u043e\u043b\u0431\u0435\u0446, \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0439 \u043d\u0443\u043b\u044f\u043c\u0438. \u041e\u0434\u043d\u0430\u043a\u043e \u0442\u0430\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u0430. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u0432\u0430\u0436\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c insert(). \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438 \u0442\u0435\u0441\u0442\u0430 Django:\r\n\r\n>>> df.insert(loc=4, column='django-score', ... value=np.array([86.0, \r\n81.0, 78.0, 88.0, 74.0, 70.0, 81.0])) >>> df name city age py-score django-score js-score total-score 10 Xavier Mexico City 41 88.0 86.0 71.0 0.0 11 Ann Toronto 28 79.0 81.0 95.0 0.0 12 Jana Prague 33 81.0 78.0 88.0 0.0 13 Yi Shanghai 34 80.0 88.0 79.0 0.0 14 Robin Manchester 38 68.0 74.0 91.0 0.0 15 Amal Cairo 31 61.0 70.0 91.0 0.0 16 Nori Osaka 37 84.0 81.0 80.0 0.0\r\n\r\n\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 loc \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0438\u043b\u0438 \r\n\u043e\u0442\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c\u044b\u0439 \u043e\u0442 \u043d\u0443\u043b\u044f \u0438\u043d\u0434\u0435\u043a\u0441 \u043d\u043e\u0432\u043e\u0433\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u0430 \u0432 \u0434\u0430\u0442\u0430-\u0444\u0440\u0435\u0439\u043c\u0435. column \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043c\u0435\u0442\u043a\u0443 \u043d\u043e\u0432\u043e\u0433\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u0430, \u0430 value \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438.\r\n\r\n\u041c\u043e\u0436\u043d\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \r\n\u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 \u0432 \u043e\u0431\u044b\u0447\u043d\u043e\u043c \u0441\u043b\u043e\u0432\u0430\u0440\u0435 Python, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 del:\r\n\r\n>>> del df['total-score'] >>> df name city age py-score \r\ndjango-score js-score 10 Xavier Mexico City 41 88.0 86.0 71.0 11 Ann Toronto 28 79.0 81.0 95.0 12 Jana Prague 33 81.0 78.0 88.0 13 Yi Shanghai 34 80.0 88.0 79.0 14 Robin Manchester 38 68.0 74.0 91.0 15 Amal Cairo 31 61.0 70.0 91.0 16 Nori Osaka 37 84.0 81.0 80.0\r\n\r\n\u0422\u0435\u043f\u0435\u0440\u044c \u0432 df \u043d\u0435\u0442 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 total-score. \u0415\u0449\u0451 \u043e\u0434\u043d\u043e \r\n\u0441\u0445\u043e\u0434\u0441\u0442\u0432\u043e \u0441\u043e \u0441\u043b\u043e\u0432\u0430\u0440\u044f\u043c\u0438 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434 pop(), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0435\u0433\u043e. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 df.pop('total-score') \u0432\u043c\u0435\u0441\u0442\u043e del.\r\n\r\n\u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \r\n\u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e drop(). \u041d\u0443\u0436\u043d\u043e \u043b\u0438\u0448\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043c\u0435\u0442\u043a\u0438 \u043d\u0443\u0436\u043d\u044b\u0445 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 labels \u0438 \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 axis=1:\r\n\r\n>>> df = df.drop(labels='age', axis=1) >>> df name city \r\npy-score django-score js-score 10 Xavier Mexico City 88.0 86.0 71.0 11 Ann Toronto 79.0 81.0 95.0 12 Jana Prague 81.0 78.0 88.0 13 Yi Shanghai 80.0 88.0 79.0 14 Robin Manchester 68.0 74.0 91.0 15 Amal Cairo 61.0 70.0 91.0 16 Nori Osaka 84.0 81.0 80.0\r\n\r\n\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0435\u0439\u0447\u0430\u0441 \u043c\u044b \u0443\u0434\u0430\u043b\u0438\u043b\u0438 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \r\nage.\r\n\r\n\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, drop() \u0432\u044b\u0434\u0430\u0451\u0442 \u0434\u0430\u0442\u0430-\u0444\u0440\u0435\u0439\u043c \u0431\u0435\u0437 \r\n\u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0434\u0438\u0442\u0435 inplace=True.\r\n\r\n\u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439\r\n\r\n\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0432\u0440\u043e\u0434\u0435 \r\n\u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0432\u044b\u0447\u0438\u0442\u0430\u043d\u0438\u044f, \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0432 Pandas Series \u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u0445 DataFrame \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u0445 NumPy:\r\n\r\n>>> df['py-score'] + df['js-score'] 10 159.0 11 174.0 12 169.0 \r\n13 159.0 14 159.0 15 152.0 16 164.0 dtype: float64 >>> df['py-score'] \/ 100 10 0.88 11 0.79 12 0.81 13 0.80 14 0.68 15 0.61 16 0.84 Name: py-score, dtype: float64\r\n\r\n\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043c\u043e\u0436\u043d\u043e \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u044b \r\n\u0441 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u043c\u0438 \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f\u043c\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0442\u044c total (\u043e\u0431\u0449\u0438\u0439 \u0431\u0430\u043b\u043b) \u043d\u0430\u0448\u0438\u0445 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432 \u0432 \u0432\u0438\u0434\u0435 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u0438\u0445 \u0431\u0430\u043b\u043b\u043e\u0432 \u043f\u043e Python, Django \u0438 JavaScript:\r\n\r\n>>> df['total'] =\\ ... 0.4 * df['py-score'] + 0.3 * df['django-score'] \r\n+ 0.3 * df['js-score'] >>> df name city py-score django-score js-score total 10 Xavier Mexico City 88.0 86.0 71.0 82.3 11 Ann Toronto 79.0 81.0 95.0 84.4 12 Jana Prague 81.0 78.0 88.0 82.2 13 Yi Shanghai 80.0 88.0 79.0 82.1 14 Robin Manchester 68.0 74.0 91.0 76.7 15 Amal Cairo 61.0 70.0 91.0 72.7 16 Nori Osaka 84.0 81.0 80.0 81.9\r\n\r\n\u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 NumPy \u0438 SciPy\r\n\r\n\u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0441 NumPy \u0438 SciPy \r\n\u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c Pandas Series \u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u044b DataFrame, \u0432\u043c\u0435\u0441\u0442\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 NumPy. \u0427\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0442\u0435\u0441\u0442\u043e\u0432 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 NumPy numpy.average().\r\n\r\n\u0412\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432 NumPy \r\n\u0432 numpy.average(), \u043f\u0435\u0440\u0435\u0434\u0430\u0434\u0438\u043c \u0447\u0430\u0441\u0442\u044c DataFrame:\r\n\r\n>>> import numpy as np >>> score = df.iloc[:, 2:5] >>> \r\nscore py-score django-score js-score 10 88.0 86.0 71.0 11 79.0 81.0 95.0 12 81.0 78.0 88.0 13 80.0 88.0 79.0 14 68.0 74.0 91.0 15 61.0 70.0 91.0 16 84.0 81.0 80.0 >>> np.average(score, axis=1, ... weights=[0.4, 0.3, 0.3]) array([82.3, 84.4, 82.2, 82.1, 76.7, 72.7, 81.9])\r\n\r\n\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f score \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 DataFrame \u0441 \u043e\u0446\u0435\u043d\u043a\u0430\u043c\u0438 \r\n\u043f\u043e Python, Django \u0438 JavaScript. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c score \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 numpy.average() \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043b\u0438\u043d\u0435\u0439\u043d\u0443\u044e \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044e \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c\u0438 \u0432\u0435\u0441\u0430\u043c\u0438.\r\n\r\n\u041d\u043e \u044d\u0442\u043e \u0435\u0449\u0451 \u043d\u0435 \u0432\u0441\u0451! \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \r\n\u043c\u0430\u0441\u0441\u0438\u0432 NumPy, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0439 average() \u043a\u0430\u043a \u043d\u043e\u0432\u044b\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 df. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0443\u0434\u0430\u043b\u0438\u0442\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 total \u0438\u0437 df, \u0430 \u0437\u0430\u0442\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043d\u043e\u0432\u044b\u0439:\r\n\r\n>>> del df['total'] >>> df name city py-score django-score \r\njs-score 10 Xavier Mexico City 88.0 86.0 71.0 11 Ann Toronto 79.0 81.0 95.0 12 Jana Prague 81.0 78.0 88.0 13 Yi Shanghai 80.0 88.0 79.0 14 Robin Manchester 68.0 74.0 91.0 15 Amal Cairo 61.0 70.0 91.0 16 Nori Osaka 84.0 81.0 80.0 >>> df['total'] = np.average(df.iloc[:, 2:5], axis=1, ... weights=[0.4, 0.3, 0.3]) >>> df name city py-score django-score js-score total 10 Xavier Mexico City 88.0 86.0 71.0 82.3 11 Ann Toronto 79.0 81.0 95.0 84.4 12 Jana Prague 81.0 78.0 88.0 82.2 13 Yi Shanghai 80.0 88.0 79.0 82.1 14 Robin Manchester 68.0 74.0 91.0 76.7 15 Amal Cairo 61.0 70.0 91.0 72.7 16 Nori Osaka 84.0 81.0 80.0 81.9\r\n\r\n\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0442\u0430\u043a\u043e\u0439 \u0436\u0435, \u043a\u0430\u043a \u0438 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \r\n\u043f\u0440\u0438\u043c\u0435\u0440\u0435, \u043d\u043e \u0437\u0434\u0435\u0441\u044c \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434, \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0433\u043e\u0442\u043e\u0432\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e NumPy.\r\n\r\n\u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u0432 Pandas DataFrame\r\n\r\n\u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c Pandas DataFrame \u043c\u043e\u0436\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \r\nsort_values():\r\n\r\n>>> df.sort_values(by='js-score', ascending=False) name city py-score \r\ndjango-score js-score total 11 Ann Toronto 79.0 81.0 95.0 84.4 14 Robin Manchester 68.0 74.0 91.0 76.7 15 Amal Cairo 61.0 70.0 91.0 72.7 12 Jana Prague 81.0 78.0 88.0 82.2 16 Nori Osaka 84.0 81.0 80.0 81.9 13 Yi Shanghai 80.0 88.0 79.0 82.1 10 Xavier Mexico City 88.0 86.0 71.0 82.3\r\n\r\n\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0434\u0430\u0442\u0430-\u0444\u0440\u0435\u0439\u043c \u0441\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \r\n\u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c \u0432 \u0441\u0442\u043e\u043b\u0431\u0446\u0435 js-score. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 by \u0437\u0430\u0434\u0430\u0435\u0442 \u043c\u0435\u0442\u043a\u0443 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u043b\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u0430 \u0434\u043b\u044f \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438, ascending \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043f\u043e \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u043d\u0438\u044e (True) \u0438\u043b\u0438 \u043f\u043e \u0443\u0431\u044b\u0432\u0430\u043d\u0438\u044e (False). \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0441\u043e\u0440\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u043e \u0443\u0431\u044b\u0432\u0430\u043d\u0438\u044e. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 axis \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f: \u0441\u0442\u0440\u043e\u043a\u0438 (axis=0) \u0438\u043b\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u044b (axis=1).\r\n\r\n\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \r\n\u0441\u0442\u043e\u043b\u0431\u0446\u0430\u043c, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0439\u0442\u0435 \u0441\u043f\u0438\u0441\u043a\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f by \u0438 ascending:\r\n\r\n>>> df.sort_values(by=['total', 'py-score'], ascending=[False, \r\nFalse]) name city py-score django-score js-score total 11 Ann Toronto 79.0 81.0 95.0 84.4 10 Xavier Mexico City 88.0 86.0 71.0 82.3 12 Jana Prague 81.0 78.0 88.0 82.2 13 Yi Shanghai 80.0 88.0 79.0 82.1 16 Nori Osaka 84.0 81.0 80.0 81.9 14 Robin Manchester 68.0 74.0 91.0 76.7 15 Amal Cairo 61.0 70.0 91.0 72.7\r\n\r\n\u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 DataFrame \u0441\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u0443 \r\ntotal, \u043d\u043e \u0435\u0441\u043b\u0438 \u0434\u0432\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442, \u0438\u0445 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0438\u0437 \u0441\u0442\u043e\u043b\u0431\u0446\u0430 py-score.\r\n\r\n\u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 inplace \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \r\n\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441 sort_values(). \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043e\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0432 False, \u0447\u0442\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0432\u044b\u0434\u0430\u0447\u0443 \u043d\u043e\u0432\u043e\u0433\u043e DataFrame. \u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 inplace=True, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 DataFrame \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0441\u044f \u0438 sort_values() \u0432\u0435\u0440\u043d\u0451\u0442 None.\r\n\r\n\u0415\u0441\u043b\u0438 \u0432\u044b \u043a\u043e\u0433\u0434\u0430-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b\u0438 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \r\n\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 Excel, \u0442\u043e \u043f\u043e\u0434\u0445\u043e\u0434 Pandas \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u0432\u0430\u043c \u0431\u043e\u043b\u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u0438 \u0443\u0434\u043e\u0431\u043d\u044b\u043c. \u041a\u043e\u0433\u0434\u0430 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043e\u0431\u044a\u0451\u043c\u044b \u0434\u0430\u043d\u043d\u044b\u0445, Pandas \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0435\u0432\u043e\u0441\u0445\u043e\u0434\u0438\u0442 Excel.\r\n\r\n\r\n\r\n\u0423\u0437\u043d\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043e \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0435 \u0432 Pandas \u043c\u043e\u0436\u043d\u043e \r\n\u0432 \u0433\u0430\u0439\u0434\u0435 Pandas Sort: Your Guide to Sorting Data in Python .\r\n\r\n\u0424\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445\r\n\r\n\u0424\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 \u0435\u0449\u0451 \u043e\u0434\u043d\u0430 \u0441\u0443\u043f\u0435\u0440\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \r\nPandas. \u041e\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u0438 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u0432 NumPy [ https:\/\/docs.scipy.org\/doc\/numpy\/user\/quickstart.html#indexing-with-boolean-arrays ] .\r\n\r\n\u0415\u0441\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043a\u0430\u043a\u0443\u044e-\u043b\u0438\u0431\u043e \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e \r\n\u043a \u043e\u0431\u044a\u0435\u043a\u0442\u0443 Series, \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0435\u0449\u0451 \u043e\u0434\u043d\u0430 \u0441\u0435\u0440\u0438\u044f \u0441 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 True \u0438 False:\r\n\r\n>>> filter_ = df['django-score'] >= 80 >>> filter_ \r\n10 True 11 True 12 False 13 True 14 False 15 False 16 True Name: django-score, dtype: bool\r\n\r\n\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 df['django-score'] >= 80. \u0422\u043e \u0435\u0441\u0442\u044c \r\nTrue \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u0430\u043c, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0446\u0435\u043d\u043a\u0430 \u043f\u043e Django \u0431\u043e\u043b\u044c\u0448\u0435 \u0438\u043b\u0438 \u0440\u0430\u0432\u043d\u0430 80, \u0430 False \u2014\u0434\u043b\u044f \u0441\u0442\u0440\u043e\u043a \u0441 \u043e\u0446\u0435\u043d\u043a\u043e\u0439 Django \u043c\u0435\u043d\u044c\u0448\u0435 80.\r\n\r\n\u0422\u0435\u043f\u0435\u0440\u044c \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u0435\u0440\u0438\u044f filter_, \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u0430\u044f \r\n\u0431\u0443\u043b\u0435\u0432\u044b\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438. \u0412\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 df[filter_] \u0432\u044b\u0434\u0430\u0451\u0442 Pandas DataFrame \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 df, \u0433\u0434\u0435 \u0432 filter_ \u0441\u0442\u043e\u0438\u0442 True:\r\n\r\n>>> df[filter_] name city py-score django-score js-score total \r\n10 Xavier Mexico City 88.0 86.0 71.0 82.3 11 Ann Toronto 79.0 81.0 95.0 84.4 13 Yi Shanghai 80.0 88.0 79.0 82.1 16 Nori Osaka 84.0 81.0 80.0 81.9\r\n\r\n\u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u0432 filter_[10], filter_[11], filter_[13] \u0438 filter_[16] \r\n\u0441\u0442\u043e\u0438\u0442 True, \u0430 \u0432 filter_[12], filter_[14] \u0438 filter_[15] \u2014 False, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432 df[filter_].\r\n\r\n\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \r\n\u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u0443\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u043c\u0438:\r\n\r\n- NOT( ~)\r\n- AND( &)\r\n- OR( |)\r\n- XOR( ^)\r\n\r\n\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c DataFrame \u0441 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u0430\u043c\u0438, \r\n\u0447\u044c\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b py-score \u0438 js-score \u0431\u043e\u043b\u044c\u0448\u0435 \u0438\u043b\u0438 \u0440\u0430\u0432\u043d\u044b 80:\r\n\r\n>>> df[(df['py-score'] >= 80) & (df['js-score'] >= 80)] \r\nname city py-score django-score js-score total 12 Jana Prague 81.0 78.0 88.0 82.2 16 Nori Osaka 84.0 81.0 80.0 81.9\r\n\r\n\u0412\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 (df['py-score'] >= 80) & (df['js-score'] >= \r\n80) \u0437\u0430\u0434\u0430\u0451\u0442 True \u0432 \u0441\u0442\u0440\u043e\u043a\u0430\u0445, \u0433\u0434\u0435 py-score \u0438 js-score \u0431\u043e\u043b\u044c\u0448\u0435 \u0438\u043b\u0438 \u0440\u0430\u0432\u043d\u044b 80, \u0438 False \u2014 \u0432 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u043e\u043a\u0438 \u0441 \u043c\u0435\u0442\u043a\u0430\u043c\u0438 12 \u0438 16 \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u044e\u0442 \u043e\u0431\u043e\u0438\u043c \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u043c.\r\n\r\n\u0414\u043b\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439, \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0445 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \r\n\u0434\u0430\u043d\u043d\u044b\u0445, \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c where() :\r\n\r\n>>> df['django-score'].where(cond=df['django-score'] >= 80, \r\nother=0.0) 10 86.0 11 81.0 12 0.0 13 88.0 14 0.0 15 0.0 16 81.0 Name: django-score, dtype: float64\r\n\r\n\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u2014 df['django-score'] \r\n>= 80. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f DataFrame \u0438\u043b\u0438 Series, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f, \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 where() \u043e\u0441\u0442\u0430\u043d\u0443\u0442\u0441\u044f True \u0438 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u043c\u0435\u043d\u0435\u043d\u044b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435 other (\u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 0.0), \u0435\u0441\u043b\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f.\r\n\r\n\u0420\u0430\u0431\u043e\u0442\u0430 \u0441\u043e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438\r\n\r\nPandas \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \r\n\u043c\u0435\u0442\u043e\u0434\u043e\u0432 [ https:\/\/pandas.pydata.org\/pandas-docs\/stable\/reference\/frame.html#computations-descriptive-stats ] \u0434\u043b\u044f DataFrames. \u0411\u0430\u0437\u043e\u0432\u0443\u044e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u0434\u043b\u044f \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u0445 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0432 DataFrame \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0442\u043e\u0434\u0430 describe() :\r\n\r\n>>> df.describe() py-score django-score js-score total count 7.000000 \r\n7.000000 7.000000 7.000000 mean 77.285714 79.714286 85.000000 80.328571 std 9.446592 6.343350 8.544004 4.101510 min 61.000000 70.000000 71.000000 72.700000 25% 73.500000 76.000000 79.500000 79.300000 50% 80.000000 81.000000 88.000000 82.100000 75% 82.500000 83.500000 91.000000 82.250000 max 88.000000 88.000000 95.000000 84.400000\r\n\r\n\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 describe() \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \r\nDataFrame \u0441 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0441\u0442\u0440\u043e\u043a, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u0432 count, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u0440\u0435\u0434\u043d\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c, \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0435\u043c, \u043c\u0438\u043d\u0438\u043c\u0443\u043c\u043e\u043c, \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c\u043e\u043c \u0438 \u043a\u0432\u0430\u0440\u0442\u0438\u043b\u044f\u043c\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432.\r\n\r\n\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \r\n\u0434\u043b\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u043b\u0438 \u0432\u0441\u0435\u0445 \u0432\u0430\u0448\u0438\u0445 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432, \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b, \u043a\u0430\u043a mean() \u0438\u043b\u0438 std() :\r\n\r\n>>> df.mean() py-score 77.285714 django-score 79.714286 js-score \r\n85.000000 total 80.328571 dtype: float64 >>> df['py-score'].mean() 77.28571428571429 >>> df.std() py-score 9.446592 django-score 6.343350 js-score 8.544004 total 4.101510 dtype: float64 >>> df['py-score'].std() 9.446591726019244\r\n\r\n\u041f\u0440\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u043a Pandas DataFrame \u044d\u0442\u0438 \u043c\u0435\u0442\u043e\u0434\u044b \r\n\u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0432\u044b\u0434\u0430\u0442\u044c Series \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u0430. \u041f\u0440\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u043a \u043e\u0431\u044a\u0435\u043a\u0442\u0443 Series \u0438\u043b\u0438 \u043e\u0434\u043d\u043e\u043c\u0443 \u0441\u0442\u043e\u043b\u0431\u0446\u0443 \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u0434\u0430\u043d\u044b \u0441\u043a\u0430\u043b\u044f\u0440\u044b.\r\n\r\n\r\n\r\n\u0423\u0437\u043d\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f\u0445 \r\n\u0432 Pandas, \u0438 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043e\u043f\u0438\u0441\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u043e\u0439 \u0432 Python \u043c\u043e\u0436\u043d\u043e \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 . \u0410 \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u043a\u043e\u0440\u0440\u0435\u043b\u044f\u0446\u0438\u0435\u0439 \u0432 NumPy, SciPy \u0438 Pandas \u2014 \u0432 \u044d\u0442\u043e\u0439 .\r\n\r\n\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445\r\n\r\n\u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0447\u0435\u043d\u044c \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u044b \r\n\u0432 \u043d\u0430\u0443\u043a\u0435 \u043e \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u043c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438. \u041a \u0441\u0447\u0430\u0441\u0442\u044c, \u0443 Pandas \u0435\u0441\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u043c\u043e\u0449\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043d\u0438\u043c\u0438. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u0432 \u0435\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0435\u0441\u0442\u044c \u0446\u0435\u043b\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043b , \u043f\u043e\u0441\u0432\u044f\u0449\u0451\u043d\u043d\u044b\u0439 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438.\r\n\r\nPandas \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \r\n\u0434\u0430\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 NaN (\u043d\u0435 \u0447\u0438\u0441\u043b\u043e). \u0412 Python \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c NaN \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e float('nan') [ https:\/\/docs.python.org\/3\/library\/functions.html#float ] , math.nan [ https:\/\/docs.python.org\/3\/library\/math.html#math.nan ] \u0438\u043b\u0438 numpy.nan [ https:\/\/docs.scipy.org\/doc\/numpy\/reference\/constants.html#numpy.nan ] . \u041d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 Pandas 1.0, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0442\u0430\u043a\u0436\u0435 BooleanDtype , Int8Dtype , Int16Dtype , Int32Dtype \u0438 Int64Dtype . \u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c:\r\n\r\n>>> df_ = pd.DataFrame({'x': [1, 2, np.nan, 4]}) >>> \r\ndf_ x 0 1.0 1 2.0 2 NaN 3 4.0\r\n\r\n\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f df_ \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a DataFrame \u0441 \u043e\u0434\u043d\u0438\u043c \r\n\u0441\u0442\u043e\u043b\u0431\u0446\u043e\u043c x \u0438 \u0447\u0435\u0442\u044b\u0440\u044c\u043c\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438. \u0422\u0440\u0435\u0442\u044c\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 NaN \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c.\u0420\u0430\u0441\u0447\u0451\u0442 \u0441 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438\r\n\r\n\u041c\u043d\u043e\u0433\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b Pandas \u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f NaN \r\n\u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439, \u0435\u0441\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043d\u0438 \u044f\u0432\u043d\u043e \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u044b:\r\n\r\n>>> df_.mean() x 2.333333 dtype: float64 >>> df_.mean(skipna=False) \r\nx NaN dtype: float64\r\n\r\n\u0412 \u043f\u0435\u0440\u0432\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 df_.mean() \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \r\n\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0431\u0435\u0437 \u0443\u0447\u0451\u0442\u0430 NaN (\u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f). \u041e\u043d \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 1.0, 2.0 \u0438 4.0 \u0438 \u0432\u044b\u0434\u0430\u0451\u0442 \u0438\u0445 \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0440\u0430\u0432\u043d\u043e\u0435 2.33.\r\n\r\n\u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e skipna=False \u043f\u0440\u0438\u043a\u0430\u0436\u0435\u0442\u0435 \r\nmean() \u043d\u0435 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c NaN, \u0442\u043e \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0438\u0445 \u0442\u0430\u043c, \u0433\u0434\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.\u0417\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445\r\n\r\n\u0412 Pandas \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \r\n\u0438\u043b\u0438 \u0437\u0430\u043c\u0435\u043d\u044b \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438. \u041e\u0434\u0438\u043d \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0443\u0434\u043e\u0431\u043d\u044b\u0445 \u2014 fillna() . \u041e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u043c\u0435\u043d\u044f\u0442\u044c NaN \u043d\u0430:\r\n\r\n- \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f,\r\n- \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432\u044b\u0448\u0435 \u043f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f,\r\n- \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0438\u0436\u0435 \u043f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.\r\n\r\n\u0412\u043e\u0442 \u043a\u0430\u043a \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \r\n\u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b\u0435 \u0432\u044b\u0448\u0435:\r\n\r\n>>> df_.fillna(value=0) x 0 1.0 1 2.0 2 0.0 3 4.0 >>> \r\ndf_.fillna(method='ffill') x 0 1.0 1 2.0 2 2.0 3 4.0 >>> df_.fillna(method='bfill') x 0 1.0 1 2.0 2 4.0 3 4.0\r\n\r\n\u0412 \u043f\u0435\u0440\u0432\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 fillna(value=0) \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \r\n\u0447\u0438\u0441\u043b\u043e 0.0, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0432 value. \u0412\u043e \u0432\u0442\u043e\u0440\u043e\u043c fillna(method='ffill') \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0442\u0435\u043c, \u0447\u0442\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043e \u043d\u0430\u0434 \u043d\u0438\u043c, \u0442\u043e \u0435\u0441\u0442\u044c 2.0. \u0410 \u0432 \u0442\u0440\u0435\u0442\u044c\u0435\u043c fillna(method='bfill') \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u043e, \u0447\u0442\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043e \u043d\u0438\u0436\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0442\u043e \u0435\u0441\u0442\u044c 4.0.\r\n\r\n\u0414\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u2014 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \r\n\u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u044e \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e interpolate() :\r\n\r\n>>> df_.interpolate() x 0 1.0 1 2.0 2 3.0 3 4.0\r\n\r\n\u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \r\n\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 inplace \u0441 fillna(). \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442:\r\n\r\n- \u0421\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 DataFrame, \r\n\u043a\u043e\u0433\u0434\u0430 inplace=False;\r\n- \u0418\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 DataFrame \u043d\u0430 None \u043a\u043e\u0433\u0434\u0430 \r\ninplace=True.\r\n\r\n\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 inplace \u0440\u0430\u0432\u0435\u043d False. \r\n\u041e\u0434\u043d\u0430\u043a\u043e \u0435\u0433\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0432 True, \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u043e\u0431\u044a\u0451\u043c\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043d\u0435\u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0438 \u043d\u0435\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a \u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0441 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438\r\n\r\n\u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f\u0445 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f \r\n\u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u0421\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e dropna() :\r\n\r\n>>> df_.dropna() x 0 1.0 1 2.0 3 4.0\r\n\r\n\u0412 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u043c \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u0435\u0442\u043e\u0434 dropna() \r\n\u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0441 NaN, \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0435\u0451 \u043c\u0435\u0442\u043a\u043e\u0439. \u041e\u043d \u0442\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u0435\u0442 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 inplace, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0435\u0434\u0451\u0442 \u0441\u0435\u0431\u044f \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a .fillna() \u0438 .interpolate().\r\n\r\n\u0418\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0432 Pandas DataFrame\r\n\r\n\u041a\u0430\u043a \u043c\u044b \u0443\u0436\u0435 \u0437\u043d\u0430\u0435\u043c, \u043c\u0435\u0442\u043a\u0438 \u0441\u0442\u0440\u043e\u043a \u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \r\nDataFrame \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432 \u0432\u0438\u0434\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0435\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 index \u0438 columns. \u0418\u0445 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0436\u0435 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u0430 \u043c\u0435\u0442\u043e\u043a \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0434\u0430\u043d\u043d\u044b\u0445. \u041e\u0434\u043d\u0430\u043a\u043e Pandas \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438:\r\n\r\n- items() \r\n \u2014 \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0446\u044b;\r\n- iteritems() \r\n \u2014 \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0446\u044b;\r\n- iterrows() \r\n \u2014 \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0438;\r\n- itertuples() \r\n \u2014 \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u0440\u0442\u0435\u0436\u0438.\r\n\r\n\u041a\u0430\u0436\u0434\u0430\u044f \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f items() \u0438 iteritems() \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \r\n\u043a\u043e\u0440\u0442\u0435\u0436 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u0430 \u0432 \u0432\u0438\u0434\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 Series:\r\n\r\n>>> for col_label, col in df.iteritems(): ... print(col_label, \r\ncol, sep='\\n', end='\\n\\n') ... name 10 Xavier 11 Ann 12 Jana 13 Yi 14 Robin 15 Amal 16 Nori Name: name, dtype: object city 10 Mexico City 11 Toronto 12 Prague 13 Shanghai 14 Manchester 15 Cairo 16 Osaka Name: city, dtype: object py-score 10 88.0 11 79.0 12 81.0 13 80.0 14 68.0 15 61.0 16 84.0 Name: py-score, dtype: float64 django-score 10 86.0 11 81.0 12 78.0 13 88.0 14 74.0 15 70.0 16 81.0 Name: django-score, dtype: float64 js-score 10 71.0 11 95.0 12 88.0 13 79.0 14 91.0 15 91.0 16 80.0 Name: js-score, dtype: float64 total 10 82.3 11 84.4 12 82.2 13 82.1 14 76.7 15 72.7 16 81.9 Name: total, dtype: float64\r\n\r\n\u041a\u0430\u0436\u0434\u0430\u044f \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e iterrows() \u0434\u0430\u0451\u0442 \r\n\u043a\u043e\u0440\u0442\u0435\u0436 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0432\u0438\u0434\u0435 \u0441\u0435\u0440\u0438\u0438:\r\n\r\n>>> for row_label, row in df.iterrows(): ... print(row_label, \r\nrow, sep='\\n', end='\\n\\n') ... 10 name Xavier city Mexico City py-score 88 django-score 86 js-score 71 total 82.3 Name: 10, dtype: object 11 name Ann city Toronto py-score 79 django-score 81 js-score 95 total 84.4 Name: 11, dtype: object 12 name Jana city Prague py-score 81 django-score 78 js-score 88 total 82.2 Name: 12, dtype: object 13 name Yi city Shanghai py-score 80 django-score 88 js-score 79 total 82.1 Name: 13, dtype: object 14 name Robin city Manchester py-score 68 django-score 74 js-score 91 total 76.7 Name: 14, dtype: object 15 name Amal city Cairo py-score 61 django-score 70 js-score 91 total 72.7 Name: 15, dtype: object 16 name Nori city Osaka py-score 84 django-score 81 js-score 80 total 81.9 Name: 16, dtype: object\r\n\r\n\u0422\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435 itertuples() \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0438 \r\n\u0438 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 (\u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e) \u0434\u0430\u0451\u0442 \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0440\u0442\u0435\u0436 \u0441 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u043c \u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438:\r\n\r\n>>> for row in df.loc[:, ['name', 'city', 'total']].itertuples(): \r\n... print(row) ... Pandas(Index=10, name='Xavier', city='Mexico City', total=82.3) Pandas(Index=11, name='Ann', city='Toronto', total=84.4) Pandas(Index=12, name='Jana', city='Prague', total=82.19999999999999) Pandas(Index=13, name='Yi', city='Shanghai', total=82.1) Pandas(Index=14, name='Robin', city='Manchester', total=76.7) Pandas(Index=15, name='Amal', city='Cairo', total=72.7) Pandas(Index=16, name='Nori', city='Osaka', total=81.9)\r\n\r\n\u0418\u043c\u044f \u043a\u043e\u0440\u0442\u0435\u0436\u0430 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c \r\nname. \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c, \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043b\u0438 \u043c\u0435\u0442\u043a\u0438 \u0441\u0442\u0440\u043e\u043a \u0432 index (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0432 True).\r\n\r\n\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u0440\u044f\u0434\u0430\u043c\u0438\r\n\r\nPandas \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \r\n\u0440\u044f\u0434\u0430\u043c\u0438. \u0425\u043e\u0442\u044f \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 datetimes \u0438 timedeltas , Pandas \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u044c.\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 DataFrame \u0441 \u043c\u0435\u0442\u043a\u0430\u043c\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0440\u044f\u0434\u043e\u0432\r\n\r\n\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0434\u0430\u0442\u0430-\u0444\u0440\u0435\u0439\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \r\n\u043f\u043e\u0447\u0430\u0441\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0435 \u0437\u0430 \u0434\u0435\u043d\u044c.\r\n\r\n\u041d\u0430\u0447\u043d\u0451\u043c \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u0430 (\u043a\u043e\u0440\u0442\u0435\u0436\u0430, \u043c\u0430\u0441\u0441\u0438\u0432\u0430 NumPy \r\n\u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0434\u0430\u043d\u043d\u044b\u0445) \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u043e\u0431\u043e\u0439 \u043f\u043e\u0447\u0430\u0441\u043e\u0432\u0443\u044e \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0443, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u0443\u044e \u0432 \u0433\u0440\u0430\u0434\u0443\u0441\u0430\u0445 \u0426\u0435\u043b\u044c\u0441\u0438\u044f:\r\n\r\n>>> temp_c = [ 8.0, 7.1, 6.8, 6.4, 6.0, 5.4, 4.8, 5.0, ... 9.1, \r\n12.8, 15.3, 19.1, 21.2, 22.1, 22.4, 23.1, ... 21.0, 17.9, 15.5, 14.4, 11.9, 11.0, 10.2, 9.1]\r\n\r\n\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f temp_c \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u043f\u0438\u0441\u043e\u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \r\n\u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b.\r\n\r\n\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0448\u0430\u0433 \u2014 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \r\n\u0434\u0430\u0442 \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 Pandas \u0435\u0441\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f date_range() , \u0440\u0430\u043d\u0436\u0438\u0440\u0443\u044e\u0449\u0430\u044f \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0438\u043b\u0438 \u043a\u043e\u043d\u0446\u0430 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043f\u0435\u0440\u0438\u043e\u0434\u043e\u0432, \u0447\u0430\u0441\u0442\u043e\u0442\u044b, \u0447\u0430\u0441\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u044f\u0441\u0430 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435:\r\n\r\n>>> dt = pd.date_range(start='2019-10-27 00:00:00.0', periods=24, \r\n... freq='H') >>> dt DatetimeIndex(['2019-10-27 00:00:00', '2019-10-27 01:00:00', '2019-10-27 02:00:00', '2019-10-27 03:00:00', '2019-10-27 04:00:00', '2019-10-27 05:00:00', '2019-10-27 06:00:00', '2019-10-27 07:00:00', '2019-10-27 08:00:00', '2019-10-27 09:00:00', '2019-10-27 10:00:00', '2019-10-27 11:00:00', '2019-10-27 12:00:00', '2019-10-27 13:00:00', '2019-10-27 14:00:00', '2019-10-27 15:00:00', '2019-10-27 16:00:00', '2019-10-27 17:00:00', '2019-10-27 18:00:00', '2019-10-27 19:00:00', '2019-10-27 20:00:00', '2019-10-27 21:00:00', '2019-10-27 22:00:00', '2019-10-27 23:00:00'], dtype='datetime64[ns]', freq='H')\r\n\r\n\r\n\r\n\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435. \u0425\u043e\u0442\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \r\n\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 Pandas \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u0442\u044b \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 ISO 8601 .\r\n\r\n\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c DataFrame. \u0412\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \r\n\u0443\u0434\u043e\u0431\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u0442\u044b \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043c\u0435\u0442\u043e\u043a \u0441\u0442\u0440\u043e\u043a:\r\n\r\n>>> temp = pd.DataFrame(data={'temp_c': temp_c}, index=dt) >>> \r\ntemp temp_c 2019-10-27 00:00:00 8.0 2019-10-27 01:00:00 7.1 2019-10-27 02:00:00 6.8 2019-10-27 03:00:00 6.4 2019-10-27 04:00:00 6.0 2019-10-27 05:00:00 5.4 2019-10-27 06:00:00 4.8 2019-10-27 07:00:00 5.0 2019-10-27 08:00:00 9.1 2019-10-27 09:00:00 12.8 2019-10-27 10:00:00 15.3 2019-10-27 11:00:00 19.1 2019-10-27 12:00:00 21.2 2019-10-27 13:00:00 22.1 2019-10-27 14:00:00 22.4 2019-10-27 15:00:00 23.1 2019-10-27 16:00:00 21.0 2019-10-27 17:00:00 17.9 2019-10-27 18:00:00 15.5 2019-10-27 19:00:00 14.4 2019-10-27 20:00:00 11.9 2019-10-27 21:00:00 11.0 2019-10-27 22:00:00 10.2 2019-10-27 23:00:00 9.1\u0418\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u043d\u0430\u0440\u0435\u0437\u043a\u0430\r\n\r\n\u041a DataFrame \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0440\u044f\u0434\u043e\u0432 \r\n\u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0440\u0435\u0437\u044b, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438:\r\n\r\n>>> temp['2019-10-27 05':'2019-10-27 14'] temp_c 2019-10-27 05:00:00 \r\n5.4 2019-10-27 06:00:00 4.8 2019-10-27 07:00:00 5.0 2019-10-27 08:00:00 9.1 2019-10-27 09:00:00 12.8 2019-10-27 10:00:00 15.3 2019-10-27 11:00:00 19.1 2019-10-27 12:00:00 21.2 2019-10-27 13:00:00 22.1 2019-10-27 14:00:00 22.4\r\n\r\n\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e, \u043a\u0430\u043a \u0438\u0437\u0432\u043b\u0435\u0447\u044c \r\n\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u043c\u0435\u0436\u0434\u0443 05:00 \u0438 14:00. Pandas \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442, \u0447\u0442\u043e \u043c\u0435\u0442\u043a\u0438 \u0441\u0442\u0440\u043e\u043a \u2014 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u0442\u044b \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438\u0445 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u0442.\u0420\u0435\u0441\u0435\u043c\u043f\u043b\u0438\u043d\u0433 \u0438 \u0440\u043e\u043b\u043b\u0438\u043d\u0433\r\n\r\n\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u0434\u0435\u043d\u044c \u043d\u0430 \u0447\u0435\u0442\u044b\u0440\u0435 \r\n\u0448\u0435\u0441\u0442\u0438\u0447\u0430\u0441\u043e\u0432\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0440\u0435\u0434\u043d\u044e\u044e \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0443 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043d\u0438\u0445, \u0432 Pandas \u0435\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434 resample() , \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0441 mean():\r\n\r\n>>> temp.resample(rule='6h').mean() temp_c 2019-10-27 00:00:00 \r\n6.616667 2019-10-27 06:00:00 11.016667 2019-10-27 12:00:00 21.283333 2019-10-27 18:00:00 12.016667\r\n\r\n\u041a\u0430\u0436\u0434\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0434\u043d\u043e\u043c\u0443 \u0448\u0435\u0441\u0442\u0438\u0447\u0430\u0441\u043e\u0432\u043e\u043c\u0443 \r\n\u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0443. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 6.616667 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0432\u044b\u0445 \u0448\u0435\u0441\u0442\u0438 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440 \u0438\u0437 \u0434\u0430\u0442\u0430-\u0444\u0440\u0435\u0439\u043c\u0430 temp, \u0442\u043e\u0433\u0434\u0430 \u043a\u0430\u043a 12.016667 \u2014 \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0448\u0435\u0441\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b.\r\n\r\n\u0412\u043c\u0435\u0441\u0442\u043e mean() \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c min() \u0438\u043b\u0438 max(). \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \r\n\u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c sum() \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0443\u043c\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0434\u0430\u043d\u043d\u044b\u0445. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043e\u043a\u043d\u043e, \u0432\u044b\u0431\u0440\u0430\u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u0441\u043c\u0435\u0436\u043d\u044b\u0445 \u0441\u0442\u0440\u043e\u043a \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439.\r\n\r\n\u041f\u0435\u0440\u0432\u043e\u0435 \u043e\u043a\u043d\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \r\n\u0432 DataFrame \u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043c\u0435\u0436\u043d\u044b\u0445 \u0441\u0442\u0440\u043e\u043a, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u044b \u0443\u043a\u0430\u0436\u0435\u0442\u0435. \u0417\u0430\u0442\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043e\u043a\u043d\u043e \u0432\u043d\u0438\u0437 \u043d\u0430 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443, \u043e\u043f\u0443\u0441\u043a\u0430\u044f \u043f\u0435\u0440\u0432\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f \u0442\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0434\u0451\u0442 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439, \u0438 \u0441\u043d\u043e\u0432\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0442\u0443 \u0436\u0435 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443. \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c, \u043f\u043e\u043a\u0430 \u0432\u044b \u043d\u0435 \u0434\u043e\u0439\u0434\u0451\u0442\u0435 \u0434\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 DataFrame. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 Pandas \u0435\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434 rolling() :\r\n\r\n>>> temp.rolling(window=3).mean() temp_c 2019-10-27 00:00:00 NaN \r\n2019-10-27 01:00:00 NaN 2019-10-27 02:00:00 7.300000 2019-10-27 03:00:00 6.766667 2019-10-27 04:00:00 6.400000 2019-10-27 05:00:00 5.933333 2019-10-27 06:00:00 5.400000 2019-10-27 07:00:00 5.066667 2019-10-27 08:00:00 6.300000 2019-10-27 09:00:00 8.966667 2019-10-27 10:00:00 12.400000 2019-10-27 11:00:00 15.733333 2019-10-27 12:00:00 18.533333 2019-10-27 13:00:00 20.800000 2019-10-27 14:00:00 21.900000 2019-10-27 15:00:00 22.533333 2019-10-27 16:00:00 22.166667 2019-10-27 17:00:00 20.666667 2019-10-27 18:00:00 18.133333 2019-10-27 19:00:00 15.933333 2019-10-27 20:00:00 13.933333 2019-10-27 21:00:00 12.433333 2019-10-27 22:00:00 11.033333 2019-10-27 23:00:00 10.100000\r\n\r\n\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 window \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u043a\u043e\u043b\u044c\u0437\u044f\u0449\u0435\u0433\u043e \r\n\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430.\r\n\r\n\u0412 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u043c \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0442\u0440\u0435\u0442\u044c\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \r\n(7.3) \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0441\u0440\u0435\u0434\u043d\u044e\u044e \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0443 \u0437\u0430 \u043f\u0435\u0440\u0432\u044b\u0435 \u0442\u0440\u0438 \u0447\u0430\u0441\u0430 (00:00:00, 01:00:00 \u0438 02:00:00). \u0427\u0435\u0442\u0432\u0451\u0440\u0442\u043e\u0435 \u2014 \u0441\u0440\u0435\u0434\u043d\u044e\u044e \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0443 \u0437\u0430 \u0447\u0430\u0441\u044b 02:00:00, 03:00:00 \u0438 04:00:00. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u2014 \u0441\u0440\u0435\u0434\u043d\u044e\u044e \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0443 \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0442\u0440\u0438 \u0447\u0430\u0441\u0430, 21:00:00, 22:00:00 \u0438 23:00:00. \u041f\u0435\u0440\u0432\u044b\u0435 \u0434\u0432\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u0434\u043b\u044f \u0438\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043d\u0435 \u0445\u0432\u0430\u0442\u0438\u043b\u043e \u0434\u0430\u043d\u043d\u044b\u0445.\r\n\r\n\u0413\u0440\u0430\u0444\u0438\u043a\u0430 \u0432 Pandas DataFrame\r\n\r\nPandas \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u043b\u0438 \r\n\u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 DataFrames \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Matplotlib \u0432 \u0444\u043e\u043d\u043e\u0432\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432 \u0432 Pandas \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 Matplotlib.\r\n\r\n\u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0433\u0440\u0430\u0444\u0438\u043a\u0430\u043c\u0438 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \r\n\u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c matplotlib.pyplot:\r\n\r\n>>> import matplotlib.pyplot as plt\r\n\r\n\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0441 Pandas.DataFrame.plot() \r\n \u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0441 plt.show() :\r\n\r\n>>> temp.plot() <matplotlib.axes._subplots.AxesSubplot object \r\nat 0x7f070cd9d950> >>> plt.show()\r\n\r\n\u041a\u043e\u043c\u0430\u043d\u0434\u0430 plot() \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 plot, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \r\n\u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:\r\n \r\n\u0418\u043d\u0444\u043e\u0433\u0440\u0430\u0444\u0438\u043a\u0430: \u041a\u0430\u0442\u044f \u041f\u0430\u0432\u043b\u043e\u0432\u0441\u043a\u0430\u044f \u0434\u043b\u044f Skillbox Media\r\n\r\n\u0422\u043e\u0442 \u0436\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c, \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0432 \r\nplot.line() [ https:\/\/pandas.pydata.org\/pandas-docs\/stable\/reference\/api\/pandas.DataFrame.plot.line.html#pandas.DataFrame.plot.line ] . \u0423 plot() \u0438 plot.line() \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434 \u0433\u0440\u0430\u0444\u0438\u043a\u0430.\r\n\r\n\u0414\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \r\n\u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0451\u043d\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 get_figure().savefig() [ https:\/\/matplotlib.org\/3.1.1\/api\/_as_gen\/matplotlib.figure.Figure.html#matplotlib.figure.Figure.savefig ] :\r\n\r\n>>> temp.plot().get_figure().savefig('temperatures.png')\r\n\r\n\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0433\u0440\u0430\u0444\u0438\u043a \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u0440\u0430\u0431\u043e\u0447\u0435\u043c \r\n\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u043a\u0430\u043a \u0444\u0430\u0439\u043b temperatures.png.\r\n\r\nPandas DataFrame \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \r\n\u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432 [ https:\/\/pandas.pydata.org\/pandas-docs\/stable\/reference\/frame.html#plotting ] . \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e plot.hist() \u043c\u043e\u0436\u043d\u043e \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432 \u0432 \u0432\u0438\u0434\u0435 \u0433\u0438\u0441\u0442\u043e\u0433\u0440\u0430\u043c\u043c\u044b:\r\n\r\n>>> df.loc[:, ['py-score', 'total']].plot.hist(bins=5, alpha=0.4) \r\n<matplotlib.axes._subplots.AxesSubplot object at 0x7f070c69edd0> >>> plt.show()\r\n\r\n\u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u044d\u0442\u043e \u0442\u0430\u043a:\r\n \r\n\u0418\u043d\u0444\u043e\u0433\u0440\u0430\u0444\u0438\u043a\u0430: \u041a\u0430\u0442\u044f \u041f\u0430\u0432\u043b\u043e\u0432\u0441\u043a\u0430\u044f \u0434\u043b\u044f Skillbox Media\r\n\r\n\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0434\u0435\u0442\u0430\u043b\u0438 \u043c\u043e\u0436\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \r\n\u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432: plot.hist(), plt.rcParams \u0438 \u043c\u043d\u043e\u0433\u0438\u0445 \u0434\u0440\u0443\u0433\u0438\u0445. \u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0432\u044b \u043d\u0430\u0439\u0434\u0451\u0442\u0435 \u0432 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u043c \u0443\u0447\u0435\u0431\u043d\u0438\u043a\u0435 Anatomy of Matplotlib .\r\n\r\n\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u0430\u044f \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u0430\r\n\r\nPandas DataFrames \u2014 \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \r\n\u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u043c\u043d\u043e\u0433\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u043d\u0435 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b\u0435 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435:\r\n\r\n- \u0418\u0435\u0440\u0430\u0440\u0445\u0438\u0447\u0435\u0441\u043a\u0443\u044e (\u043c\u043d\u043e\u0433\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u0443\u044e) \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u044e \r\n[ https:\/\/pandas.pydata.org\/pandas-docs\/stable\/user_guide\/advanced.html#hierarchical-indexing-multiindex ] ;\r\n- \u0413\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0443 \r\n;\r\n- \u0421\u043b\u0438\u044f\u043d\u0438\u0435, \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0438 \u043a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0430\u0446\u0438\u044e \r\n ;\r\n- \u0420\u0430\u0431\u043e\u0442\u0443 \u0441 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \r\n.\r\n\r\n\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043e\u043f\u0446\u0438\u0439 \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u043e \r\n\u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0443\u0447\u0435\u0431\u043d\u0438\u043a\u0435 \u043f\u043e Pandas . \u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0437\u043d\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435, \u043c\u043e\u0436\u043d\u043e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430\u043c\u0438 (\u0432\u0441\u0435 \u043e\u043d\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435):\r\n\r\n- \u041e\u0447\u0438\u0441\u0442\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Pandas \u0438 NumPy \r\n;\r\n- Pandas DataFrames 101 \r\n;\r\n- \u0417\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e \u0441 Pandas \u0438 Vincent \r\n;\r\n- Python Pandas: \u043f\u0440\u0438\u0451\u043c\u044b \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \r\n\u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u043d\u0435 \u0437\u043d\u0430\u0442\u044c ;\r\n- \u0418\u0434\u0438\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 Pandas: \u043f\u0440\u0438\u0451\u043c\u044b \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \r\n\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u043d\u0435 \u0437\u043d\u0430\u0442\u044c ;\r\n- \u0427\u0442\u0435\u043d\u0438\u0435 CSV \u0432 Pandas \r\n;\r\n- \u041d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 CSV \u0432 Pandas \r\n;\r\n- \u0427\u0442\u0435\u043d\u0438\u0435 \u0438 \u0437\u0430\u043f\u0438\u0441\u044c \u0444\u0430\u0439\u043b\u043e\u0432 CSV \u0432 Python \r\n;\r\n- \u0427\u0442\u0435\u043d\u0438\u0435 \u0438 \u0437\u0430\u043f\u0438\u0441\u044c \u0444\u0430\u0439\u043b\u043e\u0432 CSV \r\n;\r\n- \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 Pandas \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \r\n\u0444\u0430\u0439\u043b\u043e\u0432 Excel \u0432 Python ;\r\n- \u0411\u044b\u0441\u0442\u0440\u043e, \u0433\u0438\u0431\u043a\u043e, \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u0438\u043d\u0442\u0443\u0438\u0442\u0438\u0432\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e: \r\n\u043a\u0430\u043a \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u0432\u0430\u0448\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0432 Pandas .\r\n\r\n\u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \r\n\u0432 \u0434\u0432\u0443\u0445 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f\u0445, \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Xarray \u2014 \u0435\u0449\u0451 \u043e\u0434\u043d\u0443 \u043c\u043e\u0449\u043d\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 Python, \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0443\u044e \u043d\u0430 Pandas.\r\n\r\n\u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u043e\u0431\u044a\u0451\u043c\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \r\n\u0435\u0441\u0442\u044c \u0442\u0430\u043a\u0436\u0435 DataFrame API \u0432 Dask.\r\n\r\n\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\r\n\r\n\u0418\u0437 \u044d\u0442\u043e\u0433\u043e \u0433\u0430\u0439\u0434\u0430 \u0432\u044b \u0443\u0437\u043d\u0430\u043b\u0438:\r\n\r\n- \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Pandas DataFrame \u0438 \u043a\u0430\u043a \u0435\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c.\r\n- \u041a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f, \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c, \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c, \r\n\u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435.\r\n- \u041a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b NumPy \u0441 DataFrames.\r\n- \u041a\u0430\u043a \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.\r\n- \u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0440\u044f\u0434\u043e\u0432.\r\n- \u041a\u0430\u043a \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0435\u0441\u044f \r\n\u0432 DataFrames.\r\n\r\n\u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u0433\u043b\u0443\u0431\u0436\u0435 \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \r\n\u0432 Python, \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430\u043c\u0438 \u043f\u043e Pandas [ https:\/\/realpython.com\/search?q=pandas ] \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 Real Python.\r\n\r\n\r\n\r\n\u0427\u0438\u0442\u0430\u0439\u0442\u0435 \u0442\u0430\u043a\u0436\u0435:\r\n\r\n- \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0441 Pandas: \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u044f \u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \r\n\u0434\u0430\u043d\u043d\u044b\u0435 \r\n- \u0422\u0435\u0441\u0442: \u0443\u0433\u0430\u0434\u0430\u0439 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430 \r\n\u043f\u043e \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0447\u0435\u043c\u0443 \u0441\u0442\u043e\u043b\u0443 \r\n- \u0427\u0430\u0442-\u0431\u043e\u0442\u044b \u0432 Telegram \u043d\u0430 Python \u0438 Aiogram: \u043f\u0438\u0448\u0435\u043c \r\n\u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0431\u043e\u0442\u0430 ","author":{"@type":"Person","name":"\u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0438\u043d \u0417\u043e\u0442\u043e\u0432","url":"https:\/\/skillbox.ru\/media\/authors\/konstantin-zotov\/"},"publisher":{"@type":"Organization","name":"Skillbox","logo":{"@type":"ImageObject","url":"https:\/\/skillbox.ru\/static\/images\/skillbox.png"}},"mainEntityOfPage":{"@type":"WebPage","url":"https:\/\/skillbox.ru\/media\/code\/pandas-dataframe-kak-upoitelno-rabotat-s-dannymi\/"},"datePublished":"2023-07-20T07:42:00Z","dateModified":"2026-02-19T13:17:27Z","image":{"@type":"ImageObject","url":["https:\/\/248006.selcdn.ru\/main\/iblock\/537\/537aea4bf6ed8de2f00b1f0cc148d05a\/1f09e97bbfa58c1e076f7442b9fbd0cc.png"]},"description":"\u0418\u0441\u0447\u0435\u0440\u043f\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u0433\u0430\u0439\u0434 \u043f\u043e \u0441\u0430\u043c\u043e\u043c\u0443 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u043c\u0443 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0443 \u0432 ML \u043e\u0442 \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u0430 \u043f\u043e data science \u0438 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u043c\u0443 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044e."}
</script><script data-skip-moving="true" id="FiMjZmipVK5U4ODg">if (window.relap) window.relap.ar('FiMjZmipVK5U4ODg');</script> </div>
<script>
window.Section_id = 10;
</script>
</div>
</main>
<footer class="without-buttons">
<div class="footer__wrapper container">
<div class="footer__firstgroup">
<section class="footer__contactbox">
<address class="footer__contacts">
<p class="footer__contacts-block">
<a class="footer__phone link" href="tel:+74951540915">8 (800) 500-05-22</a>
<span class="footer__phone-caption">Контактный центр</span>
</p>
<p class="footer__contacts-block">
<a class="footer__phone link" href="tel:+74952915987">+7(495) 291-59-87</a>
<span class="footer__phone-caption">Отдел заботы о пользователях</span>
</p>
<p class="footer__address"> Москва, Ленинский проспект, дом 6, строение 20</p>
</address>
<ul class="social-contacts footer__social">
<li>
<a class="social-contacts__item" href="https://vk.com/skillbox_education"
aria-label="Вконтакте">
<img src="/static/images/footer/soc_vk.svg"/>
</a>
</li>
<li>
<a class="social-contacts__item"
href="https://www.youtube.com/channel/UC2FJq-Rr7v4SlKAoM7x0ZhA" aria-label="YouTube">
<img src="/static/images/footer/soc_tube.svg"/>
</a>
</li>
<li>
<a class="social-contacts__item" href="tg://resolve?domain=skillboxru"
aria-label="Telegram">
<img src="/static/images/footer/soc_tg.svg"/>
</a>
</li>
</ul>
<div class="footer__age-limit">
16+
</div>
</section>
<section class="footer__rewardbox">
<ul class="rewards footer__rewards">
<li>
<span class="rewards__item">
<img src="/static/images/footer/footer_runet.svg" alt=""/>
<span>Премии Рунета</span>
<span>2018, 2019, 2020</span>
</span>
</li>
</ul>
</section>
</div>
<section class="footer__linksbox">
<ul class="links__list links__list--courses">
<li class="links__item links__item--header">Все направления</li>
<li class="links__item"><a href="/code/?utm_source=media&utm_medium=button&utm_campaign=footerlink_code&utm_term=footer">Программирование</a></li>
<li class="links__item"><a href="/design/?utm_source=media&utm_medium=button&utm_campaign=footerlink_design&utm_term=footer">Дизайн</a></li>
<li class="links__item"><a href="/marketing/?utm_source=media&utm_medium=button&utm_campaign=footerlink_marketing&utm_term=footer">Маркетинг</a></li>
<li class="links__item"><a href="/management/?utm_source=media&utm_medium=button&utm_campaign=footerlink_management&utm_term=footer">Управление</a></li>
<li class="links__item"><a href="/games/?utm_source=media&utm_medium=button&utm_campaign=footerlink_gamedev&utm_term=footer">Игры</a></li>
<li class="links__item"><a href="/multimedia/?utm_source=media&utm_medium=button&utm_campaign=footerlink_multimedia&utm_term=footer">Мультимедиа</a></li>
<li class="links__item"><a href="/psychology/?utm_source=media&utm_medium=button&utm_campaign=footerlink_psychology&utm_term=footer">Психология</a></li>
<li class="links__item"><a href="/general-development/?utm_source=media&utm_medium=button&utm_campaign=footerlink_general-development&utm_term=footer">Общее развитие</a></li>
<li class="links__item"><a href="/engineering/?utm_source=media&utm_medium=button&utm_campaign=footerlink_engineering&utm_term=footer">Инженерия</a></li>
<li class="links__item"><a href="/english/?utm_source=media&utm_medium=button&utm_campaign=footerlink_english&utm_term=footer">Английский язык</a></li>
<li class="links__item"><a href="/other/?utm_source=media&utm_medium=button&utm_campaign=footerlink_other&utm_term=footer">Другое</a></li>
</ul>
<ul class="links__list links__list--about">
<li class="links__item links__item--header">О Skillbox</li>
<li class="links__item"><a href="/company/?utm_source=media&utm_medium=button&utm_campaign=footerlink_aboutskillbox&utm_term=footer">О Платформе</a></li>
<li class="links__item"><a href="/career/?utm_source=media&utm_medium=button&utm_campaign=footerlink_careercentr&utm_term=footer"> Центр карьеры</a></li>
<li class="links__item"><a href="/otzyvy/?utm_source=media&utm_medium=button&utm_campaign=footerlink_testimonials&utm_term=footer">Отзывы</a></li>
<li class="links__item"><a href="/contacts/?utm_source=media&utm_medium=button&utm_campaign=footerlink_skillboxcontacts&utm_term=footer">Контакты</a></li>
<li class="links__item"><a href="/jobs/?utm_source=media&utm_medium=button&utm_campaign=footerlink_jobs&utm_term=footer">Вакансии</a></li>
<li class="links__item"><a href="/teachers/?utm_source=media&utm_medium=button&utm_campaign=footerlink_school&utm_term=footer">Школа кураторов</a></li>
<li class="links__item"><a href="/sale/free/?utm_source=media&utm_medium=button&utm_campaign=footerlink_free&utm_term=footer">Бесплатно</a></li>
<li class="links__item"><a href="/media/topic/tests/?utm_source=media&utm_medium=button&utm_campaign=footerlink_tests&utm_term=footer">Онлайн-тесты</a></li>
</ul>
<ul class="links__list links__list--webinar">
<li class="links__item links__item--header">Вебинары</li>
<li class="links__item"><a href="https://live.skillbox.ru/?utm_source=media&utm_medium=button&utm_campaign=footerlink_webinars&utm_term=footer" target="_blank" rel="noopener">Все вебинары</a></li>
<li class="links__item"><a href="https://live.skillbox.ru/playlists/?utm_source=media&utm_medium=button&utm_campaign=footerlink_playlists&utm_term=footer" target="_blank" rel="noopener">Плейлисты</a></li>
<li class="links__item"><a href="https://live.skillbox.ru/calendar/?utm_source=media&utm_medium=button&utm_campaign=footerlink_schedule&utm_term=footer" target="_blank" rel="noopener">Расписание</a></li>
</ul>
<ul class="links__list links__list--last">
<li class="links__item links__journal"><a href="/media/" target="_blank" rel="noopener">Медиа</a></li>
<li class="links__item"><a href="https://partners.skillbox.ru/?utm_source=media&utm_medium=button&utm_campaign=footerlink_partners&utm_term=footer" target="_blank" rel="noopener">Партнерская программа</a></li>
<li class="links__item"><a href="https://b2b.skillbox.ru/?utm_source=media&utm_medium=button&utm_campaign=footerlink_b2b&utm_term=footer" target="_blank" rel="noopener">Корпоративным клиентам</a></li>
<li class="links__item"><a href="https://career.skillbox.ru/?utm_source=media&utm_medium=button&utm_campaign=footerlink_employees&utm_term=footer" target="_blank" rel="noopener">Для работодателей</a></li>
</ul>
</section>
</div>
<div class="footer__underline container">
<span class="footer__copy">
© Skillbox, 2026 </span>
<div>
<span class="footer__oferta">
<a href="/oferta.pdf" target="_blank">Договор оферты</a>
</span>
<span class="footer__payment">
<a href="/payments/" target="_blank">Оплата</a>
</span>
<span class="footer__use-policy">
<a href="/terms_of_use.pdf" target="_blank">Правила пользования Платформой</a>
<a href="/privacy_policy.pdf" target="_blank">Политика конфиденциальности</a>
</span>
</div>
</div>
</footer>
<div class="cookies">
<p class="cookies__desc">
Пользуясь нашим сайтом, вы соглашаетесь с тем, что
<a href="https://skillbox.ru/privacy_policy.pdf" target="_blank" rel="noopener"
type="application/pdf">мы используем cookies</a> 🍪
</p>
<button type="button" class="cookies__button">
Окей
</button>
</div>
<div class="subscribe-popup subscribe">
<div class="subscribe-popup__spacer-mobile"></div>
<div class="subscribe-popup__row-content ">
<button class="subscribe__close"></button>
<div class="subscribe__content">
<div data-subscribe-popup-success class="hidden">
<h2 class="subscribe__header-success">Спасибо за подписку! Забирайте 5 бесплатных курсов:</h2>
<ul class="subscribe__list-block">
<li>Найти себя в IT за 5 дней</li>
<li>Как найти себя в дизайне в 2025 году</li>
<li>Интерьеры, мебель, ландшафт и декорирование</li>
<li>Интернет-маркетинг на практике</li>
<li>Бизнес-аналитик, продакт- и проджект-менеджер</li>
</ul>
<div class="subscribe__btns-el">
<a
target="_blank"
href="https://refer.id/?bot=skillbox_main_bot&platform=telegram&verbose_name=Skillbox&bot_avatar=https://designer.ftrcdn.com/uploads/bot_avatars/medium_54ab1ce8c393eb3df1474846ce0a0e2c.png&n=137050&c=9209&bc_number=890&?utm_source=media&utm_medium=&utm_campaign=all_all_media_banners_invite_sbornik-890_all_bot_skillbox"
class="subscribe__el-btn">Получить доступ</a>
</div>
</div>
<div data-subscribe-popup-content>
<h2 class="subscribe__header">У нас есть классные рассылки!</h2>
<form action="/media/code/pandas-dataframe-kak-upoitelno-rabotat-s-dannymi/" class="newsletter-form page-subscription__form3" data-type="popup">
<input type="hidden" name="action" value="subscribe">
<div class="subscribe__checkboxes"></div>
<div class="subscribe__email email_popup">
<input class="subscribe-form__input" type="text" name="email" placeholder="Email" >
<span class="subscribe-form__label-name">Электронная почта</span>
<button type="submit" class="popup-btn-click">Подписаться</button>
<span class="email__error">Поле необходимо заполнить</span>
</div>
<div class="subscribe-popup__checkbox-end">
<div class="subscribe-popup__checkbox-item" data-checkbox-personal-data>
<div class="subscribe__checkbox">
<input type="checkbox" name="agreements[PERS]" id="isCheckTrue" value="1" data-checkbox-personal-data-input>
<label for="isCheckTrue"><span>Я согласен на <a target="_blank" href="https://skillbox.ru/legal-docs/chou/file/privacy_policy/version-290425.pdf">обработку персональных данных</a></span></label>
</div>
<span class="email__error">Нужно ваше согласие</span>
</div>
<div class="subscribe__bottom">
<span>Нажимая на кнопку, я соглашаюсь с <a target="_blank" href="https://skillbox.ru/legal-docs/skillbox/file/terms_of_use/version-300824.pdf">правилами пользования Платформой</a></span>
</div>
<div class="subscribe-popup__checkbox-item" data-checkbox-personal-data-two>
<div class="subscribe__checkbox subscribe__checkbox--end" >
<input type="checkbox" name="agreements[ADS]" id="isAdsCalls" value="1" checked="" data-checkbox-personal-data-input-two>
<label for="isAdsCalls">Я согласен <a target="_blank" href="https://skillbox.ru/legal-docs/chou/file/soglasie-na-poluchenie-reklamy.pdf">получать рекламу и звонки</a></label>
</div>
<span class="email__error">Нужно ваше согласие</span>
</div>
</div>
</form>
</div>
</div>
</div>
<!-- src="/static/images/articles/subscribe-popup-img.png" -->
</div>
<div class="bg-modal-overlay bg-modal-overlay--transparent"></div>
<script data-skip-moving="true" id="popup__data--formatted">
$(".popup-btn-click").on("click" , function (){
var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
let input = $(this).closest(".subscribe__email").find(".subscribe-form__input");
let inputValue = input.val();
if(emailPattern.test(inputValue)) {
(window["rrApiOnReady"] = window["rrApiOnReady"] || []).push(function() { rrApi.setEmail(inputValue);});
}
});
/*
window.popupData = {
"8": {
header: 'У нас есть классные рассылки про дизайн!!!',
category: 'Дизайн',
checkboxes: [
'Лучшие статьи про Дизайн',
'«Типографика без боли»'
]
},
"10": {
header: 'У нас есть классные рассылки про код',
category: 'Код',
checkboxes: [
'Лучшие статьи про Код и Людей кода',
'«Жизнь без багов»'
]
},
"18": {
category: 'Геймдев',
checkboxes: []
},
"21": {
header: 'У нас есть классные рассылки про бизнес',
category: 'Бизнес',
checkboxes: [
'Лучшие статьи про Бизнес',
'«Цифровая жизнь»',
'«EdTech по полочкам»'
]
},
"9": {
header: 'У нас есть классные рассылки про бизнес',
category: 'Маркетинг',
checkboxes: [
'Лучшие статьи про Бизнес',
'«Цифровая жизнь»',
'«EdTech по полочкам»'
]
},
"11": {
header: 'У нас есть классные рассылки про бизнес',
category: 'Управление',
checkboxes: [
'Лучшие статьи про Бизнес',
'«Цифровая жизнь»',
'«EdTech по полочкам»'
]
},
"17": {
category: 'Развитие',
checkboxes: []
},
"22": {
header: 'У нас есть классные рассылки про образование',
category: 'Образование',
checkboxes: [
'Лучшие статьи про Образование',
'«EdTech по полочкам»',
'«Мой успешный онлайн-курс»'
]
},
}
*/
window.popupData = {"header":"\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 - \u043d\u0430 \u043f\u043e\u0447\u0442\u0443!\u003Cbr\/\u003E\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u0435\u043c\u0443 \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0438\u003Cbr\/\u003E\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 5 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0445 \u043a\u0443\u0440\u0441\u043e\u0432:","category":"\u041a\u043e\u0434","checkboxes":{"23":"\u041c\u0435\u043d\u0435\u0434\u0436\u043c\u0435\u043d\u0442","24":"\u041c\u0430\u0440\u043a\u0435\u0442\u0438\u043d\u0433","26":"\u041a\u043e\u0440\u043f. \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435","13":"\u0414\u0438\u0437\u0430\u0439\u043d","16":"\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435","15":"\u041e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435","17":"\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438\u0433\u0440","18":"\u041f\u0441\u0438\u0445\u043e\u043b\u043e\u0433\u0438\u044f, \u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e"},"code":"code","scroll":true};
window.subscribePopupShow = 1;
</script>
<div class="copied">
<img src="/static/images/articles/done-circle.svg" alt="" class="copied__icon">
<p class="copied__text">
Ссылка скопирована
</p>
</div>
<!-- <style>@font-face{font-display:swap;font-family:Graphik;font-weight:500;font-style:normal;src:url(https://248006.selcdn.ru/Shared/fonts/GraphikLCTT-VA-Medium.woff2) format("woff2")}@font-face{font-display:swap;font-family:Graphik;font-weight:700;font-style:normal;src:url(https://248006.selcdn.ru/Shared/fonts/GraphikLCTT-VA-Bold.woff2) format("woff2")}.universal-notice{box-sizing:border-box;text-decoration:none;display:none;min-height:48px;color:var(--banner-color);background-color:var(--banner-bg);overflow:hidden;font-family:Graphik,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transition:opacity .25s ease-in-out;transition:opacity .25s ease-in-out}.universal-notice *{box-sizing:inherit}.universal-notice.universal-notice--active{display:block}.universal-notice--bitrix{z-index:1000}.universal-notice__wrapper{position:relative;-webkit-box-pack:start;justify-content:flex-start;display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;margin-left:12px;padding:4px 0}.universal-notice__title{position:relative;flex-shrink:0;width:132px;margin-right:27px;font-size:14px;line-height:20px;text-transform:uppercase}.universal-notice__timer{display:none;margin:0;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.universal-notice__button{flex-shrink:0;min-width:120px;padding:8px 12px;border-radius:25px;font-weight:500;font-size:12px;line-height:16px;color:#3925b7;text-align:center;text-transform:uppercase;background-color:#ffa6a6}@media (min-width:768px){.universal-notice{min-height:72px}.universal-notice__wrapper{-webkit-box-pack:center;justify-content:center;height:72px;margin:0}.universal-notice__title{width:252px;margin-right:32px;margin-left:20px;font-size:24px;line-height:32px}.universal-notice__button{min-width:200px;margin-right:20px;padding:14px 36px;font-size:16px;line-height:20px}}@media (min-width:768px) and (max-width:0px){.universal-notice{min-height:72px}.universal-notice__wrapper{-webkit-box-pack:center;justify-content:center;height:72px;margin:0}.universal-notice__title{width:252px;margin-right:32px;margin-left:20px;font-size:24px;line-height:32px}.universal-notice__button{min-width:200px;margin-right:20px;padding:14px 36px;font-size:16px;line-height:20px}}@media (min-width:1280px) and (max-width:0px){.universal-notice__wrapper{padding:0}.universal-notice__title{width:unset;margin-right:76px}.universal-notice__timer{flex-shrink:0;margin-right:32px;font-weight:700;font-size:24px;line-height:32px}.universal-notice__timer.js-universal-notice-active{display:-webkit-box;display:flex}.universal-notice__days{margin-right:5px}}@media (min-width:1280px){.universal-notice__wrapper{padding:0}.universal-notice__title{width:unset;margin-right:76px}.universal-notice__timer{flex-shrink:0;margin-right:32px;font-weight:700;font-size:24px;line-height:32px}.universal-notice__timer.js-universal-notice-active{display:-webkit-box;display:flex}.universal-notice__days{margin-right:5px}}</style>-->
</body>
</html>