Seaborn-Histogramm-Plot

Salman Mehmood 15 Februar 2024
  1. Verwenden Sie die Seaborn-Funktion histplot(), um das Histogramm in Python zu zeichnen
  2. Gruppieren Sie mehrere Histogramme mit der Funktion FacetGrid() in Seaborn
Seaborn-Histogramm-Plot

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.

Seaborn-Histogramm-Plot – Ausgabe 1

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)

Seaborn-Histogramm-Plot – Ausgabe 2

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)

Seaborn-Histogramm-Plot – Ausgabe 3

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)

Seaborn-Histogramm-Plot – Ausgabe 4

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.

Seaborn-Histogramm-Plot - Ausgabe 5

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)

Seaborn-Histogramm-Plot - Ausgabe 6

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])

Seaborn-Histogramm-Plot - Ausgabe 7

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))

Seaborn-Histogramm-Plot - Ausgabe 8

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.

Seaborn-Histogrammdiagramm – Beispiel

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.

Seaborn-Histogramm-Plot - Ausgabe 9

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.

Seaborn-Histogramm-Plot - Ausgabe 10

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")

Seaborn-Histogramm-Plot - Ausgabe 11

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.

Seaborn-Histogramm-Plot - Ausgabe 12

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")
Salman Mehmood avatar Salman Mehmood avatar

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

Verwandter Artikel - Seaborn Plot