Эти функции полезны, но используются редко.

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

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

1. Праздник

Pandas позволил нам легко анализировать объект данных (datetime), потому что объект Series позволял нам хранить объект datetime. Чтобы упростить работу с данными datetime, в пакете Pandas есть функция класса для создания настраиваемых календарей на праздники. Хотя нам все еще нужно настроить календари, эта функция позволила нам получить все праздничные даты, которые мы создали (или рабочие дни). Давайте попробуем создать праздничные собственные календари.

#Importing the Pandas Function to create the Custom Calendar and The existing holiday
from pandas.tseries.holiday import AbstractHolidayCalendar, Holiday, EasterMonday, Easter
from pandas.tseries.offsets import Day
#Creating the business calendaer and listing the holiday you feel important
class BusinessCalendar(AbstractHolidayCalendar):
rules = [
Holiday('New Years Day', month=1, day=1),
EasterMonday,
Holiday('Easter Day', month=1, day=1, offset=[Easter()]),
Holiday('Ascension Day', month=1, day=1, offset=[Easter(), Day(39)]),
Holiday('Christmas Day', month=12, day=25)
    ]

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

import pandas as pd
from datetime import date
#Creating the year we want to take the holidat date
year = 2021
start = date(year, 1, 1)
end = start + pd.offsets.MonthEnd(12)


# Getting the holidays
cal = BusinessCalendar()
cal.holidays(start=start, end=end)

Вышеуказанная дата - это дата праздника, основанная на настраиваемом классе, созданном ранее в 2021 году. Вы можете изменить год, чтобы у вас был другой пасхальный праздник, поскольку каждый год отличается. Если вы хотите узнать все доступные классы Holiday, вы можете проверить их в документации.

2. Запрос

Функция запроса из пакета Pandas используется для выбора данных человеческими словами. Это функция, разработанная для устранения проблем, связанных с выбором данных, и используется менее многословно. Давайте попробуем это на примере набора данных.

import pandas as pd
import seaborn as sns
mpg = sns.load_dataset('mpg')
mpg.head()

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

data[(data['mpg'] >15) |(data[model_year] == 70)]

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

mpg.query('mpg > 15 or model_year == 70')

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

3. Маска

Функция маски предназначена для объекта Pandas Series и предназначена для замены значений в серии другим значением, но с установленным условием if-else. Проще говоря, вы должны заменить значение в соответствии с желаемым условием. Давайте попробуем использовать функцию маски с примером набора данных mpg.

mpg['mpg'].mask(mpg['mpg'] < 20, 'Less than Twenty' )

При использовании метода маски мы часто передаем методу два параметра; условие и значения для замены. В этом случае я задаю условие, при котором значения миль на галлон меньше 20, а затем заменяю значения на «Меньше двадцати».

Если вам нужно более одного условия, нам нужно связать методы.

mpg['mpg'].mask(mpg['mpg'] < 20, 'Less than Twenty' ).mask(mpg['mpg'] > 30, 'More than Thirty')

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

4. Выделите

Работа с объектом Pandas DataFrame не означает, что мы ничего не можем сделать с эстетикой DataFrame. Фактически, вы можете поэкспериментировать с объектом, чтобы создать визуально интересный DataFrame. Вот почему мы используем функцию стиля для стилизации нашего DataFrame - для представления данных, улучшения эстетики и многого другого.

Вы можете изучить множество функций в рамках функции Style, но я бы показал некоторые из часто используемых функций - Функция выделения.

#Highlight the Highest and the lowest values
mpg[['mpg', 'weight', 'acceleration']].head(10).style.highlight_max(color='yellow').highlight_min(color = 'lightblue')

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

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

mpg[['mpg', 'weight', 'acceleration']].head(10).style.background_gradient(cmap = 'Blues')

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

5. Применить карту

Бывают случаи, когда вы хотите выполнить определенную функцию, которая возвращает значение в DataFrame или Series, обрабатывая все значение в наборе данных. Вот почему вам нужна функция applymap для выполнения намеченной функции для всех значений DataFrame. Позвольте мне показать вам пример.

#Here I create a function to transform each value into string object and return the length of the string
mpg.applymap(lambda x: len(str(x)))

Результатом является объект DataFrame, в котором функция, которую мы передаем функцииapplymap, применяется к каждому значению в наборе данных. Эта applymapфункция специфична для объекта DataFrame. Для объекта Series у нас есть map функция, которая эквивалентна атрибуту Data Frame applymap.

mpg['name'].map(lambda x: len(str(x)))

В bothapplymap или map вам нужно передать функцию, которую вы создали ранее или используя функцию Lambda.

6. Объединение методов

Цепочка методов - это непрерывная функция, выполняемая в одной строке кода для получения результата. Мы используем цепной метод, чтобы уменьшить количество строк, которые мы пишем, и ускорить выполнение функции. Позвольте мне показать вам пример цепочки методов в приведенном ниже коде.

#Method Chaining
mpg.head().describe()

Как вы можете видеть в приведенном выше коде, функция связана одна за другой, чтобы получить результат, показанный на изображении выше. А как насчет того, чтобы объединить собственные функции в цепочку методов? В этом случае мы могли бы использовать функцию pipe для более быстрой функции связывания методов. Давайте воспользуемся примером кода, чтобы лучше понять. Сначала я бы создал две разные функции.

#Function to extract the car first name and create a new column called car_first_name
def extract_car_first_name(df):
    df['car_first_name'] = df['name'].str.split(' ').str.get(0)
    return df
#Function to add my_name after the car_first_name and create a new column called car_and_name
def add_car_my_name(df, my_name = None):
    df['car_and_name'] = df['car_first_name'] + my_name

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

mpg.pipe(extract_car_first_name).pipe(add_car_my_name, my_name = 'Cornellius')
mpg.head()

С помощью функции pipe мы объединяем все функции, которые мы создали, и получили указанный выше результат. Почему мы используем pipe вместо того, чтобы применять функцию непосредственно к DataFrame? Это потому, что функция pipe быстрее по сравнению с прямым выполнением функций.

7. Графика

Знаете ли вы, что пакет Pandas позволяет создавать графики непосредственно из объекта DataFrame или Series? И они даже предоставляют вам некоторые интересные функции построения графиков ?. Возможно, вы знаете простую функцию, например функцию plot.

mpg['mpg'].plot(kind = 'hist')

Однако знаете ли вы, что у Pandas также есть немного более продвинутая функция для построения графиков? Давайте посмотрим на некоторые из этих функций.

  • Сюжет Радвиза
mpg = sns.load_dataset('mpg')
pd.plotting.radviz(mpg.drop(['name'], axis =1), 'origin')

График Radviz - это функция построения графиков для простого проецирования многомерных данных в двухмерное пространство. По сути, эта функция позволяла нам визуализировать 3-х мерные данные или более в 2-х мерную визуализацию.

  • Bootstrap_plot
pd.plotting.bootstrap_plot(mpg['mpg'],size = 50 , samples = 500)

График Boostrap - это функция построения графика, позволяющая определить неопределенность фундаментальной статистики, такой как среднее значение и медиана, путем повторной выборки данных с заменой (вы можете выполнять выборку одних и тех же данных несколько раз). Возьмем пример изображения выше. Приведенный выше средний график показывает, что большая часть результата составляет около 23, но может быть между 22,5 и 25 (более или менее). Это установило неопределенность в реальном мире, что среднее значение для популяции может быть между 22,5 и 25.

  • Матрица разброса
pd.plotting.scatter_matrix(mpg, figsize = (12,12))
plt.show()

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

Заключение

Pandas - это широко используемый пакет для обработки данных специалистами по анализу данных. Однако в этом пакете есть много функций, о которых многие не знали.

В этой статье я пытаюсь объяснить 7 функций, которые, как мне кажется, редко используются многими. Они есть:

  1. Праздничный день
  2. Запрос
  3. Маска
  4. Выделять
  5. Применить карту
  6. Цепочка методов
  7. Сюжет

Я надеюсь, что это помогает!

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

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

Посетите меня в моем LinkedIn или Twitter.