A função "Crosstab ()" em pandas cria uma tabela de tabulação cruzada que exibe a frequência com que os conjuntos específicos de dados aparecem. O método “Crosstab ()” é uma das várias técnicas em pandas que permite reestruturar seus dados. Este post explica como utilizar a função "Crosstab ()".
Crosstab () Sintaxe:
Pandas.crosstab (índice, colunas, valores = nenhum, rowames = nenhum, colnames = nenhum, margens = false, margins_name = 'all', Dropna = true, normalize = false)
Parâmetros:
- Aqui, o primeiro parâmetro é o "índice", que são os valores utilizados como o índice do quadro de dados de saída. Pode ser uma matriz, série ou várias matrizes ou séries.
- As "colunas" são as colunas do quadro de dados gerados.
- Os "valores" são os valores utilizados para calcular a estatística fornecida por "agg _func".
- Os "Rowneames" são o (s) nome (s) que são alocados para as linhas no quadro de dados resultantes. Os "nomes rownes = nenhum" são a configuração padrão para este argumento.
- O "Colnames" é o (s) nome (s) da coluna, que são fornecidos ao quadro de dados de saída. O "colnames = nenhum" é a configuração padrão. A entrada desta função é "valores" e o elemento de retorno é a estatística agregada, como a média, o máximo, etc.
- As "margens" determinam se adicionar uma linha e coluna extra que mostram a soma das células em termos de linha e em coluna. A "margem = falsa" é a configuração padrão.
- O "nome das margens" é o título da recém-anexada linha e coluna se as "margens" forem configuradas para "verdadeiro".
- O "Dropna" determina se deve remover as colunas com apenas valores de nan. O "Dropna = false" é a configuração padrão.
- O "normalizar" diz se deve normalizar os números obtidos dividindo -se pelo total.
Exemplo 1:
Crie um quadro de dados com 5 colunas e gerar uma tabela de contingência (guia cruzada) definindo o eixo x como coluna “Opção2” e eixo y como “nome”.
Importar pandas
# Crie um DataFrame com 5 colunas
mydata = pandas.DataFrame ([[1, "Sravan", "Cloud Technology", "Bathabases", 89],
[2, "Sravan", "Python", "Frontend Programming", 98],
[3, "Sravan", "Eletiva 1", "Bancos de dados", 50],
[5, "SATWIK", "PHP", "Banco de dados", 99],
[6, "DIBA", "PHP", "Bancos de dados", 19],
[9, "Diba", "Eletiva 1", "Programação de Frontend", 54],
],
colunas = ["ID do exame", "nome", "opção1", "option2", "Marks"]
)
Imprimir (mydata, "\ n")
# Vamos usar a função CrosStab ()
Frequência = pandas.Crosstab (mydata.opção2, mydata.nome)
Imprimir (frequência)
Saída:
Explicação:
Passamos a coluna "Opção2" como eixo x e a coluna "Nome" como eixo y. Agora, você pode ver na ilustração anterior que a tabela de frequência é gerada. Vamos analisar.
- "Bancos de dados" - "DIBA" Hold apenas 1, "Satwik" também 1 e "Sravan" 2.
- "Programação de front -end" - "DIBA" detém apenas 1, "Satwik" detém 0, e "Sravan" também é 1.
Exemplo 2:
Utilize o mesmo DataFrame e gerar uma tabela de contingência (guia cruzada), definindo o eixo x como colunas "Opção1" e "Opção2" e o eixo Y como "Nome".
Importar pandas
# Crie um DataFrame com 5 colunas
mydata = pandas.DataFrame ([[1, "Sravan", "Cloud Technology", "Bathabases", 89],
[2, "Sravan", "Eletivo 1", "Programação de Frontend", 98],
[3, "Sravan", "Eletiva 1", "Bancos de dados", 50],
[5, "SATWIK", "PHP", "Banco de dados", 99],
[6, "DIBA", "PHP", "Bancos de dados", 19],
[9, "DIBA", "PHP", "Programação de Frontend", 54],
],
colunas = ["ID do exame", "nome", "opção1", "option2", "Marks"]
)
# Vamos usar a função CrosStab ()
Frequência = pandas.Crosstab ([mydata.opção1, mydata.opção2], mydata.nome)
Imprimir (frequência)
Saída:
Explicação:
Passamos as colunas "Opção1" e "Opção2" como eixo x através de uma lista e a coluna "Nome" como eixo y. Agora, você pode ver na ilustração anterior que a tabela de frequência é gerada.
Exemplo 3: Defina as margens
Agora, criamos uma tabela de contingência para colunas "Opção2" e "Nome", definindo as margens e fornecendo os nomes da margem como "contagem total".
Importar pandas
# Crie um DataFrame com 5 colunas
mydata = pandas.DataFrame ([[1, "Sravan", "Cloud Technology", "Bathabases", 89],
[2, "Sravan", "Eletivo 1", "Programação de Frontend", 98],
[3, "Sravan", "Eletiva 1", "Bancos de dados", 50],
[5, "SATWIK", "PHP", "Banco de dados", 99],
[6, "DIBA", "PHP", "Bancos de dados", 19],
[9, "DIBA", "PHP", "Programação de Frontend", 54],
],
colunas = ["ID do exame", "nome", "opção1", "option2", "Marks"]
)
# Vamos usar a função CrosStab () definindo margens e margins_name parâmetro
Frequência = pandas.Crosstab (mydata.opção2, mydata.nome, margens = true, margins_name = "contagem total")
Imprimir (frequência)
Saída:
Explicação:
Passamos pelas margens e as colocamos como TRUE e as margens_name para “contagem total”. As margens são criadas e a soma total de valores para o eixo é retornada como 6.
Através das linhas:
- Para "bancos de dados" - 1+1+2 = 4
- Para “programação de front -end” - 1+0+1 = 2
A contagem total é 6.
Através das colunas:
- Para "DIBA" - 1+1 = 2
- Para "Satwik" - 1+0 = 1
- Para "sravan" - 2+1 = 3
A contagem total é 6.
Exemplo 4: Defina os valores normalizados
Agora, criamos uma tabela de contingência para colunas “Opção2” e “Nome” normalizando os valores.
Importar pandas
# Crie um DataFrame com 5 colunas
mydata = pandas.DataFrame ([[1, "Sravan", "Cloud Technology", "Bathabases", 89],
[2, "Sravan", "Eletivo 1", "Programação de Frontend", 98],
[3, "Sravan", "Eletiva 1", "Bancos de dados", 50],
[5, "SATWIK", "PHP", "Banco de dados", 99],
[6, "DIBA", "PHP", "Bancos de dados", 19],
[9, "DIBA", "PHP", "Programação de Frontend", 54],
],
colunas = ["ID do exame", "nome", "opção1", "option2", "Marks"]
)
# Vamos usar a função CrosStab (), definindo o parâmetro normalizado para indexar.
Frequência = pandas.Crosstab (mydata.opção2, mydata.nome, normalize = 'Índice')
Imprimir (frequência)
Saída:
Explicação:
Passamos no parâmetro de normalização e o configuramos como "índice". Ele retorna a porcentagem de cada ocorrência.
A contagem total é 6.
- Em "Bancos de dados" - para "DIBA" - 1 entre 4 => o valor normalizado é 0.25.
- Em "Bancos de dados" - para "Satwik" - 1 entre 4 => o valor normalizado é 0.25.
- Em "Bancsabases" - para "sravan" - 2 entre 4 => o valor normalizado é 0.5.
- Em "Programação de front -end" - para "DIBA" - 1 entre 2 => o valor normalizado é 0.50.
- Em "Programação de front -end" - para "Satwik" - 0 entre 2 => O valor normalizado é 0.00.
- Em "Programação de front -end" - para "sravan" - 1 entre 2 => o valor normalizado é 0.5.
Conclusão
Este artigo foi escrito para dar a ideia e fazer você entender o conceito de calcular a tabulação cruzada para análise de dados. Os pandas nos fornecem um monte de recursos úteis. Fora dos quais, “pandas.crosstab () ”é um. Utilizamos esse método neste aprendizado para calcular a tabulação cruzada e consideramos a maioria dos parâmetros para demonstração.