Função de crosstab pandas

Função de crosstab pandas
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:

  1. 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.
  2. As "colunas" são as colunas do quadro de dados gerados.
  3. Os "valores" são os valores utilizados para calcular a estatística fornecida por "agg _func".
  4. 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.
  5. 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.
  6. 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.
  7. O "nome das margens" é o título da recém-anexada linha e coluna se as "margens" forem configuradas para "verdadeiro".
  8. O "Dropna" determina se deve remover as colunas com apenas valores de nan. O "Dropna = false" é a configuração padrão.
  9. 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.

  1. "Bancos de dados" - "DIBA" Hold apenas 1, "Satwik" também 1 e "Sravan" 2.
  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:

  1. Para "bancos de dados" - 1+1+2 = 4
  2. Para “programação de front -end” - 1+0+1 = 2

A contagem total é 6.

Através das colunas:

  1. Para "DIBA" - 1+1 = 2
  2. Para "Satwik" - 1+0 = 1
  3. 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.

  1. Em "Bancos de dados" - para "DIBA" - 1 entre 4 => o valor normalizado é 0.25.
  2. Em "Bancos de dados" - para "Satwik" - 1 entre 4 => o valor normalizado é 0.25.
  3. Em "Bancsabases" - para "sravan" - 2 entre 4 => o valor normalizado é 0.5.
  4. Em "Programação de front -end" - para "DIBA" - 1 entre 2 => o valor normalizado é 0.50.
  5. Em "Programação de front -end" - para "Satwik" - 0 entre 2 => O valor normalizado é 0.00.
  6. 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.