Ранее, уже были статьи на тему работы с библиотекой 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]