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')