Come creare tabelle di frequenza in python


Una tabella di frequenza è una tabella che visualizza le frequenze di diverse categorie. Questo tipo di tabella è particolarmente utile per comprendere la distribuzione dei valori in un set di dati.

Questo tutorial spiega come creare tabelle di frequenza in Python.

Tabella delle frequenze unidirezionali per una serie

Per trovare le frequenze dei singoli valori in una serie di panda, puoi utilizzare la funzione 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

Puoi aggiungere l’argomento sort=False se non vuoi che i valori dei dati vengano ordinati per frequenza:

 data.value_counts(sort= False )

1 3
2 1
3 4
4 2
5 1

Il modo di interpretare il risultato è il seguente:

  • Il valore “1” appare 3 volte nella serie.
  • Il valore “2” appare 1 volta nella serie.
  • Il valore “3” appare 4 volte nella serie.

E così via.

Tabella delle frequenze unidirezionali per un DataFrame

Per trovare le frequenze di un DataFrame panda è possibile utilizzare la funzione crosstab () , che utilizza la seguente sintassi:

tabella incrociata (indici, colonne)

Oro:

  • indice: nome della colonna da raggruppare
  • colonne: nome da dare alla colonna frequenza

Ad esempio, supponiamo di avere un DataFrame contenente informazioni su voto, età e sesso di 10 studenti diversi in una classe. Ecco come trovare la frequenza di ogni voto in lettera:

 #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

Il modo di interpretarlo è:

  • 3 studenti hanno ricevuto una “A” nella classe.
  • 4 studenti hanno ricevuto una “B” in classe.
  • 1 studente ha ricevuto una “C” nella classe.
  • 2 studenti hanno ricevuto una “D” nella classe.

Possiamo usare una sintassi simile per trovare i conteggi di frequenza per altre colonne. Ad esempio, ecco come trovare la frequenza in base all’età:

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

col_0 count
Age	
18 5
19 4
20 1

Il modo di interpretarlo è:

  • 5 studenti hanno 18 anni.
  • 4 studenti hanno 19 anni.
  • 1 studente ha 20 anni.

Puoi anche visualizzare facilmente le frequenze come proporzioni del set di dati dividendo per la somma:

 #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

Il modo di interpretarlo è:

  • Il 50% degli studenti ha 18 anni.
  • Il 40% degli studenti ha 19 anni.
  • Il 10% degli studenti ha 20 anni.

Tabelle di frequenza bidirezionali per un DataFrame

È inoltre possibile creare una tabella di frequenza bidirezionale per visualizzare le frequenze di due diverse variabili nel set di dati. Ad esempio, ecco come creare una tabella di frequenza bidirezionale per le variabili Età e Grado:

 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

Il modo di interpretarlo è:

  • Ci sono 3 studenti di 18 anni che hanno ricevuto una “A” in classe.
  • C’è 1 studente che ha 18 anni e ha ricevuto una “B” in classe.
  • C’è 1 studente che ha 18 anni e ha ricevuto una “C” nella classe.
  • Ci sono 0 studenti di 18 anni che hanno ricevuto una “D” in classe.

E così via.

Puoi trovare la documentazione completa per la funzione crosstab() qui .

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *