Dieser Artikel wurde im Rahmen der Data Science Blogathon.
Einführung
Eine Schritt-für-Schritt-Anleitung für die ersten Schritte mit Seaborn!!
Si matplotlib „versuche, einfache Dinge leicht und schwierige Dinge möglich zu machen“, seaborn versucht auch, eine gut definierte Reihe schwieriger Dinge einfach zu machen.
Meeresfrische:
Die größten Stärken von Seaborn sind die vielfältigen Plotfunktionen. Es ermöglicht uns, komplizierte Grafiken sogar in einer einzigen Codezeile zu erstellen!!
In diesem Tutorial, Wir werden drei Bibliotheken verwenden, um die Arbeit zu erledigen: Matplotlib, Seaborn, Pandas. Wenn Sie ein absoluter Anfänger in Python sind, Ich schlage vor, Sie beginnen und machen sich ein wenig mit Matplotlib und Pandas vertraut.
Wenn du dieses Tutorial genau befolgst, Mit diesen drei Bibliotheken können Sie wunderschöne Grafiken erstellen. Dann, Sie können meinen Code als Vorlage für zukünftige Visualisierungsaufgaben in der Zukunft verwenden.
Beginnen wir unsere Reise auf See mit dem berühmten Pokémon-Datensatz. Bevor es losgeht, Ich empfehle Ihnen dringend, für jedes Diagramm eigene Basiscodes zu schreiben und mit Diagrammen zu experimentieren.
Sie finden den Pokémon-Datensatz bei Kaggle. Aber trotzdem, um Ihre Reise zu erleichtern, Ich habe diese Version des Datensatzes gekürzt und bereinigt.
Hier können Sie den Datensatz herunterladen: https://github.com/shelvi31/Seaborn-Experiments
Mein Supersparer: Ich möchte eine Ressource erwähnen, die immer meine super Ersparnisse ist, wenn ich feststecke. https://python-graph-gallery.com/ .
Lasst uns nun anfangen:
Wir beginnen mit dem Importieren der erforderlichen Bibliotheken:
#Bibliotheken importieren Pandas als pd importieren import matplotlib.pyplot als plt Seegeboren als sns importieren
Lesen Sie die CSV-Datei
data = pd.read_csv(„pokemon.csv“,Kodierung = 'unicode_escape')
Ich habe den utf8-Codec-Fehler geändert, indem ich im Befehl read_csv ein anderes Codec-Paket definiert habe ().
Unsere Daten sehen so aus....
daten.kopf()
Produktion:
ProduktionDer Name der Spalten vereinfacht ihren Zweck nicht eindeutig. Es ist wichtig, den Datensatz zu kennen, bevor Sie daran arbeiten.
Hier ist die vereinfachte Beschreibung des Datensatzes für Sie.
Dieser Datensatz enthält 150 Pokémon, es geht um pokemonspiele (KEINE Pokémon- oder Pokémon-Go-Karten).
In diesem Datensatz, haben 150 Reihen und 13 Säulen.
Beschreibung der Spalten:
# ID für jedes Pokémon
# Name: Name jedes Pokémon
# Kerl 1: jedes pokemon hat einen typ, das bestimmt die schwäche / Widerstand gegen Angriffe
# Kerl 2: Einige Pokémon sind dual und haben 2
# Gesamt: Summe aller Statistiken, die danach kommen, eine allgemeine Anleitung, wie stark ein Pokémon ist
# PS: Trefferpunkte, oder Gesundheit, definiert, wie viel Schaden ein Pokémon nehmen kann, bevor es ohnmächtig wird
# Attacke: die Basis-Mod für normale Angriffe (zum Beispiel, Kratzen, Schlagen)
# Verteidigen: Grundschadensresistenz gegen normale Angriffe.
# SP Atk: Spezialangriff, der Basismodifikator für Spezialangriffe (zum Beispiel, Feuer Explosion, Blasenstrahl)
# SP-Def: Grundschadensresistenz gegen Spezialangriffe
# Geschwindigkeit: bestimmt, welches Pokémon in jeder Runde zuerst angreift.
# Bühne: Generationsnummer
#Legendär: wahr, wenn es ein legendäres pokemon ist, falsch ja nein
Ich habe die Spaltennamen umbenannt, um unsere Handlung besser zu verstehen und um Klarheit zu schaffen. Obwohl es optional ist, Ich empfehle Ihnen dringend, dies zu tun, um jede Verwechslungsgefahr auszuschließen.
data.rename(Spalten = {"#":"Nein.","Typ 1":"Pokemon_Typ","Typ 2":”PokemonTyp2",'Gesamt':'Summe des Angriffs',"HP":"Trefferpunkte","Attacke" : „Angriffsstärke“, "Verteidigung":„Verteidigungsstärke“,”Sp. Atk”:„Special Attack Stenth“,”Sp. Def“:„Besondere Verteidigungsstärke“,"Bühne":"Generation"}, inplace = wahr)daten.kopf()
Mein Ausgang sieht jetzt aus:
Besser!Beginnen wir mit der Visualisierung mit den einfachen, der Verteilungsgraph.
Verteilungsdiagramme:
EIN Verteilungsdiagramm zeige ein Verteilung und des Bereichs eines Satzes numerischer Werte, die gegen eine Abmessungen"Dimension" Es handelt sich um einen Begriff, der in verschiedenen Disziplinen verwendet wird, wie z.B. Physik, Mathematik und Philosophie. Er bezieht sich auf das Ausmaß, in dem ein Objekt oder Phänomen analysiert oder beschrieben werden kann. In der Physik, zum Beispiel, Es ist die Rede von räumlichen und zeitlichen Dimensionen, während es sich in der Mathematik auf die Anzahl der Koordinaten beziehen kann, die notwendig sind, um einen Raum darzustellen. Es zu verstehen, ist grundlegend für das Studium und.... Das HistogrammeHistogramme sind grafische Darstellungen, die die Verteilung eines Datensatzes darstellen. Sie werden konstruiert, indem der Wertebereich in Intervalle unterteilt wird, Ö "Behälter", und zählen, wie viele Daten in jedem Intervall fallen. Diese Visualisierung ermöglicht es Ihnen, Muster zu erkennen, Trends und Variabilität von Daten effektiv, Erleichterung statistischer Analysen und fundierter Entscheidungsfindung in verschiedenen Disziplinen.... ermöglichen es Ihnen, die Verteilungen numerischer Variablen darzustellen.
Hätte gebrauchen können „Daten.his (Feigengröße = (12,10), Behälter = 20)“ , da aber nicht alle Spalten dieses DatenbankEine Datenbank ist ein organisierter Satz von Informationen, mit dem Sie, Effizientes Verwalten und Abrufen von Daten. Einsatz in verschiedenen Anwendungen, Von Unternehmenssystemen bis hin zu Online-Plattformen, Datenbanken können relational oder nicht-relational sein. Das richtige Design ist entscheidend für die Optimierung der Leistung und die Gewährleistung der Informationsintegrität, und erleichtert so eine fundierte Entscheidungsfindung in verschiedenen Kontexten.... haben numerische Werte. Deswegen, Ich muss einzelne Verteilungsdiagramme zeichnen.
plt.figur(Feigengröße=(4,3)) sns.distplot(x=Daten[„Summe des Angriffs“],Farbe=”Orange”,wobei = wahr,Teppich = wahr); plt.zeigen()
Ausgabe des Verteilungsdiagramms: Pokémon-Angriffssumme
Die Seaborn-Plotfunktion zeichnet ein Histogramm mit einer Dichtekurve. Mit der Option kde = ”False” können wir die Dichte eliminieren. Überprüfen Sie das Vorhandensein von Teppichen mit rug = ”True”.
Es gibt viele alternative Möglichkeiten, ein Histogramm in Python zu zeichnen:
plt.figur(Feigengröße=(3,3)) sns.histplot(x=Daten[„Summe des Angriffs“],Farbe = ”Grün”); plt.zeigen()
Ein anderer Weg ist: mit plt.hist ()
plt.figur(Feigengröße=(3,3)) plt.hist(x=Daten["Summe des Angriffs"],Farbe="rot",Behälter=20); plt.zeigen()
Deswegen, Es gibt viele Möglichkeiten, Verteilungen grafisch darzustellen. Alle Funktionen pyplot.hist, seaborn.coOutuntplot Ja seaborn.displot Sie dienen als Wrapper für ein Matplotlib-Balkendiagramm und können verwendet werden, wenn das manuelle Zeichnen eines solchen Balkendiagramms als zu umständlich angesehen wird.
- Für diskrete Variablen, ein
seaborn.countplotes ist praktischer. - Für stetige Variablen:
pyplot.histÖseaborn.distplotSie sind gebraucht.
Gemeinsame Verteilungsflächen:
Gemeinsame Verteilungsdiagramme kombinieren Informationen aus Streudiagrammen und Histogrammen, um uns detaillierte Informationen für bivariate Verteilungen zu geben..
sns.jointplot(x=Daten[„Summe des Angriffs“],y = Daten[„Verteidigungsstärke“],Farbe = "Rot");

Abfahrt: Gemeinschaftsgrundstück
Dichtediagramme:
Dichtediagramme zeigen die Verteilung zwischen zwei Variablen.
sns.kdeplot(x=Daten[„Summe des Angriffs“],y = Daten[„Verteidigungsstärke“]) plt.zeigen()
Abfahrt: DichtediagrammBalkengrafik
Balkendiagramme helfen uns, die Verteilungen kategorialer Variablen zu visualisieren: Countplot ist eine Art Balkendiagramm.
plt.figur(Feigengröße=(10,6)); sns.countplot(x=data.Pokemon_Type,palette=pkmn_type_colors); plt.zeigen()
Abfahrt: BalkengrafikDas Balkendiagramm ist eine visuelle Darstellung von Daten, die rechteckige Balken verwendet, um Vergleiche zwischen verschiedenen Kategorien anzuzeigen. Jeder Balken stellt einen Wert dar, und seine Länge ist proportional zu ihm. Diese Art von Diagramm ist nützlich, um Trends zu visualisieren und zu analysieren, Erleichterung der Interpretation quantitativer Informationen. Es ist in verschiedenen Disziplinen weit verbreitet, wie z.B. Statistiken, Marketing und Forschung, Aufgrund seiner Einfachheit und Effektivität....Heatmapein "Heatmap" ist eine grafische Darstellung, die Farben verwendet, um die Dichte von Daten in einem bestimmten Bereich anzuzeigen. Häufig in der Datenanalyse verwendet, Marketing und Verhaltensstudien, Diese Art der Visualisierung ermöglicht es Ihnen, Muster und Trends schnell zu erkennen. Durch chromatische Variationen, Heatmaps erleichtern die Interpretation großer Informationsmengen, dabei helfen, fundierte Entscheidungen zu treffen....
Heatmap hilft uns, Matrixdaten in Form von Hot- und Cold-Spots zu visualisieren. Warme Farben kennzeichneten die Abschnitte mit der meisten Besucherinteraktion.
plt.figur(Feigengröße=(8,6)); sns.heatmap(daten.korr());# Rotiere x-Labels mit Hilfe von matplotlib plt.xticks(Drehung=-45);
Abfahrt: HeatmapStreudiagrammEin Streudiagramm ist eine visuelle Darstellung, die die Beziehung zwischen zwei numerischen Variablen mithilfe von Punkten auf einer kartesischen Ebene zeigt. Jede Achse stellt eine Variable dar, und die Position jedes Punktes gibt seinen Wert in Bezug auf beide an.. Diese Art von Diagramm ist nützlich, um Muster zu erkennen, Korrelationen und Trends in den Daten, Erleichterung der Analyse und Interpretation quantitativer Zusammenhänge....:
EIN Streudiagramm (auch bekannt als Dispersion Grafik, Streudiagramm) verwendet Punkte, um Werte für zwei verschiedene numerische Variablen darzustellen. Die Position jedes Punktes auf der horizontalen und vertikalen Achse gibt Werte für einen einzelnen Datenpunkt an.
Streudiagramm werden verwendet, um Beziehungen zwischen Variablen zu beobachten.
Ich habe die Angriffs- und Verteidigungsstatistiken unserer Pokémon mit Hilfe von Streudiagrammen verglichen.
Abfahrt: StreudiagrammSeaborn hat keine AusbreitungsdiagrammDas Streudiagramm ist ein grafisches Werkzeug, das in der Statistik verwendet wird, um die Beziehung zwischen zwei Variablen zu visualisieren. Es besteht aus einer Menge von Punkten in einer kartesischen Ebene, wobei jeder Punkt ein Wertepaar darstellt, das den analysierten Variablen entspricht. Diese Art von Diagramm ermöglicht es Ihnen, Muster zu erkennen, Trends und mögliche Korrelationen, Erleichterung der Dateninterpretation und Entscheidungsfindung auf der Grundlage der präsentierten visuellen Informationen.... gewidmet, wir sehen also eine diagonale Linie (Regressionsgerade) hier standardmäßig.
Glücklicherweise, seaborn hilft uns, die Handlung zu ändern:
- fit_reg = False wird verwendet, um die Regressionslinie zu entfernen
- Farbton = ‚Bühne‘ Es wird verwendet, um Punkte für einen dritten Wert einzufärben VariableIn Statistik und Mathematik, ein "Variable" ist ein Symbol, das einen Wert darstellt, der sich ändern oder variieren kann. Es gibt verschiedene Arten von Variablen, und qualitativ, die nicht-numerische Eigenschaften beschreiben, und quantitative, numerische Größen darstellen. Variablen sind grundlegend in Experimenten und Studien, da sie die Analyse von Beziehungen und Mustern zwischen verschiedenen Elementen ermöglichen, das Verständnis komplexer Phänomene zu erleichtern..... Daher, ermöglicht es uns, die dritte Dimension von Informationen durch Farbe auszudrücken.
Hier habe ich die Pokémon-Evolutionsstufe als dritte Variable!!
#Optimieren mit Scatterplotsns.lmplot(x=’Angriffsstärke’, y=’Defensive Stärke’, Daten = Daten, fit_reg = Falsch, #Regressionsgerade löschen hue=”Generation”); #Trennung nach Pokémon-Generation
Ergebnis: angepasstes StreudiagrammMehr von der Dichte fällt ins Schwarze 40-120, Ich werde die Achsengrenzen mit Hilfe von matplotlib ändern:
sns.lmplot(x=’Angriffsstärke’, y=’Defensive Stärke’, Daten = Daten, fit_reg = Falsch, #Regressionsgerade löschen hue=”Generation”); #Trennung gemäß pokemon generationplt.ylim(20,130); plt.xlim(25,125);
Jetzt können wir eine bessere und fokussiertere Grafik sehen!!
Ergebnis: bestes StreudiagrammBox-Plot
Ein Boxplot wird verwendet, um Gruppen numerischer Daten durch ihre . darzustellen Quartile.
Das BoxplotsBox-Diagramme, Auch bekannt als Box- und Whisker-Diagramme, sind statistische Werkzeuge, die die Verteilung eines Datensatzes darstellen. Diese Diagramme zeigen den Median, Quartile und Ausreißer, Ermöglicht die Visualisierung von Datenvariabilität und -symmetrie. Sie sind nützlich für den Vergleich zwischen verschiedenen Gruppen und in der explorativen Analyse, So lassen sich Trends und Muster in den Daten leichter erkennen.... Sie können auch Linien aufweisen, die von den Kästchen ausgehen, die die Variabilität außerhalb des oberes und unteres Quartil, daher die Begriffe Box-and-Whisker-Plot und Box-and-Whisker-Plot
Wir können die Spalte löschen „Angriffssumme“ da wir individuelle Statistiken haben. Wir können auch die Spalten entfernen „Generation“ Ja „Legendär“ weil sie nicht gegen die Statistik ankämpfen.
plt.figur(Feigengröße=(15,7));# DataFrame vorformatieren stats_data = data.drop([„Summe des Angriffs“, 'Generation', „Legendär“], Achse=1); # Neuer Boxplot mit stats_df sns.boxplot(data=stats_data, showfliers=Falsch); #Ausreißer.set_style entfernen(„weißes Gitter“)
Abfahrt: Box-PlotDenken Sie daran, die Größe der FigurDas "Größe der Figur" bezieht sich auf die Abmessungen und Proportionen eines Gegenstandes oder einer Darstellung im Bereich der Kunst, Design und Anatomie. Dieses Konzept ist für die visuelle Komposition von grundlegender Bedeutung, da sie die Wahrnehmung und Wirkung der Arbeit beeinflusst. Wenn Sie die richtige Größe kennen, können Sie ein ästhetisches Gleichgewicht und eine visuelle Hierarchie schaffen, So wird die effektive Kommunikation der gewünschten Botschaft erleichtert.... Bevor Sie das Diagramm zeichnen.
Violinrahmen
Jetzt werde ich die Handlung der Geige verfolgen.
Geigenplots sind Alternativen zu Boxplots. Verteilung anzeigen (durch die Dicke der Geige) statt nur zusammenfassende Statistiken.
Hier habe ich die Verteilung des Angriffs nach primärem Pokémon-Typ gezeigt
plt.figur(Feigengröße=(15,7)); sns.violinplot(x=data.Pokemon_Type, y = Daten[„Angriffsstärke“]);
Abfahrt: ViolinhandlungWie du siehst, Drachentypen haben in der Regel höhere Angriffsstatistiken als Geistertypen, aber sie haben auch eine größere Variation.
Jetzt, Pokémon-Fans finden in dieser Handlung möglicherweise etwas ziemlich Erschütterndes: Die Farben sind absurd. Warum ist der Typ Grass rosa oder der Typ Wasser orange?? Das müssen wir sofort beheben!!
Glücklicherweise, Seaborn ermöglicht es uns, benutzerdefinierte Farbpaletten zu konfigurieren. Wir können einfach eine Bestellung erstellen Python-Liste hexadezimale Farbwerte.
Ich habe Bulbapedia verwendet, um ein neues zu erstellen FarbpaletteDie Farbpalette ist ein grundlegendes Werkzeug im Grafikdesign und in der Dekoration. Es besteht aus einer Auswahl an Farben, die harmonisch eingesetzt werden, um eine bestimmte Atmosphäre zu schaffen oder Emotionen zu vermitteln. Es gibt mehrere Farbtheorien, die bei der Auswahl effektiver Kombinationen helfen, wie Farbrad und Kontrast. Eine klar definierte Palette kann die Ästhetik und die visuelle Kommunikation eines Projekts verbessern.....
# mit Bulbapedia eine neue Farbpalette erstellen:#Bulbapedia : https://bulbapedia.bulbagarden.net/wiki/Category:Type_color_templatespkmn_type_colors = ['#78C850', # Gras ‘#F08030’, # Feuer ‘#6890F0’, # Wasser ‘#A8B820’, # Insekt ‘#A8A878’, # Normal ‘#A040A0’, # Gift ‘#F8D030’, # Elektrisch ‘#E0C068’, # Boden '#EE99AC', # Fee ‘#C03028’, # Kampf ‘#F85888’, # Hellseher ‘#B8A038’, # Felsen '#705898', # Geist ‘#98D8D8’, # Eis ‘#7038F8’, # Drachen ]
Änderungen am Plot der Geige entsprechend der Farbe des Pokémon-Typs vornehmen:
plt.figur(Feigengröße=(15,7)); sns.violinplot(x=data.Pokemon_Type, y = Daten[„Angriffsstärke“], Palette = pkmn_type_colors);
Ergebnis: Beste Violinhandlung 🙂Schwarmplots
Wie du gesehen hast, Geigendiagramme eignen sich hervorragend zur Visualisierung von Verteilungen.
Aber trotzdem, da wir nur haben 150 Pokémon in unserem Datensatz, Vielleicht möchten wir nur jeden Punkt zeigen. Das ist, wo die Schwarmplot Komm herein. Diese Visualisierung zeigt jeden Punkt, während „appellieren“ die mit ähnlichen Werten.
plt.figur(Feigengröße=(12,5)); sns.swarmplot(x=data.Pokemon_Type,y = Daten[„Angriffsstärke“],palette=pkmn_type_colors);
Schwarmplot: Pokémon Typ Vs Attack ForceDas sieht gut aus, aber für bessere Bilder, Wir können diese beiden kombinieren! Schließlich, zeige die gleichen Informationen.
Überlappende Grafiken
plt.figur(Feigengröße=(10,10))sns.violinplot(x=data.Pokemon_Type, y = Daten[„Angriffsstärke“], inner=Keine, Palette = pkmn_type_colors);sns.swarmplot(x="Pokemon_Type", y=”Angriffsstärke”, Daten = Daten, Farbe=’schwarz’, #Punkte schwarz machen Alpha=0,5);plt.titel(„Angriffsstärke nach Pokémon-Typ“);
Überlappende GrafikenPunkte, die man beachten sollte:
inner = Keine: Entfernen Sie die Stäbe in den Geigen
alpha = 0.5: macht die Punkte leicht transparent: Denken Sie daran, dass der Alpha-Wert float sein muss, behalte es nicht an „“
Die Referenzen für die Farbe Navy finden Sie hier: https://python-graph-gallery.com/100-calling-a-color-with-seaborn/
Faktordiagramme
Faktordiagramme erleichtern die Trennung von Diagrammen nach kategorialen Klassen.
plt.figur(Feigengröße=(5,15)) factplot= sns.factorplot(x="Pokemon_Typ",y ="Angriffsstärke",Daten = Daten,Farbton="Generation",col="Generation",Art="Schwarm");factplot.set_xticklabels(Drehung=-45) plt.zeigen()
Faktordiagramm: für separate kategoriale KlassenSchnelle Notizen:
- plt.xticks (Drehung = -45): es funktioniert nicht, weil es nur den letzten Graphen dreht
- Muss verwendet werden: set_xticklabels



