В этом руководстве мы рассмотрим сводные функции и карты.

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

Суммарные функции:

Pandas предоставляет множество простых «суммирующих функций» (не официальное название), которые реструктурируют данные каким-либо полезным способом. Например, рассмотрим метод describe():

reviews.points.describe()

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

некоторые другие функции, которые следует отметить, объясняются ниже:

# this will give you the mean value of the points column
reviews.points.mean()                                   
#this will give you a list of all the unique values in the column
reviews.taster_name.unique()
# this will give a Series containing all the values in the column and the #number of their appearances
reviews.taster_name.value_counts()

Карты :

Карта – это термин, заимствованный из математики, для обозначения функции, которая принимает один набор значений и "сопоставляет" их с другим набором значений. В науке о данных у нас часто возникает потребность в создании новых представлений из существующих данных или в преобразовании данных из формата, в котором они находятся сейчас, в формат, в котором мы хотим, чтобы они были в будущем. Карты — это то, что справится с этой работой, что делает их чрезвычайно важными для выполнения вашей работы!

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

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

# first we are going to store the mean value in a variable
review_points_mean = reviews.points.mean()
# then we are going to use the map function to apply a lambda function on 
#all the rows in that column
reviews.points.map(lambda p: p - review_points_mean)

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

apply() — это эквивалентный метод, если мы хотим преобразовать весь DataFrame, вызвав пользовательский метод для каждой строки.

# First we define the function we are going to apply on all the DataFrame
def remean_points(row):
    row.points = row.points - review_points_mean
    return row
# Next we use the apply function to apply that function on all the #DataFrame
reviews.apply(remean_points, axis='columns')

Если бы мы вызывали reviews.apply() с axis='index', то вместо передачи функции для преобразования каждой строки нам нужно было бы указать функцию для преобразования каждого столбца.

Обратите внимание, что map() и apply() возвращают новые, преобразованные Series и DataFrames соответственно. Они не изменяют исходные данные, к которым они обращаются. Если мы посмотрим на первую строку reviews, то увидим, что она по-прежнему имеет исходное значение points.

Панды также предлагают нам некоторые общие операции сопоставления в качестве встроенных, вот более быстрый способ переопределения нашего столбца точек:

review_points_mean = reviews.points.mean()
reviews.points - review_points_mean

Эти операторы быстрее, чем map() или apply(), потому что они используют ускорение, встроенное в pandas. Все стандартные операторы Python (>, <, == и т. д.) работают таким образом.

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