Pandas pd.cut() Funktion

Pandas 通用函数Pandas Häufige Funktionen


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 istTrue(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: WennTrue, enthält das Rückgabeergebnis die Bin-Grenzen. Standard istFalse。
  • Parameter: include_lowest
    • Typ: Boolescher Wert.
    • Beschreibung: WennTrue, 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 pandas as pd
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:

  1. bins=3Gibt an, dass die Daten automatisch in 3 gleich breite Intervalle aufgeteilt werden.
  2. Pandas berechnet die Intervallgrenzen automatisch anhand der Minimal- und Maximalwerte der Daten.
  3. Der Rückgabewert ist vom Typ Categorical, und jeder Wert ist ein Interval-Objekt.
  4. 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 pandas as pd
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 fest
  • include_lowest=TrueStellen Sie sicher, dass das erste Intervall die linke Grenze 0 enthält
  • value_counts()Macht es einfach, die Anzahl der Personen in jeder Notenstufe zu zählen

Beispiel 3: Verwendung von rechtsgeschlossenen/linksgeschlossenen Intervallen

Beispiel

import pandas as pd
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
  • Setright=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, diebinsden angegebenen Bereich überschreiten, wird NaN erzeugtNaN
  • binsGrenzen 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.

Python math 模块Pandas Häufige Funktionen

Andere Erweiterungen