Für einen Datenexperten ist Pandas ein ideales Paket für alle Datenmanipulationsaktivitäten, da es intuitiv und einfach zu verwenden ist. Aus diesem Grund ist Pandas in vielen Information Science-Schulungen in den Lehrplan aufgenommen.
Pandas basieren auf dem NumPy-Paket, insbesondere dem NumPy-Array. Viele NumPy-Funktionen und -Methoden funktionieren weiterhin intestine mit ihnen, sodass wir NumPy verwenden können, um unsere Datenanalyse mit Pandas effektiv zu verbessern.
In diesem Artikel werden mehrere Beispiele untersucht, wie NumPy unsere Pandas-Datenanalyseerfahrung verbessern kann.
Lassen Sie uns darauf eingehen.
Verbesserung der Pandas-Datenanalyse mit NumPy
Bevor wir mit dem Tutorial fortfahren, sollten wir alle erforderlichen Pakete installiert haben. Wenn Sie dies noch nicht getan haben, können Sie Pandas und NumPy mit dem folgenden Code installieren.
Wir können damit beginnen, zu erklären, wie Pandas und NumPy miteinander verbunden sind. Wie oben erwähnt, basiert Pandas auf dem NumPy-Paket. Sehen wir uns an, wie sie sich ergänzen könnten, um unsere Datenanalyse zu verbessern.
Versuchen wir zunächst, mit den entsprechenden Paketen ein NumPy-Array und einen Pandas DataFrame zu erstellen.
import numpy as np
import pandas as pd
np_array= np.array(((1, 2, 3), (4, 5, 6), (7, 8, 9)))
pandas_df = pd.DataFrame(np_array, columns=('A', 'B', 'C'))
print(np_array)
print(pandas_df)
Output>>
((1 2 3)
(4 5 6)
(7 8 9))
A B C
0 1 2 3
1 4 5 6
2 7 8 9
Wie Sie im obigen Code sehen können, können wir einen Pandas DataFrame mit einem NumPy-Array mit derselben Dimensionsstruktur erstellen.
Als Nächstes können wir NumPy in den Pandas-Datenverarbeitungs- und -bereinigungsschritten verwenden. Beispielsweise können wir das NumPy NaN-Objekt als Platzhalter für fehlende Daten verwenden.
df = pd.DataFrame({
'A': (1, 2, np.nan, 4, 5),
'B': (5, np.nan, np.nan, 3, 2),
'C': (1, 2, 3, np.nan, 5)
})
print(df)
Output>>
A B C
0 1.0 5.0 1.0
1 2.0 NaN 2.0
2 NaN NaN 3.0
3 4.0 3.0 NaN
4 5.0 2.0 5.0
Wie Sie im obigen Ergebnis sehen können, wird das NumPy NaN-Objekt zu einem Synonym für alle fehlenden Daten in Pandas.
Dieser Code kann die Anzahl der NaN-Objekte in jeder Pandas DataFrame-Spalte untersuchen.
Output>>
A 1
B 2
C 1
dtype: int64
Der Datensammler kann die fehlenden Datenwerte in der DataFrame-Spalte als Zeichenfolgen darstellen. In diesem Fall können wir versuchen, diesen Zeichenfolgenwert durch ein NumPy NaN-Objekt zu ersetzen.
df('A') = df('A').substitute('lacking information'', np.nan)
NumPy kann auch zur Ausreißererkennung verwendet werden. Sehen wir uns an, wie wir das machen können.
df = pd.DataFrame({
'A': np.random.regular(0, 1, 1000),
'B': np.random.regular(0, 1, 1000)
})
df.loc(10, 'A') = 100
df.loc(25, 'B') = -100
def detect_outliers(information, threshold=3):
z_scores = np.abs((information - information.imply()) / information.std())
return z_scores > threshold
outliers = detect_outliers(df)
print(df(outliers.any(axis =1)))
Output>>
A B
10 100.000000 0.355967
25 0.239933 -100.000000
Im obigen Code generieren wir Zufallszahlen mit NumPy und erstellen dann eine Funktion, die Ausreißer anhand der Z-Rating- und Sigma-Regeln erkennt. Das Ergebnis ist der DataFrame, der den Ausreißer enthält.
Wir können statistische Analysen mit Pandas durchführen. NumPy könnte dabei helfen, eine effizientere Analyse während des Aggregationsprozesses zu ermöglichen. Hier ist beispielsweise eine statistische Aggregation mit Pandas und NumPy.
df = pd.DataFrame({
'Class': (np.random.alternative(('A', 'B')) for i in vary(100)),
'Values': np.random.rand(100)
})
print(df.groupby('Class')('Values').agg((np.imply, np.std, np.min, np.max)))
Output>>
imply std amin amax
Class
A 0.524568 0.288471 0.025635 0.999284
B 0.525937 0.300526 0.019443 0.999090
Mit NumPy können wir die statistische Analysefunktion auf den Pandas DataFrame anwenden und aggregierte Statistiken ähnlich der obigen Ausgabe erhalten.
Zuletzt sprechen wir über vektorisierte Operationen mit Pandas und NumPy. Vektorisierte Operationen sind eine Methode, Operationen an den Daten gleichzeitig auszuführen, anstatt sie einzeln zu wiederholen. Das Ergebnis wäre schneller und speicheroptimiert.
Beispielsweise können wir mit NumPy elementweise Additionsoperationen zwischen DataFrame-Spalten durchführen.
information = {'A': (15,20,25,30,35), 'B': (10, 20, 30, 40, 50)}
df = pd.DataFrame(information)
df('C') = np.add(df('A'), df('B'))
print(df)
Output>>
A B C
0 15 10 25
1 20 20 40
2 25 30 55
3 30 40 70
4 35 50 85
Wir können die DataFrame-Spalte auch über die mathematische Funktion NumPy transformieren.
df('B_exp') = np.exp(df('B'))
print(df)
Output>>
A B C B_exp
0 15 10 25 2.202647e+04
1 20 20 40 4.851652e+08
2 25 30 55 1.068647e+13
3 30 40 70 2.353853e+17
4 35 50 85 5.184706e+21
Es besteht auch die Möglichkeit des bedingten Ersetzens mit NumPy für Pandas DataFrame.
df('A_replaced') = np.the place(df('A') > 20, df('B') * 2, df('B') / 2)
print(df)
Output>>
A B C B_exp A_replaced
0 15 10 25 2.202647e+04 5.0
1 20 20 40 4.851652e+08 10.0
2 25 30 55 1.068647e+13 60.0
3 30 40 70 2.353853e+17 80.0
4 35 50 85 5.184706e+21 100.0
Dies sind alle Beispiele, die wir untersucht haben. Diese Funktionen von NumPy würden zweifellos dazu beitragen, Ihren Datenanalyseprozess zu verbessern.
Abschluss
In diesem Artikel wird erläutert, wie NumPy dazu beitragen kann, die Datenanalyse mithilfe von Pandas effizienter zu gestalten. Wir haben versucht, Datenvorverarbeitung, Datenbereinigung, statistische Analyse und vektorisierte Operationen mit Pandas und NumPy durchzuführen.
Ich hoffe, es hilft!
Cornellius Yudha Wijaya ist Information Science Assistant Supervisor und Datenautor. Während seiner Vollzeitbeschäftigung bei Allianz Indonesien teilt er gerne Python- und Datentipps über soziale Medien und in den Medien. Cornellius schreibt über eine Vielzahl von KI- und maschinellen Lernthemen.