Ricerca nel sito web

Come utilizzare Panda cut() e qcut()?


Pandas è una libreria Python utilizzata per la manipolazione dei dati e l'analisi di dati strutturati. I metodi cut() e qcut() dei panda vengono utilizzati per creare variabili categoriali da dati numerici. I metodi cut() e qcut() dividono i dati numerici rispettivamente in intervalli o quantili discreti e assegnano etichette a ciascun intervallo o quantile. In questo articolo comprenderemo le funzionalità dei metodi cut() e qcut() con l'aiuto di vari esempi.

La funzione cut()

Il cut() divide una variabile continua in contenitori o intervalli discreti in base a criteri specificati. Crea gruppi o categorie di dati in base all'intervallo di valori presenti nei dati di input.

Sintassi


pandas.cut(x, bins, labels=None, right=True, include_lowest=False, ...)

I parametri utilizzati nella sintassi precedente sono:

  • x: i dati di input, che possono essere una serie Pandas o un array NumPy.

  • bins: può essere un valore intero che specifica il numero di contenitori di uguale larghezza da creare o una sequenza di valori scalari che definiscono i bordi del contenitore. Se viene fornito un numero intero, l'intervallo di valori in x verrà diviso in tanti contenitori di uguale larghezza.

  • etichette (facoltativo): un oggetto simile ad un array di etichette da assegnare a ciascun contenitore. Se non fornite, le etichette saranno numeri interi indicanti l'indice del contenitore.

  • destra (facoltativo): un valore booleano che indica se gli intervalli devono essere chiusi a destra (include il bordo del contenitore destro) o chiusi a sinistra (include il bordo del contenitore sinistro). Per impostazione predefinita, è impostato su Vero.

  • include_lowest (facoltativo): un valore booleano che indica se includere il valore più basso dell'intervallo. Per impostazione predefinita, è impostato su False.

Esempio 1: contenitori di uguale larghezza

Nell'esempio seguente, abbiamo un elenco di dati numerici. Specifichiamo i contenitori come 3, indicando che vogliamo dividere i dati in tre contenitori di uguale larghezza. L'output mostra gli intervalli in cui rientra ciascun valore, insieme alla categoria corrispondente.


import pandas as pd

# Example 1: Equal-width bins
data = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
bins = 3
categories = pd.cut(data, bins)
print(categories)

Produzione


[(9.91, 40.0], (9.91, 40.0], (9.91, 40.0], (9.91, 40.0], (40.0, 70.0], (40.0, 70.0], (40.0, 70.0], (70.0, 100.0], (70.0, 100.0], (70.0, 100.0]]
Categories (3, interval[float64, right]): [(9.91, 40.0] < (40.0, 70.0] < (70.0, 100.0]]

Esempio 2: bordo del contenitore ed etichette personalizzate

Nell'esempio seguente, definiamo i bordi del contenitore personalizzati [0, 30, 60, 100] e le etichette corrispondenti ['Basso', 'Medio', 'Alto']. La funzione cut() assegna ciascun valore nei dati alla categoria appropriata in base ai contenitori e alle etichette forniti.


# Example 2: Custom bin edges and labels
import pandas as pd
data = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
bins = [0, 30, 60, 100]
labels = ['Low', 'Medium', 'High']
categories = pd.cut(data, bins, labels=labels)
print(categories)

Produzione


['Low', 'Low', 'Low', 'Medium', 'Medium', 'Medium', 'High', 'High', 'High', 'High']
Categories (3, object): ['Low' < 'Medium' < 'High']

La funzione qcut()

La funzione qcut() divide i dati in base a quantili o percentili a differenza della funzione cut() che divide i dati in intervalli di uguale larghezza. In ciascun contenitore è presente un numero uguale di punti dati, il che lo rende utile per creare gruppi distribuiti uniformemente.

Sintassi


pandas.qcut(x, q, labels=None, retbins=False, precision=3, duplicates='raise')

I parametri utilizzati nella sintassi sono:

  • x: i dati di input, che possono essere una serie Pandas o un array NumPy.

  • q: un valore intero che specifica il numero di quantili da creare o una sequenza di quantili (valori compresi tra 0 e 1) che definiscono i punti di interruzione.

  • etichette (facoltativo): un oggetto simile ad un array di etichette da assegnare a ciascun contenitore. Se non fornite, le etichette saranno numeri interi indicanti l'indice del contenitore.

  • retbins (facoltativo): un valore booleano che indica se restituire i bordi del contenitore insieme alle categorie. Per impostazione predefinita, è impostato su False.

  • precisione (facoltativa): un valore intero che specifica la precisione dei valori quantili. Per impostazione predefinita, è impostato su 3.

  • duplicati (facoltativo): come gestire i valori duplicati. Per impostazione predefinita, è impostato su "raise", che genera un errore.

Esempio 1: numero uguale di quantili

Nell'esempio seguente, abbiamo gli stessi dati numerici di prima. Specificando i quantili come 3, dividiamo i dati in tre quantili di uguali dimensioni. L'output visualizza gli intervalli in cui rientra ciascun valore e la categoria corrispondente.


import pandas as pd

# Example 1: Equal number of quantiles
data = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
quantiles = 3
categories = pd.qcut(data, quantiles)
print(categories)

Produzione


[(9.999, 40.0], (9.999, 40.0], (9.999, 40.0], (9.999, 40.0], (40.0, 70.0], (40.0, 70.0], (40.0, 70.0], (70.0, 100.0], (70.0, 100.0], (70.0, 100.0]]
Categories (3, interval[float64, right]): [(9.999, 40.0] < (40.0, 70.0] < (70.0, 100.0]]

Esempio 2: quantili ed etichette personalizzati

Nell'esempio seguente, definiamo quantili personalizzati [0, 0,3, 0,6, 1] e le etichette corrispondenti ['Basso', 'Medio', 'Alto']. La funzione qcut() assegna ciascun valore alla categoria appropriata in base ai quantili e alle etichette forniti.


import pandas as pd

# Example 2: Custom quantiles and labels
data = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
quantiles = [0, 0.3, 0.6, 1]
labels = ['Low', 'Medium', 'High']
categories = pd.qcut(data, quantiles, labels=labels)
print(categories)

Produzione


['Low', 'Low', 'Low', 'Medium', 'Medium', 'Medium', 'High', 'High', 'High', 'High']
Categories (3, object): ['Low' < 'Medium' < 'High']

Conclusione

In questo articolo abbiamo discusso di come utilizzare i metodi panda cut() e qcut() per creare variabili categoriali da dati numerici. La funzione cut() divide i dati in intervalli discreti in base a determinate condizioni mentre il metodo qcut() divide i dati in quantili o percentili. Entrambe le funzioni possono anche assegnare etichette a ciascun intervallo o quantile che aiuta a trasformare i dati numerici in dati categorici.

Articoli correlati: