pandas
Contents
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 — двумерная структура данных, которая может хранить данные разных типов в столбцах.
Больше всего 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¶
Каждый столбец DataFrame — Series. Тип данных может отличаться в разных столбцах DataFrame объекта (таблицы), но должен быть одинаковым для всех значений Series объекта (столбца).
Объект 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 похожи на словари, так как они позволяют быстрый доступ к данным по индексу (как бы ключу), но в отличие от словарей
индекс может повторяться для разных строк таблицы/столбца (у словарей ключи уникальны);
объекты pandas упорядочены, т.е. можно быстро получать доступ к значениям и по смещению (словари не упорядоченные объекты).
Кроме того, такая индексация позволяет без особых усердий со стороны программиста выравнивать данные из разных источников. Ниже выводятся индексы созданных ранее объектов pandas. Индекс таблицы сгенерировался автоматически, т.к. не был явно указан при создании. Индекс столбца соответствует переданным при создании объекта значениям.
df.index
RangeIndex(start=0, stop=3, step=1)
age.index
Index(['Ivan', 'Alex', 'Jane'], dtype='object')