Структура данных DataFrame

  • Автор записи:
  • Запись опубликована:08.01.2024
  • Рубрика записи:Python

Ранее, уже были статьи на тему работы с библиотекой pandas (“Функции в Pandas при работе с DataFrame. Часть 1”, “Дублирование строк Pandas в зависимости от значений в столбце датафрейма”), сейчас же мы попробуем в этом цикле статей описать все элементы и работу с ними. В данной статье мы рассмотрим структуру данных DataFrame.

DataFrame представляет собой двумерную структуру – то есть полноценную таблицу с множеством строк и столбцов.

DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)

  • data ( ndarray, dict или DataFrame) – данные на базе которых будет создан DataFrame;
  • index (одномерный массив) – имена строк таблицы;
  • columns (одномерный массив) – имена столбцов таблицы;
  • dtype (numpy.dtype) – объект, определяющий тип данных;
  • copy (bool) – если True, то будет создана копия массива данных.

Структуру DataFrame можно создать на базе следующих типов данных:

  • словарь (dict), в качестве элементов которого могут выступать: одномерные ndarray, списки, другие словари, структуры Series;
  • двумерный ndarray;
  • структура Series;
  • другой DataFrame.

Рассмотрим способы создания DataFrame’ов.

Создание из словаря

Для создания DataFrame будем использовать словарь, элементами которого могут быть списки, структуры Series и т.д. Начнем со варианта, когда элементы — это структуры Series:

d = {'price':pd.Series([1, 2, 3], index=['v1', 'v2', 'v3']),'count':
pd.Series([10, 12, 7], index=['v1', 'v2', 'v3'])}
df = pd.DataFrame(d)
print(df)

Построим аналогичный словарь, но на элементах ndarray:

d2 = {'price':np.array([1, 2, 3]), 'count': np.array([10, 12, 7])}
df2 = pd.DataFrame(d2, index=['v1', 'v2', 'v3'])
print(df2)

Как видно – результат аналогичен предыдущему. Вместо ndarray можно использовать обычный список Python.

Создание из списка словарей

До этого мы создавали DataFrame из словаря, элементами которого были структуры Series, списки и массивы, сейчас мы создадим DataFrame из списка, элементами которого являются словари:

d = [{'price': 3, 'count':8}, {'price': 4, 'count': 11}]
df = pd.DataFrame(d)
print(df)

Для получения сводной информации по созданному DataFrame можно использовать функцию info(). Она выводит данные о типе структуры, количестве записей, количестве non-null элементов в столбцах, типы и количество хранимых элементов и объем используемой памяти:

Создание из двумерного массива

Создать DataFrame можно также и из двумерного массива, в нашем примере это будет ndarray из библиотеки numpy:

nda = np.array([[1, 2, 3], [10, 20, 30]])
df = pd.DataFrame(nda)
print(df)

Работа с элементами DataFrame

Работа с элементами DataFrame – тема достаточно обширная, попробуем рассмотреть наиболее часто используемые подходы для доступа к элементам структуры.

ОперацияСинтаксисВозвращаемый результат
Выбор столбцаdf[col]Series
Выбор строки по меткеdf.loc[label]Series
Выбор строки по индексуdf.loc[label]Series
Срез по строкамdf[0:4]DataFrame
Выбор строк, отвечающих условиюdf[bool_vec]DataFrame

Рассмотрим работу с данными операциями на практике. Для начала создадим DataFrame:

d = {'price':np.array([1, 2, 3]), 'count': np.array([10, 20, 30])}
df = pd.DataFrame(d, index=['a', 'b', 'c'])
print(df)

Выбор столбца

df['count']

Выбор строки по метке

df.loc['a']

Выбор строки по индексу

df.iloc[1]

Срез по строкам

df[0:2]

Выбор строк, отвечающих условию

df[df['count'] >= 20]

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.