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 : boolean, default False -
Добавить поля строк/столбцов (подсуммы)
-
margins_name : string, default ‘All’ -
Имя строки/столбца, которое будет содержать итоги, когда margins равно True.
Новое в версии 0.21.0.
-
dropna : boolean, default True -
Не включать столбцы, значения в которых все NaN.
-
normalize : boolean, {‘all’, ‘index’, ‘columns’}, or {0,1}, default False -
Нормализовать, разделив все значения на сумму значений.
- Если указано ‘all’ или
True, будет нормализовано по всем значениям. - Если указано ‘index’, будет нормализовано по каждой строке.
- Если указано ‘columns’, будет нормализовано по каждому столбцу.
- Если margins равно
True, будут нормализованы и значения полей.
Новое в версии 0.18.1.
- Если указано ‘all’ или
Возвращает: -
crosstab : 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']) ... # doctest: +NORMALIZE_WHITESPACE b one two c dull shiny dull shiny a bar 1 2 1 0 foo 2 2 1 2
>>> foo = pd.Categorical(['a', 'b'], categories=['a', 'b', 'c']) >>> bar = pd.Categorical(['d', 'e'], categories=['d', 'e', 'f']) >>> crosstab(foo, bar) # 'c' and 'f' are not represented in the data, # and will not be shown in the output because # dropna is True by default. Set 'dropna=False' # to preserve categories with no data ... # doctest: +SKIP col_0 d e row_0 a 1 0 b 0 1>>> crosstab(foo, bar, dropna=False) # 'c' and 'f' are not represented # in the data, but they still will be counted # and shown in the output ... # doctest: +SKIP 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.24.2/reference/api/pandas.crosstab.html