Найти в Дзене
Сам себе Data Scientist

Руководство по Pandas Series

Оглавление

Pandas — это популярная и очень мощная библиотека на языке Python, предназначенная для анализа данных и манипуляций с табличными структурами. Она была создана для того, чтобы эффективно работать с данными так, как мы привыкли в электронных таблицах (например, Excel), но при этом обладала гибкостью и быстродействием, характерными для Python и научного стека (NumPy, SciPy и др.).

Pandas включает в Python две дополнительные структуры данных, а именно Pandas Series и Pandas DataFrame. Эти структуры данных позволяют нам работать с маркированными и реляционными данными простым и интуитивно понятным способом.

Для тех, кто не может ждать, вот ссылка на Jupyter Notebook:

pandas-tutorial/pandas-series-tutorial.ipynb at main · ssmelkov/pandas-tutorial

Series

Series — это одномерная структура, чем-то похожая на обычный список (array), но с одним важным отличием: у каждого элемента есть своя метка (индекс). Причём Pandas поддерживает различные типы данных, включая числа, строки, даты и т. д.

Почему это полезно?

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

Создание Series

  • Из списка
-2
  1. Слева (0, 1, 2, 3) — это индекс.
  2. Справа (10, 20, 30, 40) — значения.
  3. Name: Пример Series — это имя Series.

  • из NumPy-массива (ndarray)
-3

Индексы будут по умолчанию 0, 1, 2, 3....

  • из словаря (dict)
-4

Когда удобнее использовать Series?

  1. Когда у вас есть одномерные данные (например, последовательность чисел, список категорий, результаты эксперимента), и вам нужно работать с ними удобнее, чем в чистом list или ndarray.
  2. Когда вы хотите иметь индексы (названия), а не просто позиции [0, 1, 2, ...]. Индексы помогают семантически понимать и выбирать элементы.
  3. Когда нужна совместимость с функционалом Pandas (например, группировка, функции агрегации, фильтрация и т. п.) для одномерных данных.

Задание собственного набора индексов

Можно вручную задать индексы, если не хочется, чтобы Pandas автоматически их присваивал:

-5

Индексация и выбор данных в Series

1. Индексация по метке (loc)

Если у вашей Series индексы — строки (например, «Яблоко»), то можно обращаться по названиям через .loc:

-6

Можно также передавать список меток:

-7

Или использовать «срез по меткам» (если индексы, например, упорядочены лексикографически).

2. Индексация по позиции (iloc)

Есть способ выборки по числовым позициям (0, 1, 2...):

-8

3. Прямое обращение (квадратные скобки)

-9

Операции и функции с Series

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

1. Арифметика

Предположим, есть два Series, в которых индексы совпадают (хотя бы частично):

-10

Операции выполняются по индексам. Если индекс не найден во втором Series, получается NaN.

2. Применение математических функций

-11

Или можно использовать методы Pandas напрямую:

-12

Функция ".apply()" применяет любую функцию к каждому элементу.

3. Фильтрация (булевская маска)

-13

Булевская маска [prices > 80] оставляет только те элементы, где условие True.

4. Пропущенные значения (NaN)

Как и в DataFrame, в Series могут быть пропуски. Например, результат арифметических операций или если вы явно задали None / np.nan.

-14

Можно использовать dropna(), fillna() и т. д.

-15

5. Проверка, существует ли индексная метка в Series

-16

6. Изменение элементов

-17

7. Удаление элементов

-18

Изменение индекса: reindex, rename

1. reindex()

Метод reindex() позволяет «подогнать» Series к новому набору индексов. Пример:

-19
  • Новый индекс — «А», «Б», «В», «Г».
  • Для «Г» не было значения, поэтому fill_value=0.

2. rename()

Можно переименовать индексы:

-20

Или изменить ".name" (имя самой Series):

-21

Другие полезные методы Series

1. value_counts() — подсчитывает, сколько раз встречается каждое значение в Series. Отлично для категориальных (строковых) данных:

-22

2. Статистические методы: sum(), mean(), median(), min(), max(), std(), var(), count(), nunique().

-23

3. sort_values() — сортировка:

-24

ascending=False задаёт обратный порядок, по убыванию.

4. unique() и drop_duplicates() (для удаления дублей или извлечения уникальных значений).

-25

5. apply() и map() — применяют функцию к каждому элементу.

-26

Важные атрибуты Series

1. shape

  • Возвращает кортеж, в котором указаны размеры по каждому измерению.
  • Для Series это всегда (n,), где n — число элементов.
-27

Это значит, что в Series 4 элемента.

2. size

  • Показывает общее количество элементов (число).
  • Для одномерной Series size будет равно количеству строк.
-28

3. values

  • Возвращает массив значений (обычно это numpy.ndarray), без индексов.
  • Удобно, когда нужно получить «сырые» данные.
-29

4. index

  • Возвращает объект индекса (Index), который содержит метки элементов.
  • Можно получить список меток или переопределить их.
-30

Если задать свой индекс:

-31

5. ndim

  • Возвращает число измерений структуры.
  • Для Series всегда 1 (одномерная структура).
-32

Когда Series нужны «точно»?

  1. Если нужны именованные одномерные данные. Классический пример — когда у вас есть «цены товаров», «количество заказов», «имена сотрудников» и вы хотите хранить их в структуре с индексами, а не в обычном списке.
  2. Если вы обращаетесь к одному столбцу DataFrame. При обращении df["Колонка"] вы получаете именно Series. Все операции, описанные выше, можно делать над этим столбцом.
  3. Гибкая выборка и фильтрация: благодаря индексам, Series упрощает манипуляции с отдельными записями — легче, чем в простом списке.
  4. Слияния и арифметика по индексам: если у вас есть два списка данных (например, цены в разные дни) и вы хотите автоматически совмещать их по названиям, то Series сделает это прозрачно, выдавая `NaN там, где нет пересечения.

Ссылка на Jupyter Notebook:

pandas-tutorial/pandas-series-tutorial.ipynb at main · ssmelkov/pandas-tutorial

Основной телеграм канал:

Сергей Смелков | ИИ боты | ChatGPT

Полезные статьи: