Visualizzazione dei dati in Python | Visualizzazione dei dati per principianti

Contenuti

Questo articolo è stato pubblicato nell'ambito del Blogathon sulla scienza dei dati.

introduzione

La visualizzazione dei dati in Python è forse una delle funzionalità più utilizzate per la scienza dei dati con Python oggi.. Le librerie in Python sono dotate di molte funzionalità diverse che consentono agli utenti di creare grafica altamente personalizzata, elegante e interattivo.

In questo articolo, tratteremo l'uso di Matplotlib, Seaborn, così come un'introduzione ad altri pacchetti alternativi che possono essere utilizzati nella visualizzazione Python.

All'interno di Matplotlib e Seaborn, tratteremo alcuni dei grafici più utilizzati nel mondo della scienza dei dati per una facile visualizzazione.

Più avanti nell'articolo, esamineremo un'altra potente funzionalità nelle visualizzazioni Python, la subtrama, e abbiamo trattato un tutorial di base per la creazione di sottotrame.

Pacchetti utili per le visualizzazioni in python

Matplotlib

Matplotlib è una libreria di visualizzazione Python per diagrammi array 2D. Matplotlib è scritto in Python e fa uso della libreria NumPy. Può essere utilizzato in shell Python e IPython, Laptop Jupyter e server di applicazioni web. Matplotlib viene fornito con un'ampia varietà di grafici come la linea, sbarra, dispersione, istogramma, eccetera. che può aiutarci ad approfondire la nostra comprensione delle tendenze, modelli e correlazioni. È stato introdotto da John Hunter in 2002.

Seaborn

Seaborn è una libreria orientata ai set di dati per eseguire rappresentazioni statistiche in Python. È sviluppato su matplotlib e per creare diverse visualizzazioni. È integrato con le strutture dati dei panda. La libreria esegue la mappatura e l'aggregazione internamente per creare visual informativi. Si consiglia di utilizzare un'interfaccia Jupyter / IPython e modo matplotlib.

bokeh

Bokeh è una libreria di visualizzazione interattiva per i browser Web moderni. È adatto per lo streaming o per grandi risorse di dati e può essere utilizzato per sviluppare grafici e dashboard interattivi. C'è una vasta gamma di grafici intuitivi nella libreria che possono essere sfruttati per sviluppare soluzioni. Funziona a stretto contatto con gli strumenti PyData. La libreria è adatta per creare immagini personalizzate in base ai casi d'uso richiesti. Le immagini possono anche essere rese interattive per fungere da ipotetico modello di scenario. Tutto il codice è open source e disponibile su GitHub.

Altair

Altair è una libreria di visualizzazione statistica dichiarativa per Python. Altair API è facile da usare e coerente, ed è costruito sulla specifica JSON Vega-Lite. La libreria dichiarativa indica che durante la creazione di qualsiasi oggetto visivo, dobbiamo definire i collegamenti tra le colonne di dati e i canali (asse X, asse y, dimensione, colore). Con l'aiuto di Altair, le immagini informative possono essere create con un codice minimo. Altair ha una grammatica dichiarativa sia di visualizzazione che di interazione.

tramamente

plotly.py è una libreria di visualizzazione interattiva, open source, alto livello, dichiarativo e basato su browser per Python. Contiene una varietà di visualizzazioni utili tra cui grafici scientifici, Grafica 3D, grafici statistici, grafici finanziari, tra gli altri. La grafica della trama può essere visualizzata nei taccuini Jupyter, file HTML autonomi o ospitati online. La libreria Plotly offre opzioni per l'interazione e la modifica. La robusta API funziona perfettamente sia in modalità web che browser locale.

ggplot

ggplot è un'implementazione Python della grammatica grafica. La grammatica grafica si riferisce alla mappatura dei dati in attributi estetici (colore, forma, dimensione) e oggetti geometrici (punti, Linee, barre). Gli elementi costitutivi di base secondo la grammatica dei grafici sono i dati, geome (oggetti geometrici), statistiche (trasformazioni statistiche), scala, sistema di coordinate e sfaccettatura.

L'uso di ggplot in Python ti consente di sviluppare visualizzazioni informative in modo incrementale, comprendere prima le sfumature dei dati e poi regolare i componenti per migliorare le rappresentazioni visive.

Come utilizzare la visualizzazione corretta?

Per estrarre le informazioni richieste dai diversi elementi visivi che creiamo, è essenziale utilizzare la rappresentazione corretta in base al tipo di dati e alle domande che stiamo cercando di capire. Prossimo, esamineremo una serie di rappresentazioni più utilizzate e come possiamo usarle nel modo più efficace.

Grafico a barre

Un grafico a barre viene utilizzato quando vogliamo confrontare i valori delle metriche in diversi sottogruppi di dati. Se abbiamo un numero maggiore di gruppi, Un grafico a barre è preferito a un istogramma.

Grafico a barre con Matplotlib

#Creating the dataset
df = sns.load_dataset('titanico') 
df=df.groupby('chi')['tariffa'].somma().to_frame().reset_index()

#Creating the bar chart 
plt.barh(df['chi'],df['tariffa'],colore = ['#F0F8FF','#E6E6FA','#B0E0E6']) 

#Adding the aesthetics
plt.title('Titolo del grafico')
plt.xlabel('Titolo asse X')
plt.ylabel('Titolo asse Y') 

#Show the plot
plt.show()
97793column_chart-6000587

Grafico a barre con Seaborn

#Creating bar plot
sns.barplot(x = 'tariffa',y = 'chi',dati = titanic_dataset,tavolozza = "Blues")
#Adding the aesthetics
plt.title('Titolo del grafico')
plt.xlabel('Titolo asse X')
plt.ylabel('Titolo asse Y') 
# Show the plot
plt.show()
40682sns_bar-1890297

Istogramma

Gli istogrammi vengono utilizzati principalmente quando è necessario confrontare una singola categoria di dati tra singoli sottoelementi., ad esempio, quando si confronta il reddito tra le regioni.

Istogramma con Matplotlib

#Creating the dataset
df = sns.load_dataset('titanico') 
df=df.groupby('chi')['tariffa'].somma().to_frame().reset_index()
#Creating the column plot 
plt.bar(df['chi'],df['tariffa'],colore = ['#F0F8FF','#E6E6FA','#B0E0E6']) 
#Adding the aesthetics
plt.title('Titolo del grafico')
plt.xlabel('Titolo asse X')
plt.ylabel('Titolo asse Y') 
#Show the plot
plt.show()
93665bar_chart-1157118

Istogramma con Seaborn

#Reading the dataset
titanic_dataset = sns.load_dataset('titanico')
#Creating column chart
sns.barplot(x = 'chi',y = 'tariffa',dati = titanic_dataset,tavolozza = "Blues")
#Adding the aesthetics
plt.title('Titolo del grafico')
plt.xlabel('Titolo asse X')
plt.ylabel('Titolo asse Y') 
# Show the plot
plt.show()
50113sns_column-9417958

Grafico a barre raggruppato

Un grafico a barre raggruppato viene utilizzato quando si desidera confrontare i valori in determinati gruppi e sottogruppi.

Grafico delle barre raggruppate utilizzando Matplotlib

#Creating the dataset
df = sns.load_dataset('titanico')
df_pivot = pd.pivot_table(df, valori="Tariffa",indice="chi",colonne="classe", aggfunc=np.mean)
#Creating a grouped bar chart
ax = df_pivot.plot(gentile="bar",alfa=0,5)
#Adding the aesthetics
plt.title('Titolo del grafico')
plt.xlabel('Titolo asse X')
plt.ylabel('Titolo asse Y') 
# Show the plot
plt.show()
59991grouped_barchart-7175858

Tabella delle barre raggruppate con Seaborn

#Reading the dataset
titanic_dataset = sns.load_dataset('titanico')
#Creating the bar plot grouped across classes
sns.barplot(x = 'chi',y = 'tariffa',tonalità="classe",dati = titanic_dataset, tavolozza = "Blues")
#Adding the aesthetics
plt.title('Titolo del grafico')
plt.xlabel('Titolo asse X')
plt.ylabel('Titolo asse Y') 
# Show the plot
plt.show()
39022sns_grouped_bar-8239109

Grafico a barre in pila

Un grafico a barre in pila viene utilizzato quando vogliamo confrontare le dimensioni totali dei gruppi disponibili e la composizione dei diversi sottogruppi.

Grafico a barre in pila con Matplotlib

# Stacked bar chart 
#Creating the dataset
df = pd.DataFrame(colonne=["UN","B", "C","D"], 
                  dati=[["E",0,1,1],
                        ["F",1,1,0],
                        ["G",0,1,0]])

df.plot.bar(x='A', y =["B", "C","D"],  stacked=Vero,  larghezza = 0,4,alfa=0,5) 

#Adding the aesthetics
plt.title('Titolo del grafico')
plt.xlabel('Titolo asse X')
plt.ylabel('Titolo asse Y')  

#Show the plot
plt.show()
14707stacked_barchart-2349555

Grafico a barre impilato con Seaborn

dataframe = pd.DataFrame(colonne=["UN","B", "C","D"], 
                  dati=[["E",0,1,1],
                        ["F",1,1,0],
                        ["G",0,1,0]])
dataframe.set_index('UN').T.trama(tipo='bar', stacked=Vero)
#Adding the aesthetics
plt.title('Titolo del grafico')
plt.xlabel('Titolo asse X')
plt.ylabel('Titolo asse Y') 
# Show the plot
plt.show()
75738sns_stacked_bar-5107534

Grafico a linee

Un grafico a linee viene utilizzato per la rappresentazione di punti dati continui. Questo elemento visivo può essere utilizzato efficacemente quando vogliamo capire l'andamento nel tempo..

Grafico a linee con Matplotlib

#Creating the dataset
df = sns.load_dataset("iris") 
df=df.groupby('sepal_length')['sepal_width'].somma().to_frame().reset_index()
#Creating the line chart
plt.plot(df['sepal_length'], df['sepal_width']) 
#Adding the aesthetics
plt.title('Titolo del grafico')
plt.xlabel('Titolo asse X')
plt.ylabel('Titolo asse Y') 
#Show the plot
plt.show()
61843line_chart-4277786

Grafico a linee con Seaborn

#Creating the dataset
cars = ['AUDI', 'BMW', 'NISSAN', 
        'TESLA', 'HYUNDAI', 'HONDA'] 
dati = [20, 15, 15, 14, 16, 20] 
#Creating the pie chart
plt.pie(dati, etichette = automobili,colori = ['#F0F8FF','#E6E6FA','#B0E0E6','#7B68EE','#483D8B'])
#Adding the aesthetics
plt.title('Titolo del grafico')
#Show the plot
plt.show()

Grafico a torta

I grafici a torta possono essere utilizzati per identificare le proporzioni dei diversi componenti in un dato insieme.

Grafico a torta con Matplotlib

#Creating the dataset
cars = ['AUDI', 'BMW', 'NISSAN', 
        'TESLA', 'HYUNDAI', 'HONDA'] 
dati = [20, 15, 15, 14, 16, 20] 
#Creating the pie chart
plt.pie(dati, etichette = automobili,colori = ['#F0F8FF','#E6E6FA','#B0E0E6','#7B68EE','#483D8B'])
#Adding the aesthetics
plt.title('Titolo del grafico')
#Show the plot
plt.show()
74956pie_chart-9414979

Grafico ad area

I grafici ad area vengono utilizzati per tenere traccia delle modifiche nel tempo per uno o più gruppi. I grafici ad area sono preferiti ai grafici a linee quando vogliamo acquisire modifiche nel tempo per più di un gruppo.

Grafico ad area con Matplotlib

#Reading the dataset
x=range(1,6)
y =[ [1,4,6,8,9], [2,2,7,10,12], [2,8,5,10,6] ]
#Creating the area chart 
ax = plt.gca()
ax.stackplot(X, e, etichette=['UN','B','C'],alfa=0,5)
#Adding the aesthetics
plt.legend(loc ="superiore sinistro")
plt.titolo('Titolo del grafico')
plt.xlabel('Titolo asse X')
plt.ylabel('Titolo asse Y') 
#Show the plot
plt.show()
79837area_chart-9949329

Grafico ad area con Seaborn

# Data
years_of_experience =[1,2,3]
stipendio=[ [6,8,10], [4,5,9], [3,5,7] ]
# Plot
plt.stackplot(years_of_experience,stipendio, etichette=[«Società A»,«Società B»,«Società C»])
plt.legend(loc ="superiore sinistro")
#Adding the aesthetics
plt.title('Titolo del grafico')
plt.xlabel('Titolo asse X')
plt.ylabel('Titolo asse Y') 
# Show the plot
plt.show()
78850sns_area-9297311

Istogramma della colonna

Gli istogrammi delle colonne vengono utilizzati per osservare la distribuzione di una singola variabile con pochi punti dati.

Istogramma con Matplotlib

#Creating the dataset
penguins = sns.load_dataset("pinguini")
#Creating the column histogram
ax = plt.gca()
ax.hist(pinguini['flipper_length_mm'], colore="blu",alfa=0,5, contenitori=10)
#Adding the aesthetics
plt.title('Titolo del grafico')
plt.xlabel('Titolo asse X')
plt.ylabel('Titolo asse Y') 
#Show the plot
plt.show()
45254column_histogram-7683163

Istogramma con Seaborn

#Reading the dataset
penguins_dataframe = sns.load_dataset("pinguini")
#Plotting bar histogram
sns.distplot(penguins_dataframe['flipper_length_mm'], kde = falso, colore="blu", contenitori=10)
#Adding the aesthetics
plt.title('Titolo del grafico')
plt.xlabel('Titolo asse X')
plt.ylabel('Titolo asse Y') 
# Show the plot
plt.show()
59814sns_hist-5059359

Istogramma lineare

Gli istogrammi di linea vengono utilizzati per osservare la distribuzione di una singola variabile con molti punti dati.

Grafico a istogramma lineare con Matplotlib

#Creating the dataset
df_1 = np.random.normal(0, 1, (1000, ))
densità = stats.gaussian_kde(df_1)
#Creating the line histogram
n, X, _ = plt.hist(df_1, bins=np.linspace(-3, 3, 50), histtype=u'step', densità=Vero)  
plt.trama(X, densità(X))
#Adding the aesthetics
plt.title('Titolo del grafico')
plt.xlabel('Titolo asse X')
plt.ylabel('Titolo asse Y') 
#Show the plot
plt.show()
87767line_histogram-5794072

Grafico a istogramma a linee con Seaborn

#Reading the dataset
penguins_dataframe = sns.load_dataset("pinguini")
#Plotting line histogram
sns.distplot(penguins_dataframe['flipper_length_mm'], hist = Falso, kde = Vero, etichetta="Africa")
#Adding the aesthetics
plt.title('Titolo del grafico')
plt.xlabel('Titolo asse X')
plt.ylabel('Titolo asse Y') 
# Show the plot
plt.show()
21681sns_line_hist-4694660

Grafico a dispersione

I grafici a dispersione possono essere sfruttati per identificare le relazioni tra due variabili. può essere utilizzato in modo efficace in circostanze in cui la variabile dipendente può avere più valori per la variabile indipendente.

Grafico a dispersione utilizzando Matplotlib

#Creating the dataset
df = sns.load_dataset("Suggerimenti")
#Creating the scatter plot
plt.scatter(df['fattura_totale'],df['suggerimento'],alfa=0,5 )
#Adding the aesthetics
plt.title('Titolo del grafico')
plt.xlabel('Titolo asse X')
plt.ylabel('Titolo asse Y') 
#Show the plot
plt.show()
21902scatter_chart-6141009

Grafico a dispersione utilizzando Seaborn

#Reading the dataset
bill_dataframe = sns.load_dataset("Suggerimenti")
#Creating scatter plot
sns.scatterplot(data=bill_dataframe, x="total_bill", y ="mancia")
#Adding the aesthetics
plt.title('Titolo del grafico')
plt.xlabel('Titolo asse X')
plt.ylabel('Titolo asse Y') 
# Show the plot
plt.show()
59571sns_scatter-7309865

Grafico a bolle

I grafici a dispersione possono essere utilizzati per rappresentare e visualizzare le relazioni tra tre variabili.

Grafico a bolle con Matplotlib

#Creating the dataset
np.random.seed(42)
N = 100
x = np.random.normal(170, 20, n)
y = x + np.random.normal(5, 25, n)
colori = np.random.rand(n)
area = (25 * np.random.rand(n))**2
df = pd.DataFrame({
    'X': X,
    'Y': e,
    'Colori': colori,
    "bubble_size":la zona})
#Creating the bubble chart
plt.scatter('X', 'Y', s="bubble_size",alfa=0,5, dati=df)
#Adding the aesthetics
plt.title('Titolo del grafico')
plt.xlabel('Titolo asse X')
plt.ylabel('Titolo asse Y') 
#Show the plot
plt.show()
75742bubble_chart-4501576

Gráfico de burbujas con Seaborn

#Reading the dataset
bill_dataframe = sns.load_dataset("Suggerimenti")
#Creating bubble plot
sns.scatterplot(data=bill_dataframe, x="total_bill", y ="mancia", tonalità="dimensione", taglia="dimensione")
#Adding the aesthetics
plt.title('Titolo del grafico')
plt.xlabel('Titolo asse X')
plt.ylabel('Titolo asse Y') 
# Show the plot
plt.show()
83681sns_bubble-8895517

Trama scatola

Se utiliza un diagrama de caja para mostrar la forma de la distribución, su valor central y su variabilidad.

Diagrama de caja usando Matplotlib

from past.builtins import xrange
#Creating the dataset
df_1 = [[1,2,5], [5,7,2,2,5], [7,2,5]]
df_2 = [[6,4,2], [1,2,5,3,2], [2,3,5,1]]
#Creating the box plot
ticks = ['UN', 'B', 'C']
plt.figure()
bpl = plt.boxplot(df_1, positions=np.array(xrange(len(df_1)))*2.0-0.4, sym='', larghezze=0,6)
bpr = plt.boxplot(df_2, positions=np.array(xrange(len(df_2)))*2.0+0.4, sym='', larghezze=0,6)
plt.trama([], c="#D7191C ·", etichetta="Etichetta 1")
plt.trama([], c="#2C7BB6 ·", etichetta="Etichetta 2")
#Adding the aesthetics
plt.title('Titolo del grafico')
plt.xlabel('Titolo asse X')
plt.ylabel('Titolo asse Y') 
plt.legend()
plt.xticks(xrange(0, len(Zecche) * 2, 2), Zecche)
plt.xlim(-2, len(Zecche)*2)
plt.ylim(0, 8)
plt.tight_layout()
#Show the plot
plt.show()
66500box_plot-3743128

Diagrama de caja utilizando Seaborn

#Reading the dataset
bill_dataframe = sns.load_dataset("Suggerimenti")
#Creating boxplots
ax = sns.boxplot(x="giorno", y ="total_bill", tonalità="fumatore", data=bill_dataframe, tavolozza="Set3")
#Adding the aesthetics
plt.title('Titolo del grafico')
plt.xlabel('Titolo asse X')
plt.ylabel('Titolo asse Y') 
# Show the plot
plt.show()
36736sns_boxplot-2715049

Gráfico de cascada

Un grafico a cascata può essere utilizzato per spiegare la transizione graduale nel valore di una variabile soggetta a incrementi o diminuzioni..

#Reading the dataset
test = pd.Series(-1 + 2 * np.random.rand(10), index=elenco('abcdefghij'))
#Function for makig a waterfall chart
def waterfall(serie):
    df = pd.DataFrame({'pos':np.maximum(serie,0),'negativo':np.minimum(serie,0)})
    blank = series.cumsum().spostare(1).riempire(0)
    df.plot(tipo='bar', stacked=Vero, bottom=vuoto, colore=['R','B'], alfa=0,5)
    passo = blank.reset_index(drop=Vero).ripetere(3).spostare(-1)
    fare un passo[1::3] = np.nan
    plt.plot(step.index, step.values,'k')
#Creating the waterfall chart
waterfall(test)
#Adding the aesthetics
plt.title('Titolo del grafico')
plt.xlabel('Titolo asse X')
plt.ylabel('Titolo asse Y')
#Show the plot
plt.show()
25684waterfall_chart-4217592

Diagramma di Venn

I diagrammi di Venn vengono utilizzati per visualizzare le relazioni tra due o tre insiemi di elementi. Evidenzia somiglianze e differenze

from matplotlib_venn import venn3
#Making venn  diagram
venn3(sottoinsiemi = (10, 8, 22, 6,9,4,2))
plt.mostra()
94967sns_venn-7916585

Mappa ad albero

Le mappe ad albero vengono utilizzate principalmente per visualizzare i dati raggruppati e nidificati in una struttura gerarchica e osservare il contributo di ciascun componente.

import squarify 
sizes = [40, 30, 5, 25, 10]
squarify.plot(taglie)
#Adding the aesthetics
plt.title('Titolo del grafico')
plt.xlabel('Titolo asse X')
plt.ylabel('Titolo asse Y') 
# Show the plot
plt.show()
99918sns_treemap-2239379

Grafico a barre 100% Accatastato

È possibile sfruttare un grafico a barre in pila di 100% Quando vogliamo mostrare le differenze relative all'interno di ciascun gruppo per i diversi sottogruppi disponibili.

#Reading the dataset
r = [0,1,2,3,4]
raw_data = {'greenBars': [20, 1.5, 7, 10, 5], 'orangeBars': [5, 15, 5, 10, 15],'blueBars': [2, 15, 18, 5, 10]}
df = pd.DataFrame(raw_data)
# From raw value to percentage
totals = [i+j+k per i,J,k in zip(df['greenBars'], df['orangeBars'], df['blueBars'])]
greenBars = [io / J * 100 per me,j in zip(df['greenBars'], Totali)]
orangeBars = [io / J * 100 per me,j in zip(df['orangeBars'], Totali)]
blueBars = [io / J * 100 per me,j in zip(df['blueBars'], Totali)]
# plot
barWidth = 0.85
nomi = ('UN','B','C','D',"E")
# Create green Bars
plt.bar(R, greenBars, colore="#b5ffb9", bordocolore="bianco", width=barLarghezza)
# Create orange Bars
plt.bar(R, orangeBars, bottom=greenBars, colore="#F9bc86", bordocolore="bianco", width=barLarghezza)
# Create blue Bars
plt.bar(R, blueBars, in basso=[i+j per i,j in zip(greenBars, orangeBars)], colore="#a3acff", bordocolore="bianco", width=barLarghezza)
# Custom x axis
plt.xticks(R, nomi)
plt.xlabel("gruppo")
#Adding the aesthetics
plt.title('Titolo del grafico')
plt.xlabel('Titolo asse X')
plt.ylabel('Titolo asse Y')  
plt.mostra()
52847sns_percent_bar-8975109

Trame marginali

I grafici marginali vengono utilizzati per valutare la relazione tra due variabili ed esaminarne le distribuzioni. Tali grafici a dispersione che hanno istogrammi, diagrammi a scatola o diagrammi a punti ai margini dei rispettivi assi xey

#Reading the dataset
iris_dataframe = sns.load_dataset('iris')
#Creating marginal graphs
sns.jointplot(x=iris_dataframe["sepal_lunghezza"], y=iris_dataframe["larghezza_sepalo"], kind='scatter')
# Show the plot
plt.show()
37027sns_marginal_graph-7978746

Sottoparcella

Le sottotrame sono potenti visualizzazioni che facilitano il confronto tra fotogrammi

#Creating the dataset
df = sns.load_dataset("iris") 
df=df.groupby('sepal_length')['sepal_width'].somma().to_frame().reset_index()
#Creating the subplot
fig, assi = plt.sottotrame(nrows=2, ncols=2)
ax=df.plot('sepal_length', 'sepal_width',ax=assi[0,0])
ax.get_legend().rimuovere()
#Adding the aesthetics
ax.set_title('Titolo del grafico')
ax.set_xlabel('Titolo asse X')
ax.set_ylabel('Titolo asse Y')
ax=df.plot('sepal_length', 'sepal_width',ax=assi[0,1])
ax.get_legend().rimuovere()
ax=df.plot('sepal_length', 'sepal_width',ax=assi[1,0])
ax.get_legend().rimuovere()
ax=df.plot('sepal_length', 'sepal_width',ax=assi[1,1])
ax.get_legend().rimuovere()
#Show the plot
plt.show()
22768sottotrama-9595013

In conclusione, ci sono una varietà di librerie diverse che possono essere sfruttate al massimo del loro potenziale comprendendo il caso d'uso e i requisiti. La sintassi e la semantica variano da pacchetto a pacchetto ed è essenziale comprendere le sfide e i vantaggi delle diverse librerie. Buona visione!

Aishwarya A

Scienziato dei dati e appassionato di analisi

Il supporto mostrato in questo articolo non è di proprietà di Analytics Vidhya e viene utilizzato a discrezione dell'autore.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.