pandas.crosstab
- pandas.crosstab(index, columns, values=None, rownames=None, colnames=None, aggfunc=None, margins=False, margins_name='All', dropna=True, normalize=False)[source]
-
Вычисляет простую сводку данных по двум (или более) факторам.
По умолчанию вычисляет таблицу частот факторов, если не указаны массив значений и функция агрегации.
- Parameters
-
- 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:str, по умолчанию ‘All’
-
Имя строки/столбца, который будет содержать итоги, когда margins=True.
- dropna:bool, по умолчанию True
-
Не включать столбцы, все записи которых содержат NaN.
- normalize:bool, {‘all’, ‘index’, ‘columns’}, или {0,1}, по умолчанию False
-
Нормализовать, разделив все значения на сумму значений.
Если передано ‘all’ или True, нормализует по всем значениям.
Если передано ‘index’, нормализует по каждой строке.
Если передано ‘columns’, нормализует по каждому столбцу.
Если margins=True, также нормализует значения полей итогов.
- Returns
-
- 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/1.5.0/reference/api/pandas.crosstab.html