Funzione di Pandas Crosstab

Funzione di Pandas Crosstab
La funzione "crossstab ()" nei panda crea una tabella cross-tabulazione che visualizza la frequenza con cui compaiono i set specifici di dati. Il metodo "CrossStab ()" è una delle diverse tecniche di Panda che consente di ristrutturare i tuoi dati. Questo post spiega come utilizzare la funzione "crossstab ()".

Sintassi crosstab ():

panda.crosstab (indice, colonne, valori = nessuna, rownames = nessuno, colnames = nessuno, margins = false, margins_name = 'all', dropna = true, normalize = false)

Parametri:

  1. Qui, il primo parametro è "indice" che è i valori che vengono utilizzati come indice di output DataFrame. Può essere un array, una serie o più array o serie.
  2. Le "colonne" sono le colonne di dati generati.
  3. I "valori" sono i valori utilizzati per calcolare la statistica fornita da "agg _func".
  4. I "rownames" sono i nomi che sono assegnati alle righe nel frame dati risultante. Il "rownames = nessuno" è l'impostazione predefinita per questo argomento.
  5. I "Colnames" sono i nomi della colonna che sono dati al frame dati di output. Il "Colnames = nessuno" è l'impostazione predefinita. L'input di questa funzione è "valori" e l'elemento di ritorno è la statistica aggregata come la media, il massimo, ecc.
  6. I "margini" determinano se aggiungere una riga e una colonna extra che mostra la somma delle celle in termini di riga e per quanto riguarda la colonna. Il "margine = false" è l'impostazione predefinita.
  7. Il "Margins-Name" è il titolo della riga e della colonna appena aggiunta se i "margini" sono configurati su "true".
  8. La "dropna" determina se rimuovere le colonne con solo valori NAN. La configurazione predefinita "Dropna = False" è la configurazione predefinita.
  9. Il "normalizza" dice se normalizzare i numeri ottenuti dividendo per il totale.

Esempio 1:
Crea un frame dati con 5 colonne e genera una tabella di contingenza (scheda incrociata) impostando l'asse x come colonna "opzione2" e asse y come colonna "nome".

Panda di importazione
# Crea un frame dati con 5 colonne
MyData = Panda.DataFrame ([[1, "Sravan", "Cloud Technology", "Database", 89],
[2, "Sravan", "Python", "Frontend Programming", 98],
[3, "Sravan", "Elective 1", "Database", 50],
[5, "satwik", "php", "database", 99],
[6, "diba", "php", "database", 19],
[9, "Diba", "Elective 1", "Frontend Programming", 54],
",
colonne = ["ID esame", "nome", "opzione1", "opzione2", "marchi"]
)
stampa (mydata, "\ n")
# Usiamo la funzione crossstab ()
frequenza = panda.Crosstab (MyData.opzione2, mydata.nome)
Stampa (frequenza)

Produzione:

Spiegazione:
Passiamo la colonna "opzione2" come asse x e la colonna "nome" come asse y. Ora, puoi vedere nell'illustrazione precedente che viene generata la tabella di frequenza. Analizziamolo.

  1. "Database" - "Diba" contiene solo 1, "Satwik" anche 1 e "Sravan" 2.
  2. La "Programmazione frontend" - "Diba" contiene solo 1, "Satwik" contiene 0 e "Sravan" è anche 1.

Esempio 2:
Utilizza lo stesso frame dati e genera una tabella di contingenza (scheda incrociata) impostando le colonne X-Asse come "opzione1" e "opzione2" e l'asse y come colonna "nome".

Panda di importazione
# Crea un frame dati con 5 colonne
MyData = Panda.DataFrame ([[1, "Sravan", "Cloud Technology", "Database", 89],
[2, "Sravan", "Elective 1", "Frontend Programming", 98],
[3, "Sravan", "Elective 1", "Database", 50],
[5, "satwik", "php", "database", 99],
[6, "diba", "php", "database", 19],
[9, "Diba", "Php", "Programmazione frontend", 54],
",
colonne = ["ID esame", "nome", "opzione1", "opzione2", "marchi"]
)
# Usiamo la funzione crossstab ()
frequenza = panda.crosstab ([mydata.opzione1, mydata.opzione2], mydata.nome)
Stampa (frequenza)

Produzione:

Spiegazione:
Passiamo le colonne "Option1" e "Option2" come asse x attraverso un elenco e la colonna "Nome" come asse y. Ora, puoi vedere nell'illustrazione precedente che viene generata la tabella di frequenza.

Esempio 3: impostare i margini
Ora creiamo una tabella di emergenza per le colonne "opzione2" e "nome" impostando i margini e fornendo i nomi dei margini come "conteggio totale".

Panda di importazione
# Crea un frame dati con 5 colonne
MyData = Panda.DataFrame ([[1, "Sravan", "Cloud Technology", "Database", 89],
[2, "Sravan", "Elective 1", "Frontend Programming", 98],
[3, "Sravan", "Elective 1", "Database", 50],
[5, "satwik", "php", "database", 99],
[6, "diba", "php", "database", 19],
[9, "Diba", "Php", "Programmazione frontend", 54],
",
colonne = ["ID esame", "nome", "opzione1", "opzione2", "marchi"]
)
# Usiamo la funzione crossstab () impostando margini e parametro margins_name
frequenza = panda.Crosstab (MyData.opzione2, mydata.nome, margins = true, margins_name = "conteggio totale")
Stampa (frequenza)

Produzione:

Spiegazione:
Passiamo i margini e li impostiamo su True e Margins_Name su "Total Count". I margini vengono creati e la somma totale dei valori per l'asse viene restituita come 6.

Attraverso le file:

  1. Per "database" - 1+1+2 = 4
  2. Per "Programmazione frontend" - 1+0+1 = 2

Il conteggio totale è 6.

Attraverso le colonne:

  1. Per "diba" - 1+1 = 2
  2. Per "satwik" - 1+0 = 1
  3. Per "Sravan" - 2+1 = 3

Il conteggio totale è 6.

Esempio 4: impostare i valori di normalizza
Ora creiamo una tabella di emergenza per le colonne "opzione2" e "nome" normalizzando i valori.

Panda di importazione
# Crea un frame dati con 5 colonne
MyData = Panda.DataFrame ([[1, "Sravan", "Cloud Technology", "Database", 89],
[2, "Sravan", "Elective 1", "Frontend Programming", 98],
[3, "Sravan", "Elective 1", "Database", 50],
[5, "satwik", "php", "database", 99],
[6, "diba", "php", "database", 19],
[9, "Diba", "Php", "Programmazione frontend", 54],
",
colonne = ["ID esame", "nome", "opzione1", "opzione2", "marchi"]
)
# Utilizziamo la funzione crossstab () impostando il parametro normalizza su indice.
frequenza = panda.Crosstab (MyData.opzione2, mydata.nome, normalize = 'indice')
Stampa (frequenza)

Produzione:

Spiegazione:
Passiamo il parametro di normalizzazione e lo impostiamo su "indice". Restituisce la percentuale di ogni occorrenza.

Il conteggio totale è 6.

  1. In "Database" - per "DIBA" - 1 tra 4 => il valore normalizzato è 0.25.
  2. In "database" - per "satwik" - 1 tra 4 => il valore normalizzato è 0.25.
  3. In "Database" - per "Sravan" - 2 tra 4 => il valore normalizzato è 0.5.
  4. Nella "programmazione frontend" - per "diba" - 1 tra 2 => il valore normalizzato è 0.50.
  5. Nella "Programmazione frontend" - per "satwik" - 0 tra 2 => il valore normalizzato è 0.00.
  6. Nella "programmazione frontend" - per "sravan" - 1 tra 2 => il valore normalizzato è 0.5.

Conclusione

Questo articolo è scritto per darti l'idea e farti capire il concetto di calcolo della tabulazione incrociata per l'analisi dei dati. Pandas ci fornisce un sacco di funzionalità utili. Di cui, “Panda.crossstab () ”è uno. Abbiamo utilizzato questo metodo in questo apprendimento per calcolare la tabulazione incrociata e considerato la maggior parte dei parametri per la dimostrazione.