NumPy und Statistik

Wenn man mit Daten arbeitet, dann ist der erste wichtige Schritt die Daten etwas zu überblicken. Um welche Daten handelt es sich? Wie viele Spalten gibt es? Welche Spalten sind enthalten? Etc. Mit diesem Verständnis lassen sich dann auch sehr schnell Fragen beantworten. Gehen wir davon aus du hast eine lange Liste von Leuten mit dem Alter und du möchtest wissen, was das Durchschnittsalter ist. Auch das lässt sich schnell und einfach mit NumPy erzielen.

Beispiel-Daten generieren

Für unser Beispiel generieren wir nun Beispiel-Daten:

height = np.round(np.random.normal(5.37, 0.15, 100), 2)

Zur Erklärung:

  • “height” ist unsere Variable, wo wir ein Array an Zahlen speichern.
  • Im Inneren haben wir zunächst eine Funktion “np.random.normal(1.75, 0.20, 100)”.
  • Diese Funktion generiert 100 zufällige Zahlen (dritter Parameter + random-Funktion) aus einer Normalverteilung (normal-Funktion).
  • Der Mittelwert dieser Verteilung soll 5.37 (erster Paramter) betragen.
  • Die Standardabweichung sollte 0.15 (zweiter Parameter) betragen.
  • Mit der Funktion “np.round(…, 2)” stellen wir sicher, dass jedes Element im Array auf zwei Dezimalstellen gerundet wird.

Da wir die Höhen haben, können wir nun über die selbe Logik auch die Breiten generieren:

width = np.round(np.random.normal(4.25, 0.25, 100), 2)

Im letzten Schritt können wir über die “column_stack”-Funktion beide Arrays zusammenlegen und als zwei Spalten zusammenfügen:

np_surface = np.column_stack((height, width))

Statistik mit NumPy

Jetzt haben wir also ein Array mit zwei Spalten, eine für die Höhe und eine für die Breite. Wenn du nun die durchschnittliche Höhe herausfinden möchtest, dann bietet NumPy dafür eine Funktion. Das lässt sich wie folgt erreichen:

np.mean(np_surface[:, 0])

Von unserem np_surface wählen also alle Zeilen, aber nur die erste Spalte über “[:, 0]”. Die np.mean()-Funktion wird nun auf diese Daten angewendet und wir bekommen die durschnittliche Höhe.

Den Medium würde man auch über die np.median()-Funktion bekommen:

np.median(np_surface[:, 0])

Daneben gibt es noch viele weitere nützliche Funktionen wie corrcoef(), um zu ermitteln, ob es eine Korrelation zwischen Höhe und Breite existiert. Dazu musst du als ersten Parameter die erste Spalte und im zweiten Parameter die zweite Spalte übergeben:

np.corrcoef(np_surface[:, 0], np_surface[:, 1])

Keine Kommentare möglich.