Gruppieren einer Spalte mit Pandas
Bei der Datenmanipulation geht es oft darum, Werte in sinnvollen Gruppen oder Bins zu organisieren. In diesem Zusammenhang werden wir untersuchen, wie man mithilfe von Pandas eine Spalte mit numerischen Werten einteilt.
Frage:
Angesichts einer Datenrahmenspalte mit numerischen Werten möchten wir dies tun Stellen Sie es sich als Behälter mit Wertzählungen vor. Wie können wir konkret die Anzahl der Werte bestimmen, die in jede Bin fallen?
Antwort:
Option 1: Verwendung von pandas.cut
Mit der Funktion pandas.cut können Bins erstellt werden. Hier ist ein Beispiel:
import pandas as pd bins = [0, 1, 5, 10, 25, 50, 100] df['binned'] = pd.cut(df['percentage'], bins) df['binned'].value_counts()
Dadurch werden Bins gemäß den angegebenen Intervallen erstellt und eine Reihe zurückgegeben, die die Bin-Zuordnungen für jeden Wert enthält. Mit value_counts können wir die Anzahl der Vorkommen in jedem Bin zählen.
Option 2: Verwendung von numpy.searchsorted
Ein anderer Ansatz ist die Verwendung von numpy.searchsorted:
import numpy as np bins = [0, 1, 5, 10, 25, 50, 100] df['binned'] = np.searchsorted(bins, df['percentage'].values) df['binned'].value_counts()
Diese Funktion gibt den Index des ersten Bins zurück, zu dem jeder Wert gehört. Wir können dann value_counts verwenden, um die Bin-Anzahl zu bestimmen.
Option 3: Kombinieren von Groupby und Size
Wir können auch die Groupby- und Size-Methoden von Pandas verwenden:
s = df.groupby(pd.cut(df['percentage'], bins)).size()
Dadurch wird der Datenrahmen nach den Bin-Zuweisungen gruppiert und eine Reihe mit der Anzahl der Werte in jedem zurückgegeben bin.
Fazit:
Diese Methoden ermöglichen es uns, eine numerische Spalte effektiv zu unterteilen und Wertanzahlen für jedes Fach zu erhalten, was Einblicke in die Verteilung von Werten liefert.
Das obige ist der detaillierte Inhalt vonWie kann ich eine Pandas DataFrame-Spalte einteilen und Werte in jedem Bin zählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!