Questo articolo è stato pubblicato nell'ambito del Blogathon sulla scienza dei dati.
introduzione
Una guida passo passo per iniziare con Seaborn!!
Si matplotlib “cerca di rendere le cose facili facili e le cose difficili possibili”, Seaborn cerca di rendere facili anche un insieme ben definito di cose difficili.
Freschezza di mare:
I maggiori punti di forza di Seaborn sono la sua diversità di capacità di tracciamento. Ci permette di realizzare grafiche complicate anche in una sola riga di codice!!
In questo tutorial, useremo tre librerie per fare il lavoro: Matplotlib, Seaborn, panda. Se sei un principiante assoluto in Python, Ti suggerisco di iniziare e familiarizzare un po' con Matplotlib e Pandas.
Se segui esattamente questo tutorial, sarai in grado di creare bellissime grafiche con queste tre librerie. Prossimo, puoi usare il mio codice come modello per future attività di visualizzazione in futuro.
Iniziamo il nostro viaggio in mare con il famoso dataset Pokémon. Prima di cominciare, Consiglio vivamente di scrivere i propri codici di base per ogni grafico e provare a sperimentare con i grafici.
Puoi trovare il set di dati Pokémon su Kaggle. tuttavia, per facilitare il tuo viaggio, Ho accorciato e pulito questa versione del set di dati.
Puoi scaricare il set di dati qui: https://github.com/shelvi31/Seaborn-Experiments
Il mio super risparmiatore: Vorrei menzionare una risorsa che è sempre il mio super risparmio quando sono bloccato. https://python-graph-gallery.com/ .
Cominciamo ora:
Inizieremo con l'importazione delle librerie necessarie:
#importazione di librerie importa panda come pd importa matplotlib.pyplot come plt import seaborn come sns
Leggi il file CSV
data = pd.read_csv(“Pokemon.csv”,encoding= 'unicode_escape')
Ho modificato l'errore del codec utf8 definendo un pacchetto di codec diverso nel comando read_csv ().
I nostri dati sono così....
data.head()
Produzione:
Il nome delle colonne non semplifica chiaramente il loro scopo. È importante conoscere il set di dati prima di lavorarci sopra.
Ecco la descrizione semplificata del set di dati per te.
Questo set di dati include 150 Pokémon, si tratta di giochi pokemon (NESSUNA carta Pokémon o Pokémon Go).
In questo set di dati, avere 150 righe e 13 colonne.
Descrizione delle colonne:
# ID per ogni pokemon
# Nome: Nome di ogni pokemon
# Tipo 1: ogni pokemon ha un tipo, questo determina la debolezza / resistenza agli attacchi
# Tipo 2: Alcuni Pokémon sono di doppio tipo e hanno 2
# Totale: somma di tutte le statistiche che vengono dopo questa, una guida generale su quanto è forte un Pokémon
# HP: punti ferita, o salute, definisce quanti danni può subire un pokemon prima di svenire
# attacco: la mod base per gli attacchi normali (ad esempio, Graffio, Punch)
# difendendo: resistenza ai danni di base contro gli attacchi normali.
# SP Atk: attacco speciale, il modificatore di base per gli attacchi speciali (ad esempio, esplosione di fuoco, raggio di bolle)
# SP Def: resistenza ai danni di base contro gli attacchi speciali
# Velocità: determina quale Pokémon attacca per primo in ogni round.
# Palcoscenico: Numero di generazione
#Leggendario: vero se è un pokemon leggendario, falso si no
Ho rinominato i nomi delle colonne per dare più senso alla nostra trama e per chiarezza mentale. Anche se è facoltativo, Consiglio vivamente di farlo per eliminare ogni possibilità di confusione.
data.rename(colonne = {“#”:"No.","Tipo 1":"Tipo_Pokémon","Tipo 2":"PokémonTipo2"",'Totale':"Somma dell'attacco","HP":"Punti Ferita","Attacco" : "Forza d'attacco", "Difesa":"Forza difensiva",”Sp. ATT”:"Stenth attacco speciale",”Sp. def”:"Forza di difesa speciale","Palcoscenico":"Generazione"}, al posto = vero)data.head()
La mia uscita ora sembra:
Iniziamo la visualizzazione con quelli semplici, il grafico di distribuzione.
Grafici di distribuzione:
UN trama di distribuzione mostra un distribuzione y rango de un conjunto de valores numéricos trazados contra una dimensione"Dimensione" È un termine che viene utilizzato in varie discipline, come la fisica, Matematica e filosofia. Si riferisce alla misura in cui un oggetto o un fenomeno può essere analizzato o descritto. In fisica, ad esempio, Si parla di dimensioni spaziali e temporali, mentre in matematica può riferirsi al numero di coordinate necessarie per rappresentare uno spazio. Comprenderlo è fondamentale per lo studio e.... Il istogrammiGli istogrammi sono rappresentazioni grafiche che mostrano la distribuzione di un set di dati. Sono costruiti dividendo l'intervallo di valori in intervalli, oh "Bidoni", e il conteggio della quantità di dati che cadono in ogni intervallo. Questa visualizzazione consente di identificare i modelli, tendenze e variabilità dei dati in modo efficace, facilitare l'analisi statistica e il processo decisionale informato in varie discipline.... le permiten trazar las distribuciones de variables numéricas.
Avrei potuto usare “Data.hist (dimensione del fico = (12,10), bidoni = 20)” , pero como no todas las columnas de esta Banca datiUn database è un insieme organizzato di informazioni che consente di archiviare, Gestisci e recupera i dati in modo efficiente. Utilizzato in varie applicazioni, Dai sistemi aziendali alle piattaforme online, I database possono essere relazionali o non relazionali. Una progettazione corretta è fondamentale per ottimizzare le prestazioni e garantire l'integrità delle informazioni, facilitando così il processo decisionale informato in diversi contesti.... tienen valores numéricos. Perciò, Devo tracciare trame di distribuzione individuali.
plt.figure(figsize=(4,3)) sns.distplot(x=dati["Somma dell'attacco"],colore=”Arancione”,dove = Vero,tappeto = Vero); plt.mostra()
La funzione plot Seaborn traccia un istogramma con una curva di densità. Possiamo eliminare la densità usando l'opzione kde = ”False”. Verificare la presenza di tappeti utilizzando rug = ”True”.
Esistono molti modi alternativi per tracciare un istogramma in Python:
plt.figure(figsize=(3,3)) sns.histplot(x=dati["Somma dell'attacco"],colore=”Verde”); plt.mostra()
Un altro modo è: usando plt.hist ()
plt.figure(figsize=(3,3)) plt.hist(x=dati["Somma dell'attacco"],colore="rosso",contenitori=20); plt.mostra()
Perciò, ci sono molti modi per rappresentare graficamente le distribuzioni. Tutte le funzioni pyplot.hist
, seaborn.coOutuntplot
e seaborn.displot
fungono da wrapper per un grafico a barre matplotlib e possono essere utilizzati se la stampa manuale di un grafico a barre di questo tipo è considerata troppo ingombrante.
- Per variabili discrete, un
seaborn.countplot
è più conveniente. - Per variabili continue:
pyplot.hist
ohseaborn.distplot
sono usati.
Trame di distribuzione congiunte:
I diagrammi di distribuzione congiunti combinano le informazioni dei grafici a dispersione e degli istogrammi per fornirci informazioni dettagliate per le distribuzioni bivariate..
sns.jointplot(x=dati["Somma dell'attacco"],y = dati[“Forza difensiva”],colore=”Rosso”);
Grafici di densità:
I grafici di densità mostrano la distribuzione tra due variabili.
sns.kdeplot(x=dati["Somma dell'attacco"],y = dati[“Forza difensiva”]) plt.mostra()
Grafico a barre
I grafici a barre ci aiutano a visualizzare le distribuzioni delle variabili categoriali: Countplot è un tipo di grafico a barre.
plt.figure(figsize=(10,6)); sns.countplot(x=data.Pokemon_Type,tavolozza=pkmn_type_colors); plt.mostra()
Mappa di caloreun "mappa di calore" è una rappresentazione grafica che utilizza i colori per mostrare la densità dei dati in un'area specifica. Comunemente usato nell'analisi dei dati, Marketing e studi comportamentali, Questo tipo di visualizzazione consente di identificare rapidamente modelli e tendenze. Attraverso variazioni cromatiche, Le mappe di calore facilitano l'interpretazione di grandi volumi di informazioni, aiutando a prendere decisioni informate....
Mappa di calore ci aiuta a visualizzare i dati della matrice sotto forma di punti caldi e freddi. I colori caldi hanno indicato le sezioni con la maggior interazione dei visitatori.
plt.figure(figsize=(8,6)); sns.heatmap(data.corr());# Ruota le etichette x con l'aiuto di matplotlib plt.xticks(rotazione=-45);
Grafico a dispersioneUn gráfico de dispersión es una representación visual que muestra la relación entre dos variables numéricas mediante puntos en un plano cartesiano. Cada eje representa una variable, y la ubicación de cada punto indica su valor en relación con ambas. Este tipo de gráfico es útil para identificar patrones, correlaciones y tendencias en los datos, facilitando el análisis y la interpretación de relaciones cuantitativas....:
UN grafico a dispersione (anche conosciuto come dispersione grafico, Grafico a dispersione) utilizza i punti per rappresentare i valori per due diverse variabili numeriche. La posizione di ciascun punto sull'asse orizzontale e verticale indica i valori per un singolo punto dati.
Grafico a dispersione sono usati per osservare le relazioni tra le variabili.
Ho confrontato le statistiche di attacco e difesa dei nostri Pokémon con l'aiuto di diagrammi a dispersione.
Seaborn no tiene una función de Diagramma di dispersioneIl grafico a dispersione è uno strumento grafico utilizzato in statistica per visualizzare la relazione tra due variabili. Consiste in un insieme di punti in un piano cartesiano, dove ogni punto rappresenta una coppia di valori corrispondenti alle variabili analizzate. Questo tipo di grafico consente di identificare i modelli, Tendenze e possibili correlazioni, facilitare l'interpretazione dei dati e il processo decisionale sulla base delle informazioni visive presentate.... dedicada, quindi vediamo una linea diagonale (linea di regressione) qui per impostazione predefinita.
fortunatamente, seaborn ci aiuta a modificare la trama:
- fit_reg = False viene utilizzato per rimuovere la linea di regressione
- tonalità = 'Fase’ se usa para colorear puntos por un tercer valor variabileIn statistica e matematica, un "variabile" è un simbolo che rappresenta un valore che può cambiare o variare. Esistono diversi tipi di variabili, e qualitativo, che descrivono caratteristiche non numeriche, e quantitativo, che rappresentano quantità numeriche. Le variabili sono fondamentali negli esperimenti e negli studi, poiché consentono l'analisi delle relazioni e dei modelli tra elementi diversi, facilitare la comprensione di fenomeni complessi..... così, ci permette di esprimere la terza dimensione dell'informazione usando il colore.
Qui ho lo stadio di evoluzione dei Pokémon come terza variabile!!
#Ottimizzazione con scatter plotsns.lmplot(x='Forza d'attacco', y='Forza difensiva', dati = dati, fit_reg = Falso, #Eliminazione della linea di regressione hue=”Generazione”); #Separazione secondo la generazione pokemon
Più della densità cade nel segno 40-120, Altererò i limiti dell'asse con l'aiuto di matplotlib:
sns.lmplot(x='Forza d'attacco', y='Forza difensiva', dati = dati, fit_reg = Falso, #Eliminazione della linea di regressione hue=”Generazione”); #Separazione secondo pokemon generationplt.ylim(20,130); plt.xlim(25,125);
Ora possiamo vedere un grafico migliore e più focalizzato!!
Trama scatola
Un diagramma a scatola viene utilizzato per rappresentare gruppi di dati numerici attraverso il loro quartili.
Il box plotDiagrammi a scatola, Conosciuto anche come diagrammi a scatola e baffi, sono strumenti statistici che rappresentano la distribuzione di un dataset. Questi diagrammi mostrano la mediana, quartili e valori anomali, Consentire la visualizzazione della variabilità e della simmetria dei dati. Sono utili nel confronto tra diversi gruppi e nell'analisi esplorativa, Rendendo più facile identificare tendenze e modelli nei dati.... también pueden tener líneas que se extienden desde las cajas indicando variabilidad fuera del quartili superiore e inferiore, da qui i termini box-and-whisker plot e box-and-whisker plot
Possiamo eliminare la colonna “Somma attacco” poiché abbiamo statistiche individuali. Possiamo anche rimuovere le colonne “Generazione” e “Leggendario” perché non stanno combattendo le statistiche.
plt.figure(figsize=(15,7));# DataFrame preformattato stats_data = data.drop(["Somma dell'attacco", 'Generazione', 'Leggendario'], asse=1); # Nuovo boxplot usando stats_df sns.boxplot(data=stats_data, showfliers=Falso); #Rimozione outlierssns.set_style(“griglia bianca”)
Recuerde mantener el tamaño de la figuraIl "tamaño de la figura" se refiere a las dimensiones y proporciones de un objeto o representación en el ámbito del arte, diseño y anatomía. Este concepto es fundamental para la composición visual, ya que influye en la percepción y el impacto de la obra. Comprender el tamaño adecuado permite crear un equilibrio estético y una jerarquía visual, facilitando así la comunicación efectiva del mensaje deseado.... antes de trazar el gráfico.
Cornici per violino
Ora ricalcherò la trama del violino.
I Fiddle plot sono alternative ai box plot. Mostra la distribuzione (attraverso lo spessore del violino) invece di semplici statistiche riassuntive.
Qui ho mostrato la distribuzione dell'Attacco per tipo primario di Pokémon
plt.figure(figsize=(15,7)); sns.violinplot(x=data.Pokemon_Type, y = dati["Forza d'attacco"]);
Come potete vedere, I tipi di drago tendono ad avere statistiche di attacco più elevate rispetto ai tipi di Spettro, ma hanno anche una variazione maggiore.
Ora, I fan dei Pokémon potrebbero trovare qualcosa di abbastanza stridente in quella trama: I colori sono assurdi. Perché il tipo Erba è rosa o il tipo Acqua arancione?? Dobbiamo risolvere questo problema immediatamente!!
fortunatamente, Seaborn ci consente di configurare tavolozze di colori personalizzate. Possiamo semplicemente creare un ordine Elenco Python valori di colore esadecimali.
He usado Bulbapedia para crear una nueva TavolozzaLa palette colori è uno strumento fondamentale nella progettazione grafica e nella decorazione. Consiste in una selezione di colori che vengono utilizzati in modo armonioso per creare un'atmosfera specifica o trasmettere emozioni. Esistono diverse teorie del colore che aiutano a scegliere combinazioni efficaci, come la ruota dei colori e il contrasto. Una palette ben definita può migliorare l'estetica e la comunicazione visiva di un progetto.....
# usando Bulbapedia per creare una nuova tavolozza di colori:#Bulbapedia : https://bulbapedia.bulbagarden.net/wiki/Category:Type_color_tempatspkmn_type_colors = ['#78C850', # Erba '#F08030', # Fuoco '#6890F0', # Acqua '#A8B820', # Insetto '#A8A878', # Normale '#A040A0', # Veleno '#F8D030', # Elettrico '#E0C068', # Terreno '#EE99AC', # Fata '#C03028', # Battagliero '#F85888', # Psichico '#B8A038', # Musica rock '#705898', # Fantasma '#98D8D8', # Ghiaccio '#7038F8', # Drago ]
Apportare modifiche alla trama del violino in base al colore del tipo di Pokémon:
plt.figure(figsize=(15,7)); sns.violinplot(x=data.Pokemon_Type, y = dati["Forza d'attacco"], tavolozza = pkmn_type_colors);
Trame di sciami
Come hai visto, i grafici a violino sono ottimi per visualizzare le distribuzioni.
tuttavia, visto che abbiamo solo 150 Pokémon nel nostro set di dati, potremmo voler mostrare solo ogni punto. Ecco dove trama dello sciame entra. Questa visualizzazione mostrerà ogni punto, Mentre “appello” quelli con valori simili.
plt.figure(figsize=(12,5)); sns.swarmplot(x=data.Pokemon_Type,y = dati["Forza d'attacco"],tavolozza=pkmn_type_colors);
Questo sembra buono, ma per immagini migliori, Possiamo combinare questi due! Dopotutto, mostra le stesse informazioni.
Grafica sovrapposta
plt.figure(figsize=(10,10))sns.violinplot(x=data.Pokemon_Type, y = dati["Forza d'attacco"], interno=Nessuno, tavolozza = pkmn_type_colors);sns.swarmplot(x="Tipo_Pokémon", y=”Forza d'Attacco”, dati = dati, colore='nero', #fare punti neri alfa=0,5);plt.titolo("Forza d'attacco in base al tipo di Pokemon");
Punti da considerare:
interno = Nessuno: rimuovere le barre all'interno dei violini
alfa = 0.5: rende i punti leggermente trasparenti: ricorda che il valore alfa deve essere float, non tenerlo acceso “”
Puoi trovare i riferimenti per il colore navy qui: https://python-graph-gallery.com/100-calling-a-color-with-seaborn/
Grafici dei fattori
I grafici dei fattori semplificano la separazione dei grafici per classi categoriali.
plt.figure(figsize=(5,15)) factplot= sns.factorplot(x="Tipo_Pokémon",y ="Forza d'attacco",dati = dati,tonalità="Generazione",col="Generazione",gentile="sciame");factplot.set_xticklabels(rotazione=-45) plt.mostra()
Note veloci:
- plt.xticks (rotazione = -45): non funziona perché ruota solo l'ultimo grafico
- Bisogno di usare: set_xticklabels
Articoli correlati:
- Visualizzazione dati | Guida alla visualizzazione dei dati per principianti
- Visualizzazione dei dati in Python | Visualizzazione dei dati per principianti
- Visualizzazione dei dati in R | Guida alla visualizzazione dei dati in R
- Tirocinio in Data Science | Guida per principianti per ottenere uno stage di data science