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.
- Há 1 aluno que tem 18 anos e recebeu nota “B” na turma.
- Há 1 aluno que tem 18 anos e recebeu nota “C” na turma.
- Há 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 .