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 : массив-подобный объект, Series или список массивов/Series
Значения для группировки по строкам
columns : массив-подобный объект, Series или список массивов/Series
Значения для группировки по столбцам
values : массив-подобный объект, необязательно
Массив значений для агрегирования по факторам. Требуется, чтобы был указан
aggfunc.aggfunc : функция, необязательно
Если указано, также необходимо указать
values.rownames : последовательность, по умолчанию None
Если передано, должно совпадать с количеством переданных строковых массивов
colnames : последовательность, по умолчанию None
Если передано, должно совпадать с количеством переданных столбцовых массивов
margins : булево значение, по умолчанию False
Добавить поля маржи (суммарные значения) по строкам/столбцам
margins_name : строка, по умолчанию ‘All’
Имя строки/столбца, содержащего итоги, когда margins равно True.
Новое в версии 0.21.0.
dropna : булево значение, по умолчанию True
Не включать столбцы, значения которых равны NaN во всех записях
normalize : булево значение, {‘all’, ‘index’, ‘columns’} или {0,1}, по умолчанию False
Нормализация путем деления всех значений на сумму значений.
- Если передано ‘all’ или
True, нормализация производится по всем значениям. - Если передано ‘index’, нормализация производится по каждой строке.
- Если передано ‘columns’, нормализация производится по каждому столбцу.
- Если margins равно
True, значения маржи также нормализуются.
Новое в версии 0.18.1.
Возвращает: -
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']) ... 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, ... # but they still will be counted in the output ... col_0 d e f row_0 a 1 0 0 b 0 1 0 c 0 0 0
- Если передано ‘all’ или
© 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.23.4/generated/pandas.crosstab.html