Boa noite. Você poderia fornecer uma explicação comparativa entre as funções crosstab
e pivot_table
? Pois pelo que entendi as duas tem a mesma finalidade, ou estou errado ? Muito Obrigado!
Boa noite. Você poderia fornecer uma explicação comparativa entre as funções crosstab
e pivot_table
? Pois pelo que entendi as duas tem a mesma finalidade, ou estou errado ? Muito Obrigado!
Oi, tudo bem?
Essa é uma dúvida bem comum, e fico feliz que você esteja explorando ferramentas como crosstab()
e pivot_table()
no Pandas. Ambas servem para resumir dados, mas têm propósitos diferentes. Vamos ver o conceito de cada uma e depois um exemplo prático para ficar bem claro.
crosstab()
: contagem de frequênciasA função crosstab()
cria uma tabela de contingência, ou seja, conta quantas vezes cada combinação de valores aparece. É ideal para análises categóricas simples.
pivot_table()
: resumo de valores numéricosJá a função pivot_table()
é mais flexível e permite fazer cálculos como média, soma, contagem etc., com base em colunas numéricas. Serve para análises mais completas.
Vamos supor este DataFrame:
import pandas as pd
df = pd.DataFrame({
'Sexo': ['F', 'M', 'F', 'M', 'F', 'M'],
'Curso': ['Engenharia', 'Engenharia', 'Medicina', 'Medicina', 'Engenharia', 'Medicina'],
'Nota': [8, 7, 9, 6, 5, 8]
})
crosstab()
:pd.crosstab(df['Sexo'], df['Curso'])
Resultado:
Curso | Engenharia | Medicina |
---|---|---|
F | 2 | 1 |
M | 1 | 2 |
Aqui estamos contando quantas pessoas de cada sexo estão em cada curso.
pivot_table()
:pd.pivot_table(df, index='Sexo', columns='Curso', values='Nota', aggfunc='mean')
Resultado:
Curso | Engenharia | Medicina |
---|---|---|
F | 6.5 | 9.0 |
M | 7.0 | 7.0 |
Aqui estamos calculando a média das notas por sexo e curso.
crosstab()
: para contar quantas vezes algo aparece.pivot_table()
: para calcular médias, somas e outros agregados com dados numéricos.Espero ter ajudado.
Qualquer dúvida que surgir, compartilhe no fórum.
Abraços e bons estudos!
Abaixo compartilho as documentações para você mergulhar ainda mais sobre o tema: