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 или список массивов/Series
-
Значения для группировки по строкам.
- columns:array-like, Series или список массивов/Series
-
Значения для группировки по столбцам.
- values:array-like, необязательно
-
Массив значений для агрегирования по факторам. Требуется указание aggfunc.
- rownames:последовательность, по умолчанию None
-
Если передано, должно соответствовать числу переданных массивов строк.
- colnames:последовательность, по умолчанию None
-
Если передано, должно соответствовать числу переданных массивов столбцов.
- aggfunc:функция, необязательно
-
Если указано, требует также указания values.
- margins:bool, по умолчанию False
-
Добавить итоговые строки/столбцы (подсчёты).
- margins_name:строка, по умолчанию ‘All’
-
Имя строки/столбца, которое будет содержать итоги, когда margins равно True.
- dropna:bool, по умолчанию True
-
Не включать столбцы, у которых все записи равны NaN.
- normalize:bool, {‘all’, ‘index’, ‘columns’}, или {0,1}, по умолчанию False
-
Нормализовать, разделив все значения на сумму значений.
Если передано ‘all’ или True, нормализует по всем значениям.
Если передано ‘index’, нормализует по каждой строке.
Если передано ‘columns’, нормализует по каждому столбцу.
Если margins равно True, также нормализует значения итогов.
- Возвращает:
-
- 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–2022, 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/2.2.2/reference/api/pandas.crosstab.html