pandas.crosstab#
- pandas.crosstab(index, столбцы, values=None, имена строк=None, colnames=None, aggfunc=None, поля итогов=False, margins_name='All', dropna=True, нормализовать=False)[источник]#
Вычислить простую перекрёстную таблицу двух (или более) факторов.
По умолчанию вычисляет таблицу частот факторов, если не переданы массив значений и агрегирующая функция.
- Параметры:
- indexмассивоподобный, Series или список массивов/Series
Значения для группировки по строкам.
- столбцымассивоподобный, Series или список массивов/Series
Значения для группировки по столбцам.
- valuesподобный массиву, необязательный
Массив значений для агрегации в соответствии с факторами. Требует aggfunc должен быть указан.
- имена строкпоследовательность, по умолчанию None
Если передано, должно соответствовать количеству переданных массивов строк.
- colnamesпоследовательность, по умолчанию None
Если передано, должно соответствовать количеству переданных массивов столбцов.
- aggfuncфункция, необязательный
Если указано, требует values также может быть указан.
- поля итоговbool, по умолчанию False
Добавить поля итогов по строкам/столбцам (промежуточные итоги).
- margins_namestr, по умолчанию 'All'
Имя строки/столбца, которое будет содержать итоги когда margins равно True.
- dropnabool, по умолчанию True
Не включать столбцы, все записи которых являются NaN.
- нормализовать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