pandas.crosstab
-
pandas.crosstab(index, columns, values=None, rownames=None, colnames=None, aggfunc=None, margins=False, margins_name='All', dropna=True, normalize=False)[source] -
Вычисление простой сводной таблицы для двух (или более) факторов. По умолчанию вычисляет таблицу частот факторов, если не переданы массив значений и функция агрегирования.
Параметры: -
index : array-like, Series, or list of arrays/Series -
Значения для группировки по строкам.
-
columns : array-like, Series, or list of arrays/Series -
Значения для группировки по столбцам.
-
values : array-like, optional -
Массив значений для агрегирования в соответствии с факторами. Требуется, чтобы был указан
aggfunc. -
rownames : sequence, default None -
Если передано, должно соответствовать количеству массивов строк.
-
colnames : sequence, default None -
Если передано, должно соответствовать количеству массивов столбцов.
-
aggfunc : function, optional -
Если указано, также требуется указать
values. -
margins : bool, default False -
Добавить поля итогов строк/столбцов (подсчёты).
-
margins_name : str, default ‘All’ -
Имя строки/столбца, которое будет содержать итоги, когда margins = True.
Добавлено в версии 0.21.0.
-
dropna : bool, default True -
Не включать столбцы, все значения которых равны NaN.
-
normalize : bool, {‘all’, ‘index’, ‘columns’}, or {0,1}, default False -
Нормализовать, разделив все значения на сумму значений.
- Если передано ‘all’ или
True, будет выполнена нормализация по всем значениям. - Если передано ‘index’, будет выполнена нормализация по каждой строке.
- Если передано ‘columns’, будет выполнена нормализация по каждому столбцу.
- Если margins =
True, будут также нормализованы значения полей итогов.
Добавлено в версии 0.18.1.
- Если передано ‘all’ или
Возвращает: - DataFrame
-
Сводная таблица данных.
См. также
-
DataFrame.pivot - Переформирование данных на основе значений столбцов.
-
pivot_table - Создание сводной таблицы в виде DataFrame.
Примечания
Любые передаваемые Series будут использовать их атрибуты имени, если не указаны имена строк или столбцов для сводной таблицы.
Любой ввод, содержащий категориальные данные, будет включать все его категории в сводную таблицу, даже если фактические данные не содержат каких-либо экземпляров определенной категории.
В случае отсутствия перекрывающихся индексов будет возвращена пустая DataFrame.
Примеры
>>> a = np.array(["foo", "foo", "foo", "foo", "bar", "bar", ... "bar", "bar", "foo", "foo", "foo"], dtype=object) >>> b = np.array(["one", "one", "one", "two", "one", "one", ... "one", "two", "two", "two", "one"], dtype=object) >>> c = np.array(["dull", "dull", "shiny", "dull", "dull", "shiny", ... "shiny", "dull", "shiny", "shiny", "shiny"], ... dtype=object) >>> pd.crosstab(a, [b, c], rownames=['a'], colnames=['b', 'c']) b one two c dull shiny dull shiny a bar 1 2 1 0 foo 2 2 1 2
Здесь ‘c’ и ‘f’ не представлены в данных и не будут отображены в выводе, потому что dropna по умолчанию равно True. Установите dropna=False, чтобы сохранить категории без данных.
>>> foo = pd.Categorical(['a', 'b'], categories=['a', 'b', 'c']) >>> bar = pd.Categorical(['d', 'e'], categories=['d', 'e', 'f']) >>> pd.crosstab(foo, bar) col_0 d e row_0 a 1 0 b 0 1 >>> pd.crosstab(foo, bar, dropna=False) col_0 d e f row_0 a 1 0 0 b 0 1 0 c 0 0 0
-
© 2008–2012, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/0.25.0/reference/api/pandas.crosstab.html