Seaborn-Histogramm-Plot
-
Verwenden Sie die Seaborn-Funktion
histplot()
, um das Histogramm in Python zu zeichnen -
Gruppieren Sie mehrere Histogramme mit der Funktion
FacetGrid()
in Seaborn
Dieser Artikel behandelt die Erstellung eines Histogramms mit der Seaborn-Funktion histplot()
. Wir werden auch untersuchen, warum die Funktion distplot()
einen Fehler auslöst.
Wir werden dann lernen, wie man mehrere Parzellen in Seaborn gruppiert.
Verwenden Sie die Seaborn-Funktion histplot()
, um das Histogramm in Python zu zeichnen
Wenn Sie mit Seaborn vertraut sind oder die Dokumentation verfolgt haben, wissen Sie vielleicht, dass die vorherige Methode zum Erstellen eines Histogramms mit dem distplot
war. All das hat sich mit der neuesten Version von Seaborn geändert.
Sie werden nun diese Warnung sehen, die Ihnen mitteilt, dass distplot()
veraltet ist und Sie stattdessen histplot()
verwenden sollten, um ein Histogramm zu erstellen.
Die Seaborn-Version 0.11.2 enthält drei neue Verteilungsdiagramme, also fangen wir mit den Grundlagen des brandneuen seaborn histplot
an und schreiben etwas Code.
Wir werden Seaborn und Alias als sb
importieren. Wir wollten Sie nur noch einmal daran erinnern, dass Sie mit der neuesten Seaborn-Version arbeiten müssen, um mitzumachen.
Überprüfen Sie also Ihre Version mit dem folgenden Befehl.
import seaborn as sb
sb.__version__
Ausgang:
'0.11.2'
Jetzt werden wir einige Daten aus der Seaborn-Bibliothek laden. Diese Daten beziehen sich auf Pinguine.
PG_Data = sb.load_dataset("penguins")
PG_Data.head()
Wir haben verschiedene Messungen für verschiedene Pinguinarten.
PG_Data.shape
Wir haben 344 Beobachtungen, aber wir lassen alle Nullwerte fallen, sodass wir 333 Beobachtungen haben.
PG_Data.dropna(inplace=True)
PG_Data.shape
Ausgang:
(333, 7)
Jetzt machen wir das nur zu Plot-Zwecken, also lasst uns weitermachen und unser Seaborn-Histogramm-Plot erstellen.
Zuerst verwenden wir Seaborn-Styling, verweisen auf die Seaborn-Bibliothek und rufen sb.histplot()
auf.
Dann passieren wir die Serie bill_length_mm
von penguins
. Wir wählen nur eine Spalte aus unserem Datenrahmen aus, um ein Histogramm zu zeichnen.
sb.set_style("whitegrid")
sb.histplot(PG_Data.bill_length_mm)
Es gibt auch eine alternative Möglichkeit, die Syntax hier auszuführen. Wir können den vollständigen Datenrahmen an dieses Daten
-Argument übergeben und dann jede beliebige Spalte übergeben, die wir mit dem Histogramm darstellen möchten.
sb.histplot(x="bill_length_mm", data=PG_Data)
Wir können horizontale Balken anstelle von vertikalen erstellen. Wir könnten dies stattdessen auf y
umstellen und ein horizontales Histogramm erzeugen.
sb.histplot(y="bill_length_mm", data=PG_Data)
Wenn Sie mit dem alten seegeborenen distplot
vertraut sind, wissen Sie, dass mit distplot
ein kde
-Plot über unserem Histogramm gezeichnet wird, und wir können das beim neueren seegeborenen histplot
umkehren.
Lassen Sie uns auf dieses kde
-Argument verweisen und es gleich True
setzen.
sb.histplot(x="bill_length_mm", data=PG_Data, kde=True)
Dies wird sehr ähnlich aussehen wie das, was Seaborn für die alte distplot-Version
produziert hat. Wenn Sie mit dem Plot von kde
nicht vertraut sind, lesen Sie hier.
Verwenden Sie histplot()
mit den Argumenten bins
, binwidth
und binrange
Standardmäßig versucht Seaborn zu entscheiden, wie viele Bins für unsere Daten geeignet sind, aber wir können umschalten, indem wir ein Argument namens bins
verwenden, das ein paar verschiedene Dinge akzeptiert.
Nehmen wir an, Behälter
ist gleich 30. Dadurch werden 30 separate Behälter erstellt, die gleichmäßig über unser Sortiment verteilt sind und eine ungefähre Verteilung zeigen.
sb.histplot(x="bill_length_mm", data=PG_Data, bins=30)
Aus irgendeinem Grund haben Sie einen bestimmten Ort, an dem diese Behälter angezeigt werden sollen. Wir können auch eine Liste übergeben, in der jede dieser Nummern die Start- und Stopppositionen der Histogramm-Bins sind.
sb.histplot(x="bill_length_mm", data=PG_Data, bins=[20, 40, 50, 55, 60, 65])
Wir können uns aus irgendeinem Grund dafür entscheiden, unsere Behälter unregelmäßig zu verteilen. Zwei Argumente, die wir als sehr hilfreich empfunden haben, sind binwidth
und binrange
.
In binwidth
können wir es auf jeden Wert setzen, den wir setzen können; Wir setzen jedoch 10, also sind 10 Einheiten erforderlich.
Wir können eine Reihe von Bins mit dem Argument binrange
definieren, und wir müssen ein Tupel übergeben, um Werte zu starten und zu stoppen.
sb.histplot(x="bill_length_mm", data=PG_Data, binwidth=10, binrange=(30, 60))
Gruppieren Sie mehrere Histogramme mit der Funktion FacetGrid()
in Seaborn
Jetzt sprechen wir über die Seaborn-Funktion FacetGrid()
. Es ist das Rückgrat für catplot
, relplot
und displot
.
Wir können das Diagramm mit der Funktion FacetGrid()
gruppieren, und die Hauptidee hinter FacetGrid
ist, dass wir kleine Vielfache erstellen.
Das bedeutet, dass wir ein kategorisches Merkmal in unseren Daten auswählen und dann ein Diagramm für jede Kategorie erstellen, und wir werden in der Lage sein, all dies mit nur wenigen Codezeilen zu tun. Beispielsweise ermöglicht uns der Marktanteil der Unternehmen A, B und C, Trends über verschiedene Kategorien hinweg zu vergleichen.
Lassen Sie uns in den Code springen. Wir werden uns einige Daten über Pinguine ansehen, wie wir sie oben betrachtet haben.
Jetzt erstellen wir unser FacetGrid
. Dazu referenzieren wir die Seaborn-Bibliothek und geben dann die Funktion FacetGrid()
ein, und wir müssen auch den Datenrahmen der Pinguine bereitstellen.
Es werden leere x
- und y
-Achsen erstellt, die bereit sind, einige Daten einzugeben. Wir können entweder eine Zeilen- oder eine Spaltendimension oder beides liefern.
Nehmen wir an, wir wollen diese Säulendimension liefern und unsere kleinen Vielfachen durch die Insel
auflösen, auf der die Pinguine leben.
sb.set_style("darkgrid")
sb.FacetGrid(PG_Data, col="island")
Es erstellte drei separate Subplots für jede Insel, weil es drei Inseln fand.
Nachdem wir unser FacetGrid
eingerichtet haben, können wir mit Schritt zwei fortfahren, der darin besteht, einige Diagramme auf diese Achsen abzubilden. Wir rufen die Funktion map()
auf, und innerhalb dieser Funktion müssen wir die Figur angeben, die wir erstellen möchten.
Es wird Histogrammdiagramme für jede dieser Zahlen erstellen, und wir müssen auch definieren, an welcher Spalte des Datenrahmens der Pinguine wir interessiert sind. Wir interessieren uns für flipper_length_mm
.
FG = sb.FacetGrid(PG_Data, col="island")
FG.map(sb.histplot, "flipper_length_mm")
Es gruppiert alle Daten nach jeder Insel und erstellt dann ein Histogramm für jede dieser Gruppen. Wir können all diese kleinen Vielfachen mit nur ein paar Zeilen Code erstellen.
Das FacetGrid
-Objekt namens FG
hat auch eine andere Methode namens map_dataframe
, die etwas anders ist, aber ähnliche Dinge wie map erreicht.
FG = sb.FacetGrid(PG_Data, col="island")
FG.map_dataframe(sb.histplot, x="flipper_length_mm")
Es macht dasselbe wie die Funktion map()
, aber es ist etwas anders. Einer der großen Unterschiede hier ist, dass map_dataframe()
variable Argumente zulässt. Wir könnten also x
gleich flosse_length_mm
definieren, oder wir können y
definieren.
FG = sb.FacetGrid(PG_Data, col="island")
FG.map_dataframe(sb.histplot, y="flipper_length_mm")
Es wird ein horizontales histplot
zeichnen.
Lesen Sie die anderen Dinge im Zusammenhang mit dem histplot
von hier.
Vollständiger Code:
# In[1]:
import seaborn as sb
# In[2]:
sb.__version__
# In[3]:
PG_Data = sb.load_dataset("penguins")
# In[4]:
PG_Data.head()
# In[5]:
PG_Data.shape
# In[6]:
PG_Data.dropna(inplace=True)
# In[7]:
PG_Data.shape
# In[8]:
sb.set_style("whitegrid")
sb.histplot(PG_Data.bill_length_mm)
# In[9]:
sb.histplot(x="bill_length_mm", data=PG_Data)
# In[10]:
sb.histplot(y="bill_length_mm", data=PG_Data)
# In[11]:
sb.histplot(x="bill_length_mm", data=PG_Data, kde=True)
# In[12]:
sb.histplot(x="bill_length_mm", data=PG_Data, bins=30)
# In[13]:
sb.histplot(x="bill_length_mm", data=PG_Data, bins=[20, 40, 50, 55, 60, 65])
# In[14]:
sb.histplot(x="bill_length_mm", data=PG_Data, binwidth=10, binrange=(30, 60))
# ##### FacetGrid
# In[15]:
sb.set_style("darkgrid")
FG = sb.FacetGrid(PG_Data, col="island")
# In[16]:
FG = sb.FacetGrid(PG_Data, col="island")
FG.map(sb.histplot, "flipper_length_mm")
# In[17]:
FG = sb.FacetGrid(PG_Data, col="island")
FG.map_dataframe(sb.histplot, x="flipper_length_mm")
# In[18]:
FG = sb.FacetGrid(PG_Data, col="island")
FG.map_dataframe(sb.histplot, y="flipper_length_mm")
Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.
LinkedIn