10 важных функций Pandas, которые должен знать каждый ученый-данных

10 важных функций Pandas, которые должен знать каждый ученый-данных' - Узнайте о 10 важных функциях Pandas, необходимых каждому ученому-данных

 

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

В этом учебнике мы рассмотрим наиболее мощную библиотеку Python – pandas, и обсудим наиболее важные функции этой библиотеки, необходимые для анализа данных. Начинающие также могут следовать этому учебнику благодаря его простоте и эффективности. Если у вас нет установленного Python на вашей системе, вы можете использовать Google Colaboratory.

 

Импорт данных

 

Вы можете скачать набор данных по этой ссылке.

import pandas as pddf = pd.read_csv("kaggle_sales_data.csv", encoding="Latin-1")  # Загрузить данныеdf.head()  # Показать первые пять строк

 

Вывод:

 

 

Исследование данных

 

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

 

1. Просмотр данных

 

  1. df.head(): Отображает первые пять строк образца данных

  

  1. df.tail(): Отображает последние пять строк образца данных

  

  1. df.sample(n): Отображает случайные n количество строк в образце данных
df.sample(6)

 

 

  1. df.shape: Отображает количество строк и столбцов (размеры) образца данных.
(2823, 25)

 

Это означает, что наш набор данных содержит 2823 строки, каждая из которых содержит 25 столбцов.

 

2. Статистика

 

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

  1. df.describe(): Получает основные статистические показатели для каждого столбца образца данных

  

  1. df.info(): Получает информацию о различных используемых типах данных и количестве ненулевых значений в каждом столбце.

      

  2. df.corr(): Дает матрицу корреляции между всеми столбцами целочисленного типа в таблице данных.

  

  1. df.memory_usage(): Показывает, сколько памяти используется каждым столбцом.

 

 

3. Выбор данных

 

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

  1. df.iloc[номер_строки]: Будет выбирать определенную строку на основе ее индекса

Например,

df.iloc[0]

 

  1. df[имя_столбца]: Будет выбирать конкретный столбец

Например,

df["SALES"]

 

Вывод:

  

  1. df[[‘col1’, ‘col2’]]: Будет выбирать несколько столбцов указанных

Например,

df[["SALES", "PRICEEACH"]]

 

Вывод:

 

 

4. Чистка данных

 

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

  1. df.isnull(): Это позволит определить отсутствующие значения в вашем фрейме данных.
  2. df.dropna(): Это удалит строки, содержащие отсутствующие значения в любом столбце.
  3. df.fillna(val): Это заполнит отсутствующие значения указанным значением val.
  4. df[‘col’].astype(новый_тип_данных): Она может преобразовать тип данных выбранного столбца в другой тип данных.

Например,

df["SALES"].astype(int)

 

Мы преобразуем тип данных столбца SALES из float в int.

 

 

5. Анализ данных

 

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

  1. Функции агрегации:

Вы можете сгруппировать столбец по его имени и затем применить некоторые функции агрегации, такие как сумма, мин/макс, среднее значение и т. д.

df.groupby("имя_столбца_1").agg({"имя_столбца_2": "sum"})

 

Например,

df.groupby("CITY").agg({"SALES": "sum"})

 

Это даст вам общий объем продаж для каждого города.

  

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

Например,

aggregation = df.agg({"SALES": "sum", "QUANTITYORDERED": "mean"})

 

Вывод:

SALES              1.003263e+07QUANTITYORDERED    3.509281e+01dtype: float64

 

  1. Фильтрация данных:

Мы можем фильтровать данные в строках на основе определенного значения или условия.

Например,

df[df["SALES"] > 5000]

Отображает строки, где значение продаж больше 5000

Вы также можете фильтровать фрейм данных с помощью функции query(). Она также создаст аналогичный результат, как указано выше.

Например,

df.query("SALES" > 5000)
  1. Сортировка данных:

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

Например,

df.sort_values("SALES", ascending=False)  # Сортирует данные в порядке убывания
  1. Сводные таблицы:

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

Например,

pd.pivot_table(df, values="SALES", index="CITY", columns="YEAR_ID", aggfunc="sum")

Давайте разберем это.

  1. values: содержит столбец, для которого вы хотите заполнить ячейки таблицы.
  2. index: столбец, который будет использоваться в качестве индекса строк сводной таблицы, а каждая уникальная категория этого столбца станет строкой в сводной таблице.
  3. columns: содержит заголовки сводной таблицы, и каждый уникальный элемент станет столбцом в сводной таблице.
  4. aggfunc: это та же агрегирующая функция, о которой мы говорили ранее.

Вывод:

Вывод показывает график, который показывает общие продажи в конкретном городе за определенный год.

6. Объединение фреймов данных

Мы можем объединять и сливать несколько фреймов данных как горизонтально, так и вертикально. Это объединяет два фрейма данных и возвращает один объединенный фрейм данных.

Например,

combined_df = pd.concat([df1, df2])

Вы можете объединить два фрейма данных на основе общего столбца. Это полезно, когда вы хотите объединить два фрейма данных, которые имеют общий идентификатор.

Например,

merged_df = pd.merge(df1, df2, on="common_col")

7. Применение пользовательских функций

Вы можете применять пользовательские функции в соответствии с вашими потребностями как в строке, так и в столбце.

Например,

def cus_fun(x):    return x * 3df["Sales_Tripled"] = df["SALES"].apply(cus_fun, axis=0)

Мы написали пользовательскую функцию, которая утраивает значение продаж для каждой строки. axis=0 означает, что мы хотим применить пользовательскую функцию к столбцу, а axis=1 означает, что мы хотим применить функцию к строке.

В предыдущем методе вам нужно было написать отдельную функцию, а затем вызвать ее из метода apply(). Лямбда-функция помогает вам использовать пользовательскую функцию прямо внутри метода apply(). Посмотрим, как мы можем это сделать.

df["Sales_Tripled"] = df["SALES"].apply(lambda x: x * 3)

Applymap:

Мы также можем применить пользовательскую функцию к каждому элементу фрейма данных в одной строке кода. Но нужно помнить, что это применимо ко всем элементам в фрейме данных.

Например,

df = df.applymap(lambda x: str(x))

 

Это преобразует тип данных всех элементов в строку в данных.

 

8. Анализ временных рядов

 

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

Преобразование в объект DateTime:

Мы можем преобразовать столбец с датами в формат datetime для более удобной обработки данных.

Например,

df["ORDERDATE"] = pd.to_datetime(df["ORDERDATE"])

 

Результат:

  

Расчет скользящего среднего:

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

Например-

rolling_avg = df["SALES"].rolling(window=5).mean()

 

Результат:

 

 

9. Кросс-табуляция

 

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

Например,

Получение кросс-табуляции между столбцами COUNTRY и DEALSIZE.

cross_tab = pd.crosstab(df["COUNTRY"], df["DEALSIZE"])

 

Это может показать вам размер заказа (‘DEALSIZE’), заказанный разными странами.

 

 

10. Обработка выбросов

 

Выбросы в данных означают, что определенная точка выходит далеко за пределы среднего диапазона. Давайте разберемся на примере. Предположим, у вас есть 5 точек, скажем, 3, 5, 6, 46, 8. Тогда мы можем с уверенностью сказать, что число 46 является выбросом, потому что оно значительно отличается от среднего значения остальных точек. Эти выбросы могут привести к неверной статистике и должны быть удалены из набора данных.

Здесь pandas приходит на помощь в поиске этих возможных выбросов. Мы можем использовать метод под названием межквартильный размах (IQR), который является общим методом для поиска и обработки этих выбросов. Вы также можете прочитать о этом методе, если вам нужна информация о нем. Вы можете узнать больше о них здесь.

Давайте посмотрим, как мы можем сделать это с помощью pandas.

Q1 = df["SALES"].quantile(0.25)Q3 = df["SALES"].quantile(0.75)IQR = Q3 - Q1lower_bound = Q1 - 1.5 * IQRupper_bound = Q3 + 1.5 * IQRoutliers = df[(df["SALES"] < lower_bound) | (df["SALES"] > upper_bound)]

 

Q1 – первый квартиль, представляющий 25-ю перцентиль данных, а Q3 – третий квартиль, представляющий 75-й перцентиль данных.

Переменная lower_bound хранит нижнюю границу, которая используется для поиска потенциальных выбросов. Его значение задается как 1,5 раза IQR ниже Q1. Аналогично, upper_bound вычисляет верхнюю границу, 1,5 раза IQR выше Q3.

После этого вы фильтруете выбросы, которые меньше нижней или больше верхней границы.

 

 

Обернем это

 

Библиотека Python pandas позволяет нам выполнять сложный анализ данных и манипуляции. Это лишь некоторые из них. Вы можете найти еще несколько инструментов в документации по pandas. Одна важная вещь, которую следует запомнить, заключается в том, что выбор техник может быть специфическим и предоставлять то, что вам необходимо и на каком наборе данных вы работаете.  

[Арьян Гарг](https://www.linkedin.com/in/aryan-garg-1bbb791a3/) – студент электротехнического факультета, находящийся на последнем курсе обучения. Его интересы лежат в области веб-разработки и машинного обучения. Он преследует эти интересы и стремится работать еще активнее в этих направлениях.