Matrixmultiplikation bei Pandas

Olorunfemi Akinlua 21 Juni 2023
  1. Multiplikation von Matrizen
  2. Überprüfen Sie, ob DataFrames in Pandas ausgerichtet sind
  3. Verwenden Sie die Punkt-Funktion, um die Matrixmultiplikation in Pandas durchzuführen
Matrixmultiplikation bei Pandas

Die Matrixmultiplikation wird unter anderem häufig zum Verständnis von Netzwerkbeziehungen, Koordinatensystemtransformationen, Zahlenmodellen und Bestandsberechnungen verwendet. Mit Zeilen-Spalten-basierten numerischen Daten können wir eine Matrixmultiplikation durchführen und das Ergebnis in allen anwendbaren Bereichen verwenden.

Pandas und Numpy verfügen über Tools und Funktionen, die die Verwendung von Matrizen und Operationen wie Multiplikation, Inversion usw. ermöglichen. Die Matrixmultiplikation in Pandas kann ein wenig verwirrend sein (und zu Fehlern führen), wenn Sie die zugrunde liegende Mathematik nicht kennen, die ihr zugrunde liegt.

In diesem Artikel werden wir diskutieren, wie man eine Matrixmultiplikation in Pandas durchführt und wie man Fehler vermeidet.

Multiplikation von Matrizen

Um die Multiplikation von Matrizen auszuführen, müssen wir sicherstellen, dass die beiden beteiligten Matrizen für die Operation ausgerichtet (oder geeignet) sind. Eine Matrix hat Zeilen und Spalten; Wenn wir 2 Matrizen multiplizieren wollen, ist die Anzahl der Spalten und Zeilen wichtig, damit dies möglich ist.

Wir beschreiben Matrizen mit ihren Zeilen und Spalten, z. B. hat eine 2 x 4-Matrix 2 Zeilen und 4 Spalten. Mit all diesen Informationen muss die Anzahl der Spalten der ersten Matrix (linke Matrix) gleich der Anzahl der Zeilen der 2. Matrix (rechte Matrix) sein, damit eine Matrixmultiplikation möglich ist.

Daher kann eine 2 x 3-Matrix mit 3 x 2 multipliziert werden, da die erste Matrix 3 Spalten und die zweite Matrix 3 Zeilen enthält. Außerdem kann eine 3 x 4-Matrix mit einer 4 x 23-Matrix multipliziert werden, da die Anzahl der Spalten in der 1. Matrix gleich der Anzahl der Zeilen in der 2. Matrix ist – 4.

Wenn wir jedoch ändern (oder umkehren), welche Matrix zuerst ist, ist die Matrixmultiplikation möglicherweise nicht möglich. Unter Verwendung der gleichen Beispiele wie zuvor kann die 3 x 2-Matrix mit der 2 x 3-Matrix multipliziert werden, da die Anzahl der Spalten der ersten Spalte gleich der Anzahl der Zeilen der zweiten Matrix ist.

Für das zweite Beispiel kann die 4 x 23-Matrix mit der 3 x 4-Matrix multipliziert werden, da die Anzahl der Spalten – 23 – der 1. Matrix ungleich der Anzahl der Zeilen – 3 – ist. der zweiten Matrix.

Überprüfen Sie, ob DataFrames in Pandas ausgerichtet sind

Wir können überprüfen, ob die Datenrahmen, die wir haben, Matrixoperationen ausführen können, indem wir überprüfen, ob die Form der Datenrahmen (Matrix) der angegebenen Regel für die Matrixmultiplikation entspricht. Um dies zu erreichen, greifen wir auf die Eigenschaft Form (ein Tupel mit zwei Elementen) des Datenrahmens zu und vergleichen den Spaltenwert (den zweiten Wert innerhalb des Tupels) des ersten Datenrahmens (Matrix) mit dem Zeilenwert (dem ersten Wert). innerhalb des Tupels) für den zweiten Datenrahmen (Matrix).

Lassen Sie uns zwei Datenrahmen erstellen, df und other, überprüfen Sie ihre Form und vergleichen Sie sie.

Code:

import pandas as pd
import numpy as np

df = pd.DataFrame([[23, 33], [33, 41]])
other = pd.DataFrame([[31, 0], [20, 1]])

print(df)
print(other)

Ausgang:

    0   1
0  23  33
1  33  41

    0  1
0  31  0
1  20  1

Lassen Sie uns nun die Form überprüfen und vergleichen, um zu sehen, ob die Datenrahmen Matrixmultiplikationsberechnungen durchführen können.

print(df.shape)
print(other.shape)

if df.shape[1] == other.shape[0]:
    print("DataFrames (matrices) align and therefore matrix multiplication possible.")
else:
    print(
        "DataFrames (matrices) don't align and therefore matrix multiplication not possible."
    )

Ausgang:

(2, 2)
(2, 2)
DataFrames (matrices) align and therefore matrix multiplication is possible.

Wie Sie sehen können, richten sich die Datenrahmen aus, da die Anzahl der Spalten in df gleich der Anzahl der Zeilen in other ist. Jetzt können wir die entworfene Funktion für die Matrixmultiplikation verwenden - dot().

Verwenden Sie die Punkt-Funktion, um die Matrixmultiplikation in Pandas durchzuführen

Pandas und Numpy haben eine dot()-Funktion, die wir für die Matrixmultiplikation verwenden können. Wir werden beide verwenden, um zu zeigen, wie man eine Matrixmultiplikation durchführt.

Anhand der im vorherigen Abschnitt erstellten Datenrahmen können wir veranschaulichen, wie die Funktion dot() verwendet wird. Fangen wir mit der Matrixmultiplikation auf df und other an.

Verwenden der Pandas-Funktion dot(), wobei die Funktion auf die erste Matrix – df – und die zweite Matrix – other – angewendet wird, wie unten als Argument an die Funktion dot() übergeben.

print(df.dot(other))

Ausgang:

      0   1
0  1373  33
1  1843  41

Wenn wir die numpy-Funktion dot() verwenden sollen, übergeben wir zwei Argumente – die beiden Matrizen – aber die erste Matrix wird zuerst übergeben.

print(np.dot(df, other))

Ausgang:

[[1373   33]
 [1843   41]]

Lassen Sie uns mit zwei weiteren Datenrahmen arbeiten – df1 und df2 – die zufällig mit der numpy-Bibliothek erstellt wurden, und führen Sie die Matrixmultiplikation mit den beiden dot()-Funktionen durch.

Code:

import pandas as pd
import numpy as np

df1 = pd.DataFrame(np.random.randn(3, 3), columns=list("ABC"), index=[1, 2, 3])
df2 = pd.DataFrame(np.random.randn(3, 3), columns=list("ABC"), index=[1, 2, 3])

print(np.dot(df1, df2))
print(df1.dot(df2))

Ausgang:

[[ 1.28220783 -1.36789201  0.16335459]
 [-0.8039172   0.87851003 -0.32282877]
 [ 1.09767978 -0.71870817 -0.23485835]]

-----
...
ValueError: matrices are not aligned

Die erste dot()-Funktion mit der numpy-Bibliothek funktionierte fehlerfrei, aber die zweite dot()-Funktion mit der pandas-Bibliothek lieferte keine ValueError: matrices are not align-Fehlermeldung.

Der Grund für diese Fehlermeldung ist, dass bei der Ausführung der pandas-Funktion dot() df1 und df2 so neu indiziert werden, dass die Spaltenreihenfolge von df1 und die Zeilenreihenfolge (Index) von df2 stimmt nicht überein, was zu einer Fehlausrichtung der Matrizen führt. Die Numpy-Funktion dot() macht nicht viel und hat keine Fehler.

Um diesen Fehler zu beheben, müssen wir die beiden Datenrahmen ausrichten, indem wir den Index des zweiten Datenrahmens – df2 – den Spalten des ersten Datenrahmens – df1 – zuweisen.

Code:

import pandas as pd
import numpy as np

df1 = pd.DataFrame(np.random.randn(3, 3), columns=list("ABC"), index=[1, 2, 3])
df2 = pd.DataFrame(np.random.randn(3, 3), columns=list("ABC"), index=[1, 2, 3])

print(np.dot(df1, df2))

df2.index = df1.columns
print(df1.dot(df2))

Ausgang:

[[ 1.28220783 -1.36789201  0.16335459]
 [-0.8039172   0.87851003 -0.32282877]
 [ 1.09767978 -0.71870817 -0.23485835]]

          A         B         C
1  1.282208 -1.367892  0.163355
2 -0.803917  0.878510 -0.322829
3  1.097680 -0.718708 -0.234858

Jetzt sind wir fehlerfrei und beide Matrixmultiplikationsberechnungen funktionieren unabhängig davon.

Olorunfemi Akinlua avatar Olorunfemi Akinlua avatar

Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.

LinkedIn