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.21.1/generated/pandas.crosstab.html