Bin-Daten mit SciPy, NumPy und Pandas in Python

Zeeshan Afridi 21 Juni 2023
  1. Binning in Python
  2. Bedeutung des Data Binning
  3. Verschiedene Möglichkeiten zum Sortieren von Daten in Python
Bin-Daten mit SciPy, NumPy und Pandas in Python

Mit dem exponentiellen Wachstum von Daten und Anwendungsfällen wird das Binning oder Kategorisieren von Daten erforderlich, um diese Daten sinnvoll zu nutzen.

Beim Data Binning stehen verschiedene Techniken zur Verfügung, wie Datenclustering oder eher klassische statistische Techniken wie die Regressionsanalyse.

Wir werden sehen, warum Sie Datenbinning benötigen und welche Technik für welchen Kontext am besten geeignet ist.

Binning in Python

Binning ist eine der leistungsstärksten analytischen Techniken, um auf die Beziehung verschiedener Variablen zu schließen.

Binning ist eine nichtparametrische und hochflexible Technik, bei der die Variablen in verschiedene Sätze kategorisiert werden, um Muster und Trends aufzudecken. Es ist weithin auf verschiedene Datensätze und kleine Stichprobengrößen anwendbar.

Binning ist ein Prozess, bei dem Daten in Bins gruppiert werden. Dies kann für verschiedene Zwecke erfolgen, z. B. zum Gruppieren von Datenpunkten nach Bereich, zum Gruppieren von Datenpunkten nach Dichte oder zum Gruppieren von Datenpunkten nach Ähnlichkeit.

Es gibt verschiedene Möglichkeiten, Daten in Python zu binren, z. B. die Verwendung der Funktion numpy.digitize(), der Funktion pandas.cut() und die Verwendung der Funktion scipy.stats.binned_statistic().

Jede Methode hat Vor- und Nachteile, daher ist die Auswahl der geeigneten Methode für die Aufgabe von entscheidender Bedeutung.

Bedeutung des Data Binning

Data Binning ist ein einfaches Konzept: Klassifizieren von Daten für eine einfachere Analyse. Sie haben beispielsweise mehrere große Datentabellen in einer CSV-Datei und möchten die Daten in kleinere Blöcke aufteilen.

Data Binning ermöglicht es Ihnen, die Daten in verschiedene Gruppen einzuteilen, damit Sie sie besser analysieren können, und wir können sie auch verwenden, um hübsche Visualisierungen zu erstellen.

Warum also ist Datenklassierung notwendig? Erstens ist Data Binning unerlässlich, da es Ihnen hilft, Ihre Daten besser zu analysieren. Sie können beispielsweise eine ganze Datentabelle in kleinere Teile aufteilen, die leichter zu verstehen oder zu visualisieren sind.

Data Binning kann Ihnen helfen, Muster in den Daten zu finden und Ausreißer leichter zu identifizieren. Es ermöglicht Ihnen, einen riesigen Datensatz zu nehmen und ihn überschaubarer zu machen, um dem Kern des Problems auf den Grund zu gehen.

Data Binning ist ein Prozess, bei dem eine kontinuierliche Variable in diskrete Bins unterteilt wird. Als grobes Beispiel: Wenn Sie die Temperaturvariable eines Patienten haben, können Sie die Temperatur in fünf Klassen einteilen (sagen wir < 36,5, 36,5–37,5, 37,5–38,5, 38,5–39,5 und > 39,5).

Dieser Vorteil besteht darin, dass Sie die Variable mithilfe der Bin-Bereiche in einem Histogramm oder Boxplot visualisieren können.

Verschiedene Möglichkeiten zum Sortieren von Daten in Python

Es gibt mehrere Möglichkeiten, Daten in Python zu bündeln, aber die Verwendung der Bibliotheken SciPy und NumPy ist wohl die effizienteste.

Verwenden Sie SciPy und NumPy, um Daten in Python zu binren

Um mit SciPy und NumPy zu beginnen, nehmen wir an, Sie haben eine Liste von Datenpunkten, die Sie in einen Bin verschieben möchten. Der erste Schritt besteht darin, die Bibliotheken SciPy und NumPy zu importieren:

import numpy as np
import scipy as sp

Als Nächstes müssen Sie die Ränder der Bins definieren. Dies kann mit der Funktion linspace erfolgen:

bin_edges = np.linspace(start, stop, num=num_bins)

Wobei start und stop jeweils die Mindest- und Höchstwerte der Daten sind und num_bins die Nummer der Bins ist, die Sie erstellen möchten. Schließlich können Sie die Histogrammfunktion SciPy verwenden, um die Daten zu sortieren:

binned_data = sp.histogram(data, bin_edges)

Die Variable binned_data enthält nun ein Tupel mit zwei Elementen. Das erste Element ist ein Array der gebinnten Daten, und das zweite ist ein Array der Bin-Ränder.

Verwenden Sie Numpy, um Daten in Python zu binren

Codebeispiel:

# import Numpy library
import numpy

# define the edges of bin
data = numpy.random.random(100)
bins = numpy.linspace(0, 1, 10)

# finally, bin the data using numpy
digitized = numpy.digitize(data, bins)
bin_means = [data[digitized == i].mean() for i in range(1, len(bins))]
bins = numpy.linspace(0, 1, 10)

digitized = numpy.digitize(data, bins)
[data[digitized == i].mean() for i in range(1, len(bins))]

Ausgang:

[0.05308461260140375,
 0.16559348769870028,
 0.28950800899648155,
 0.3874228665181473,
 0.5046647094141071,
 0.6254841134474202,
 0.7216935463408317,
 0.8374773268113803,
 0.9421576008815353]

Verwenden Sie Pandas, um Daten in Python zu binren

Codebeispiel:

# import libraries
import numpy as np
import pandas

df = pandas.DataFrame({"a": np.random.random(100), "b": np.random.random(100) + 10})

# will Bin the data frame by "a" in 10 bins
bins = np.linspace(df.a.min(), df.a.max(), 10)
groups = df.groupby(pandas.cut(df.a, bins))

# Get the b mean that the values will bin
print(groups.mean().b)

Ausgang:

a
(0.00762, 0.117]    10.576639
(0.117, 0.226]      10.319629
(0.226, 0.335]      10.633805
(0.335, 0.444]      10.404979
(0.444, 0.553]      10.551616
(0.553, 0.662]      10.420306
(0.662, 0.771]      10.434091
(0.771, 0.88]       10.402038
(0.88, 0.989]       10.537547
Name: b, dtype: float64

Verwenden Sie SciPy, um Daten in Python zu binren

Codebeispiel:

# import libraries
import numpy as np
from scipy import stats

# define array
arr = [20, 2, 7, 1, 34]
print("\narr : \n", arr)

# start binning
print(
    "\nbinned_statistic for median : \n",
    stats.binned_statistic(arr, np.arange(5), statistic="median", bins=4),
)

Ausgang:

Array = [20, 2, 7, 1, 34]

Binned statistics for median

BinnedStatisticResult(statistic=array([ 2., nan,  0.,  4.]), bin_edges=array([ 1.  ,  9.25, 17.5 , 25.75, 34.  ]), binnumber=array([3, 1, 1, 1, 4], dtype=int64))
Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn