Como criar tabelas de frequência em python


Uma tabela de frequência é uma tabela que exibe as frequências de diferentes categorias. Este tipo de tabela é particularmente útil para compreender a distribuição de valores em um conjunto de dados.

Este tutorial explica como criar tabelas de frequência em Python.

Tabela de frequência unidirecional para uma série

Para encontrar as frequências de valores individuais em uma série de pandas, você pode usar a função value_counts() :

 import pandas as pd

#defineSeries
data = pd.Series([1, 1, 1, 2, 3, 3, 3, 3, 4, 4, 5])

#find frequencies of each value
data.value_counts()

3 4
1 3
4 2
5 1
2 1

Você pode adicionar o argumento sort=False se não quiser que os valores dos dados sejam classificados por frequência:

 data.value_counts(sort= False )

1 3
2 1
3 4
4 2
5 1

A forma de interpretar o resultado é a seguinte:

  • O valor “1” aparece 3 vezes na série.
  • O valor “2” aparece 1 vez na série.
  • O valor “3” aparece 4 vezes na série.

E assim por diante.

Tabela de frequência unidirecional para um DataFrame

Para encontrar as frequências de um DataFrame do pandas você pode usar a função crosstab () , que usa a seguinte sintaxe:

tabela cruzada (índices, colunas)

Ouro:

  • índice: nome da coluna a ser agrupada
  • colunas: nome a ser dado à coluna de frequência

Por exemplo, digamos que temos um DataFrame contendo informações sobre série, idade e sexo de 10 alunos diferentes em uma turma. Veja como encontrar a frequência de cada nota de letra:

 #create data
df = pd.DataFrame({'Grade': ['A','A','A','B','B', 'B', 'B', 'C', 'D', 'D '],
                   'Age': [18, 18, 18, 19, 19, 20, 18, 18, 19, 19],
                   'Gender': ['M','M', 'F', 'F', 'F', 'M', 'M', 'F', 'M', 'F']})

#view data
df

	Grade Age Gender
0 to 18 m
1 to 18 m
2 A 18 F
3 B 19 F
4 B 19 F
5 B 20 M
6 B 18 M
7 C 18 F
8 D 19 M
9 D 19 F 	  

#find frequency of each letter grade
pd.crosstab(index=df[' Grade '], columns=' count ')

col_0 count
Grade	
At 3
B4
C 1
D 2

A maneira de interpretar isso é:

  • 3 alunos receberam nota “A” na turma.
  • 4 alunos receberam nota “B” na turma.
  • 1 aluno recebeu nota “C” na turma.
  • 2 alunos receberam nota “D” na turma.

Podemos usar sintaxe semelhante para encontrar contagens de frequência para outras colunas. Por exemplo, veja como encontrar a frequência por idade:

 pd.crosstab(index=df[' Age '], columns=' count ') 

col_0 count
Age	
18 5
19 4
20 1

A maneira de interpretar isso é:

  • 5 alunos têm 18 anos.
  • 4 alunos têm 19 anos.
  • 1 aluno tem 20 anos.

Você também pode exibir facilmente as frequências como proporções do conjunto de dados dividindo pela soma:

 #define crosstab
tab = pd.crosstab(index=df['Age'], columns='count')

#find proportions 
tab/tab.sum()

col_0 count
Age	
18 0.5
19 0.4
20 0.1

A maneira de interpretar isso é:

  • 50% dos alunos têm 18 anos.
  • 40% dos alunos têm 19 anos.
  • 10% dos alunos têm 20 anos.

Tabelas de frequência bidirecionais para um DataFrame

Você também pode criar uma tabela de frequência bidirecional para exibir as frequências de duas variáveis diferentes no conjunto de dados. Por exemplo, veja como criar uma tabela de frequência bidirecional para as variáveis Idade e Série:

 pd.crosstab(index=df[' Age '], columns=df[' Grade '])


Grade A B C D
Age				
18 3 1 1 0
19 0 2 0 2
20 0 1 0 0

A maneira de interpretar isso é:

  • São 3 alunos de 18 anos que tiraram nota “A” na turma.
  • 1 aluno que tem 18 anos e recebeu nota “B” na turma.
  • 1 aluno que tem 18 anos e recebeu nota “C” na turma.
  • 0 alunos com 18 anos que receberam nota “D” na turma.

E assim por diante.

Você pode encontrar a documentação completa da função crosstab() aqui .

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *