Pandas pd.cut() Funktion
pd.cut()wird in der Pandas-Bibliothek verwendet, umkontinuierliche Daten zu diskretisieren (Binning)Funktion. Sie unterteilt numerische Daten nach festgelegten Intervallen in diskrete Kategorien und eignet sich sehr gut für gruppierte Statistiken und Visualisierungen in der Datenanalyse.
Binning-Operationen sind in der Datenanalyse sehr verbreitet, wie zum Beispiel die Einteilung von Altersgruppen in "Teenager", "mittleres Alter", "Senioren" oder die Einteilung von Punkten in "nicht bestanden", "bestanden", "gut", "sehr gut" usw.
Wortbedeutung: cutEs bedeutet "cut". Hier bezieht es sich auf das "Aufteilen" eines kontinuierlichen Datenintervalls in mehrere diskrete Intervalle.
Grundlegende Syntax und Parameter
pd.cut()ist eine Top-Level-Funktion der Pandas-Bibliothek, die zum Diskretisieren kontinuierlicher Variablen verwendet wird.
Syntaxformat
pd.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False)
Parameterbeschreibung
- Parameter:
x- Typ: Array-ähnliches Objekt, wie list, Series, array usw.
- Beschreibung: Die kontinuierlichen numerischen Daten, die in Bins eingeteilt werden sollen.
- Parameter:
bins- Typ: Integer, Skalar (Intervallgrenzen) oder IntervalIndex.
- Beschreibung: Die Binning-Methode. Sie kann eine Ganzzahl sein (die angibt, in wie viele gleich breite Bins aufgeteilt werden soll) oder eine Liste (die bestimmte Intervallgrenzen angibt).
- Parameter:
right- Typ: Boolescher Wert.
- Beschreibung: Gibt an, ob rechtsgeschlossene Intervalle verwendet werden. Standard ist
True(d. h. in der Form [a, b]). Wenn aufFalse, dann ist es ein linksgeschlossenes, rechts offenes Intervall (a, b].
- Parameter:
labels- Typ: Array oder None.
- Beschreibung: Geben Sie benutzerdefinierte Beschriftungen für jedes Intervall an. Wenn nicht angegeben, werden Intervall-Darstellungen wie "(0, 10]" verwendet.
- Parameter:
retbins- Typ: Boolescher Wert.
- Beschreibung: Wenn
True, enthält das Rückgabeergebnis die Bin-Grenzen. Standard istFalse。
- Parameter:
include_lowest- Typ: Boolescher Wert.
- Beschreibung: Wenn
True, das erste Intervall enthält die linke Grenze. Standard istFalse。
Funktionsbeschreibung
- Rückgabewert: Gibt eine Series vom Typ Categorical zurück, wobei jeder Wert dem Intervall entspricht, zu dem er gehört.
- Wirkung: Ordnet kontinuierliche numerische Werte diskreten Kategorien (Intervallen) zu.
Beispiel
Lass uns durch eine Reihe von Beispielen von einfach bis komplex gründlich meistern,pd.cut()die Verwendung beherrschen.
Beispiel 1: Grundlegende Verwendung — Equal-Width-Binning
Beispiel
import numpy as np
# 1. Numerische Daten erstellen
scores = pd.Series([55, 70, 82, 45, 90, 65, 78, 88, 92, 58])
print("=== Ursprüngliche Scores ===")
print(scores)
# 2. Teile die Scores in 3 gleich breite Intervalle auf
result = pd.cut(scores, bins=3)
print("\n=== pd.cut(scores, bins=3) Binning mit gleicher Breite ===)
print(result)
# 3. Die Intervallgrenzen anzeigen
result_bins = pd.cut(scores, bins=3, retbins=True)
print("\n=== Bin-Grenzen zurückgeben ===)
print(f"Bin-Grenzen: {result_bins)
Erwartete Ausgabe:
=== 原始分数 === 0 55 1 70 2 82 3 45 4 90 5 65 6 78 7 88 8 92 9 58 === pd.cut(scores, bins=3) 等宽分箱 === 0 (44.667, 60.667] 1 (60.667, 76.333] 2 (76.333, 92.0] 3 (44.667, 60.667] 4 (76.333, 92.0] 5 (60.667, 76.333] 6 (60.667, 76.333] 7 (76.333, 92.0] 8 (76.333, 92.0] 9 (44.667, 60.667] dtype: category Categories (3, interval[float64]): [(44.667, 60.667] < (60.667, 76.333] < (76.333, 92.0] === 返回分箱边界 === 分箱边界: [44.667 60.667 76.333 92. ]
Code-Erklärung:
bins=3Gibt an, dass die Daten automatisch in 3 gleich breite Intervalle aufgeteilt werden.- Pandas berechnet die Intervallgrenzen automatisch anhand der Minimal- und Maximalwerte der Daten.
- Der Rückgabewert ist vom Typ Categorical, und jeder Wert ist ein Interval-Objekt.
- Standardmäßig werden rechts geschlossene Intervalle verwendet, d. h. in der Form (a, b].
Beispiel 2: Benutzerdefinierte Intervallgrenzen
In der Praxis müssen wir häufig Bin-Grenzen an die Geschäftsanforderungen anpassen.
Beispiel
import numpy as np
# Score-Daten erstellen
scores = pd.Series([55, 70, 82, 45, 90, 65, 78, 88, 92, 58, 73, 67, 81, 49, 95])
# Benutzerdefinierte Bin-Grenzen: Nicht bestanden, Bestanden, Gut, Sehr gut
bins = [0, 60, 75, 90, 100]
labels = ['Nicht bestanden', 'Bestanden', 'Gut', 'Ausgezeichnet']
result = pd.cut(scores, bins=bins, labels=labels, include_lowest=True)
print("=== Ursprüngliche Scores ===")
print(scores.values)
print("\n=== Binning-Ergebnis ===)
print(result)
# Zähle die Anzahl der Personen in jeder Notenstufe
print("\n=== Statistik der Punkteverteilung ===)
print(result.value_counts().sort_index())
Erwartete Ausgabe:
=== 原始成绩 [55 70 82 45 90 65 78 88 92 58 73 67 81 49 95] === 分箱结果 0 及格 1 良好 2 良好 3 不及格 4 优秀 ... 12 良好 13 不及格 14 优秀 dtype: category Categories (4, interval[int64]): [不及格 < 及格 < 良好 < 优秀] === 成绩分布统计 不及格 3 及格 4 良好 5 优秀 3 dtype: int64
Code-Erklärung:
bins=[0, 60, 75, 90, 100]Definierte 4 Intervalle: [0-60], (60-75], (75-90], (90-100]labelsDer Parameter labels legt intuitive chinesische Beschriftungen für jedes Intervall festinclude_lowest=TrueStellen Sie sicher, dass das erste Intervall die linke Grenze 0 enthältvalue_counts()Macht es einfach, die Anzahl der Personen in jeder Notenstufe zu zählen
Beispiel 3: Verwendung von rechtsgeschlossenen/linksgeschlossenen Intervallen
Beispiel
import numpy as np
# Testdaten
data = pd.Series([10, 20, 30, 40, 50])
# Standardmäßig rechtsgeschlossenes Intervall [a, b]
result1 = pd.cut(data, bins=4)
print("=== Standardmäßiges rechtsgeschlossenes Intervall [a, b] ===")
print(result1)
# Linksgeschlossenes, rechts offenes Intervall (a, b]
result2 = pd.cut(data, bins=4, right=False)
print("\n=== Linksgeschlossenes, rechts offenes Intervall (a, b] ===)
print(result2)
Erwartete Ausgabe:
=== 默认右闭区间 [a, b] 0 (7.5, 17.5] 1 (17.5, 27.5] 2 (27.5, 37.5] 3 (37.5, 47.5] 4 (47.5, 57.5] dtype: category === 左闭右开区间 (a, b] 0 [10, 17.5) 1 [17.5, 27.5) 2 [27.5, 37.5) 3 [37.5, 47.5) 4 [47.5, 57.5) dtype: category
Code-Erklärung:
- Standardmäßig wird das rechtsgeschlossene Intervall verwendet
[a, b], d. h., es schließt die rechte Grenze ein - Set
right=Falseum zu einem linksgeschlossenen, rechts offenen Intervall zu wechseln[a, b) - Der Offen-/Geschlossen-Modus des Intervalls beeinflusst die Klassifizierung von Grenzwerten.
Hinweise
Wichtige Hinweise:
- Wenn es in den Daten Werte gibt, die
binsden angegebenen Bereich überschreiten, wird NaN erzeugtNaNbinsGrenzen müssen monoton steigend sein- Bei der Verwendung benutzerdefinierter Labels muss die Anzahl der Labels um eins kleiner als die Anzahl der Grenzen sein.
- Das Ergebnis der Binning-Operation ist vom Typ Categorical und kann mit String-Methoden verarbeitet werden.
Andere Erweiterungen
Pandas Häufige Funktionen