pandas

Удобную шпаргалку по pandas можно найти здесь.

О pandas

pandas (panel data, панельных данных) — python библиотека для работы с таблицами и временными рядами.

pandas — сторонняя библиотека, но входит в дистрибутив anaconda.

conda install pandas

или

pip install anaconda

При импортировании pandas часто пользуются псевдонимом pd:

import pandas as pd

Базовый туториал по работе с библиотекой от разработчиков можно найти здесь.

Основные объекты pandas

Удобно думать об объектах pandas в иерархии: таблицы — контейнер, содержащий более простые объекты — столбцы, которые в свою очередь содержат ещё более простые объекты — значения (единицу данных).

pandas.DataFrame

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

../_images/dataframe.svg

Больше всего DataFrame напоминает лист (SpreadSheet) из Excel таблицы или SQL таблицу. Объекты DataFrame изменяемы, но с некоторыми ограничениями. Можно изменять значения в ячейках таблицы, добавлять новые столбцы на месте, но для добавления строк придется создать новый объект. Ниже приведен пример таблицы pandas, созданной из python словаря.

import pandas as pd


# Создание таблицы из словаря. 
# Ключи словаря используются в качестве названий столбцов
# Значения используются в качестве содержимого таблицы
df = pd.DataFrame(
    {
        "Name": [
            "Ivan",
            "Alex",
            "Jane",
        ],
        "Age": [22, 35, 58],
        "Sex": ["male", "male", "female"],
    }
)

df
Name Age Sex
0 Ivan 22 male
1 Alex 35 male
2 Jane 58 female

pandas.Series

Каждый столбец DataFrameSeries. Тип данных может отличаться в разных столбцах DataFrame объекта (таблицы), но должен быть одинаковым для всех значений Series объекта (столбца).

../_images/series.svg

Объект pandas.Series может существовать и вне таблицы (DataFrame). В целом он похож на одномерный numpy.ndarray, но имеет расширенный индекс. Ниже приводится пример создания pd.Series из списка целых чисел, которому в качестве индекса присваиваются строки.

# Создание pd.Series из списка
# В качестве индекса указывается массив строк
age = pd.Series(
    [22, 35, 58], 
    index=[
        "Ivan", 
        "Alex", 
        "Jane"
        ]
)

age
Ivan    22
Alex    35
Jane    58
dtype: int64

pandas.index

Главным отличием от numpy.ndarray заключается в том, что и DataFrame и Series индексированы специальным объектом pd.index. Благодаря этому датафреймы и серии можно удобно и эффективно индексировать не только целочисленным смещением, как в NumPy, но и строковыми значениями, датами, временными рядами и любыми другими хэшируемыми объектами. В этом отношении объекты pandas похожи на словари, так как они позволяют быстрый доступ к данным по индексу (как бы ключу), но в отличие от словарей

  1. индекс может повторяться для разных строк таблицы/столбца (у словарей ключи уникальны);

  2. объекты pandas упорядочены, т.е. можно быстро получать доступ к значениям и по смещению (словари не упорядоченные объекты).

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

df.index
RangeIndex(start=0, stop=3, step=1)
age.index
Index(['Ivan', 'Alex', 'Jane'], dtype='object')