Pandas: von Zero bis Hero

Dec 11 2022
Ein vollständiger Artikel, den Sie lesen können, während Sie tagsüber Ihr Lieblingsfernsehen ansehen, aber gut genug, um Ihnen alles beizubringen, was Sie wissen müssen, um die Arbeit tatsächlich zu erledigen. Erste Schritte Pandas ist eine Datenanalyse- und -verarbeitungsbibliothek in Python.

Ein vollständiger Artikel, den Sie lesen können, während Sie tagsüber Ihr Lieblingsfernsehen ansehen, aber gut genug, um Ihnen alles beizubringen, was Sie wissen müssen, um die Arbeit tatsächlich zu erledigen.

Einstieg

Pandas ist eine Datenanalyse- und Verarbeitungsbibliothek in Python. Pandas wird häufig für Data Science und maschinelles Lernen verwendet. Es wurde auf einem anderen Python-Paket namens NumPy entwickelt, das für wissenschaftliche Berechnungen verwendet wird. Wenn Sie nicht viel über NumPy wissen, sollten Sie es vielleicht schnell ausprobieren, indem Sie meinen 5-Minuten-Artikel lesen, bevor Sie mit Pandas fortfahren. Dies ist kein Muss, aber ich kann es sehr empfehlen.

Stellen Sie zunächst sicher, dass Sie Python, NumPy und Pandas in Ihrem System haben. Wie Sie es bekommen, hängt von Ihrem System und der IDE Ihrer Wahl ab, aber ich empfehle Anaconda. Mit der grundlegenden Anaconda-Installation können Sie einfach zum Terminal gehen und „conda install numpy“ und dann „conda install pandas“ und voila ausführen!

Lassen Sie uns nun eine example.py -Datei erstellen, um mit der Arbeit zu beginnen.

Hinweis: Wenn wir anstelle einer einzelnen Beispieldatei ein Projekt erstellen würden, mit dem wir arbeiten könnten, müssten wir einfach ein Verzeichnis und eine __init__ .py -Datei darin erstellen.

Sie sollten die folgenden Zeilen am Anfang der Datei hinzufügen, um mit Pandas innerhalb der Datei arbeiten zu können.

importiere numpy als np

pandas als pd importieren

Hinweis: Wir importieren NumPy im Allgemeinen als np und Pandas als pd, damit wir nicht jedes Mal numpy & pandas eingeben müssen, wenn wir eine Funktion aus den Bibliotheken aufrufen. Denken Sie daran, dass np und pd zwar geändert werden können, aber die allgemeine Konvention sind.

Danach können Sie den Code in der Beispieldatei ausführen, indem Sie einfach zum Terminal gehen und den Befehl ausführen:

python-Beispiel.py

Serie

Ähnlich wie jede Programmiersprache Arrays hat, ähnlich wie NumPy Matrizen hat, erhalten wir Serien in Pandas. Der Hauptunterschied zwischen Serien und gewöhnlichen Matrizen/Arrays besteht darin, dass Elemente innerhalb von Serien eine Indexnummer oder Schlüssel haben können , um auf diesen Wert zuzugreifen. Stellen Sie es sich als eine Liste von Schlüssel-Wert-Paaren wie JSON-Daten vor.

Fun Fact: Pandas wird oft als „Excel for Data Science“ bezeichnet, da es Werte – Schlüsselpaare – speichert, sie visuell darstellt und Berechnungen auf ähnliche Weise wie MS Excel durchführt.

Sie können eine Pandas-Serie aus einem Python-Wörterbuch erstellen:

meinWörterbuch = { „John“ : 35, „Jane“ : 40}

pd.Series(myDictionary) // gibt John 35, Jane 40 zurück

Wenn Sie anstelle eines Wörterbuchs ein Array hinzufügen würden, hätten die Elemente innerhalb der Reihe ganze Zahlen als Schlüssel:

meinArray = [ 35, 40]

pd.Series(myArray) // gibt 0 35, 1 40 zurück

Sie können zwei Arrays zusammenfügen und daraus eine Reihe erstellen:

meinArray1 = [35, 40]

myArray2 = [ „John“, „Jane“]

pd.Series(data= myArray1, index=myArray2) // gibt John 35, Jane 40 zurück

Wenn es zwei verschiedene Serien mit denselben Schlüsseln gibt, können Sie mathematische Operationen an ihnen ausführen wie:

series1 = pd.Series({ „John“ : 35, „Jane“ : 40})

series2 =pd.Series({ „John“ : 100, „Jane“ : 50})

seriesSum = series1 + series2 // gibt John 135, Jane 90 zurück

Hinweis: Wenn Sie eine mathematische Operation für Reihen mit unterschiedlichen Schlüsseln durchführen, haben die übereinstimmenden Schlüssel das Ergebnis der Operation als Wert, aber die nicht bearbeiteten Schlüssel haben einen Wert von NaN, da es für diese Schlüssel kein Ergebnis gibt.

Datenrahmen

Datenrahmen können als Serie betrachtet werden, außer für Matrizen. Grundsätzlich wird eine Matrix, bei der die Indizes Schlüssel sind und das Ganze ein Schlüssel-Wert-Paar ist, als Datenrahmen bezeichnet.

Sie können einen Datenrahmen aus jedem Array oder jeder Matrix wie folgt erstellen:

meineMatrix = [ [10, 20, 30], [ 100, 200, 300] ]

dataFrame = pd.DataFrame(meineMatrix)

Sie können Spalten- und Zeilenschlüssel wie folgt zuweisen:

meineMatrix = [ [ 1, 2, 3],[10, 20, 30], [ 100, 200, 300] ]

Zeilen = [ „John“, „Jane“, „Sarah“ ]

Spalten = [ „Tennis“, „Basketball“, „Tischtennis“]

dataFrame = pd.DataFrame (myMatrix, Index = Zeilen, Spalten = Spalten)

Sie können eine bestimmte Spalte aus dem Datenrahmen aufrufen als:

dataFrame[ „Tennis“ ]

Wenn Sie jedoch wie oben gezeigt eine Zeile mit dem Schlüssel aufrufen würden, würde dies einen Fehler werfen. Sie können eine Zeile mit der Taste aufrufen als:

dataFrame.loc[ “John” ]

Die Tatsache, dass es Schlüssel zum Aufrufen von Spalten und Zeilen gibt, bedeutet nicht, dass es keine Indizes gibt. Genau wie bei Matrizen existieren die Indizes weiterhin. Sie können die erste Zeile zum Beispiel so nennen:

dataFrame.iloc[1] // gibt die Zeile Jane mit den Werten 2, 20, 200 zurück

Sie können dem Datenrahmen eine neue Spalte wie folgt hinzufügen:

dataFrame[ „Fußball“ ] = [ 1000, 2000, 3000]

Umgekehrt können Sie eine Spalte oder eine Zeile aus dem Datenrahmen wie folgt löschen:

dataFrame.drop( „Football“, axis=1, inPlace=True) // Um ​​eine Spalte zu löschen, müssen Sie die Achse auf 1 setzen

dataFrame.drop( „John“, axis=0, inPlace=True) // Um ​​eine Zeile zu löschen, müssen Sie die Achse auf 0 setzen

Hinweis: Pandas möchte nicht, dass Sie versehentlich eine ganze Spalte oder Zeile ändern. Vielleicht versuchen Sie, einen anderen Datenrahmen zu erstellen und den alten Datenrahmen mit einer fehlenden Spalte festzulegen, anstatt den alten tatsächlich zu ändern? Um sicherzustellen, dass Sie tatsächlich den Datenrahmen selbst ändern, fügen wir den Parameter inPlace=True in die Funktionen ein.

Sie können einen Zellenwert wie folgt aufrufen:

dataFrame.loc[ „John“, „Tennis“]

Sie können innerhalb der Datenrahmen wie folgt eliminieren:

dataFrame[ dataFrame["Tennis"] > 5]

// löscht die Zeilen, in denen der Tennis-Spaltenwert kleiner als 5 ist, daher wird die Zeile John gelöscht

Um die Indizes innerhalb eines Datenrahmens zu ändern, müssen Sie zuerst das neue Index-Array als Spalte zum alten Datenrahmen hinzufügen. Dann können Sie es anhand des Spaltennamens erfassen und seine Werte als neue Indizes wie folgt zuweisen:

dataFrame.set_indexes(“Neue Indexspalte”, inPlace=True)

Ein Datenrahmen mit mehreren Indizes sieht in Excel folgendermaßen aus:

Wo es zwei Indizes für Zeilen gibt, Obst & Gemüse UND den Produktnamen. Über Pandas können wir auch solche Multi-Indizes erstellen. Dazu müssen Sie:

  • Definieren Sie zwei Listen mit äußeren und inneren Indizes, und kombinieren Sie diese beiden dann mithilfe der Methoden uzing list und zip zu einem Tupel.
  • Verwenden Sie dann die Methode MultiIndex.from_tuples(), um das Tupel in einen Mehrfachindex umzuwandeln.
  • Erstellen Sie dann eine Liste von Spalten.
  • Erstellen Sie danach eine Liste der Daten als Matrix und wandeln Sie sie mit der Methode np.array() tatsächlich in eine Matrix um.
  • Verwenden Sie schließlich die Funktion DataFrame() von Pandas, um den Datenrahmen mit Multi-Index zu erstellen.

outerIndexes = [ „Gemüse“, „Gemüse“, „Frutis“, „Früchte“]

innerIndexes = [ „Tomaten“, „Gurken“, „Orangen“, „Heidelbeeren“]

CombinedIndexes = list(zip(outerIndexes, innerIndexes))

CombinedIndexes = pd.MultiIndex.from_tuples(combinedIndexes)

listAmountPrice =[ [ 2 USD, 5 Pfund], [ 1 USD, 3 Pfund], [ 2 USD, 3 Pfund], [ 3 USD, 2 Pfund] ]

numpySeriesAmountPrice = np.array( listAmountPrice )

myColumns = [ „Preis“, „Betrag“ ]

multiIndexDataFrame = pd.DataFrame( numpySeriesAmountPrice, Index = CombinedIndexes, Columns = MyColumns)

Und dann können Sie die Menge und den Preis von Blaubeeren wie folgt nennen:

multiIndexDataFrame.loc[ „Früchte“ ].loc[ „Heidelbeeren“ ]

Sie können den Multi-Index-Spalten auch einige Namen geben, wie folgt:

multiIndexDataFrame.index.names = [ „Gang“, „Produktname“ ]

Operationen

  • So geben Sie einen Datenrahmen aus dem ursprünglichen Datenrahmen zurück, bei dem die Zeilen, die NaN-Werte enthalten, gelöscht wurden:
  • So geben Sie einen Datenrahmen aus dem ursprünglichen Datenrahmen zurück, bei dem die Spalten, die NaN-Werte enthalten, gelöscht wurden:
  • So geben Sie einen Datenrahmen aus dem ursprünglichen Datenrahmen zurück, bei dem die Zeilen gelöscht wurden, die mehr als zwei NaN-Werte enthalten:
  • Um einen Datenrahmen aus dem ursprünglichen Datenrahmen mit den Zellen zurückzugeben, die einen NaN-Wert enthalten, der auf einen bestimmten Wert geändert wurde, sagen wir, die Ganzzahl 20:
  • Um Operationen auszuführen und Daten zu einem Datenrahmen basierend auf einer Spalte zu sammeln, sollten Sie den Datenrahmen in Bezug auf diese Spalte mit groupby gruppieren. Dann können Sie Operationen ausführen, um die darin enthaltenen Daten zu zählen, den Mittelwert der Werte zu erhalten usw.

group.mean() // erhält den Mittelwert der Gehälter in der Tabelle

group.count() // berechnet, wie viele Mitarbeiter pro Gehalt ein bestimmtes Gehalt bekommen

group.describe() // liefert einige statistische Analyseergebnisse wie den Mittelwert, die Höchst- und Mindestwerte usw. für diesen Datenrahmen relativ zur gruppierten Spalte „Gehalt“.

  • Wenn Sie zwei oder mehr Datenrahmen mit denselben Spalten haben, können Sie sie wie folgt zusammenfassen (untereinander):
  • Wenn Sie zwei oder mehr Datenrahmen mit denselben Zeilen haben, können Sie sie wie folgt zusammenfassen (untereinander):
  • Wenn Sie jedoch zwei oder mehr Datenrahmen mit unterschiedlichen Spalten erhalten möchten, verwenden Sie die Zusammenführungsmethode wie unten beschrieben. Denken Sie jedoch daran, dass alle Datenrahmen, die Sie zusammenführen, mindestens eine Spalte gemeinsam haben müssen, um dies tun zu können.
  • Sie können nur die eindeutigen Werte innerhalb einer Spalte in einer Datenbank wie folgt bringen:
  • Sie können berechnen, wie viele eindeutige Werte in einer Spalte in einem Datenrahmen vorhanden sind:
  • Mit der Funktion .apply() können Sie eine Funktion definieren und auf jeden Wert innerhalb eines Datenrahmens anwenden. Zur näheren Erläuterung an einem Beispiel:

Rückgabepreis * 1,33 // Funktion, die %33 Steuer zum ursprünglichen Preis hinzufügt

priceDataFrame[ „Price“ ].apply( priceWithTax ) // gibt eine Reihe mit den aktualisierten Preisen zurück

Excel mit Pandas

Auch wenn wir oben mit Datenrahmen und Serien gearbeitet haben, werden Ihnen reale Daten höchstwahrscheinlich in Form einer Excel-Datei übergeben.

Um mit einer Excel-Datei arbeiten zu können, stellen Sie sicher, dass Sie sie in genau demselben Verzeichnis speichern, in dem sich Ihre Python-Datei befindet (die Python-Datei, in der Sie Ihre Pandas-Funktionen und -Operationen ausführen). Dann können Sie Ihre Excel-Datei importieren als:

myDataFrame = pd.read_excel( „myExcelFile.xlsx“ )

Die Excel-Dateien werden standardmäßig als Typ DataFrame importiert, also kann es losgehen!

Fazit

Es gibt viele andere vordefinierte Funktionen und benutzerfreundliche Strukturen in Pandas, die Sie je nach Aufgabe benötigen, aber das sollte ausreichen, um Ihnen bei der Erledigung der Arbeit zu helfen. Wenn Sie eine ganze Karriere in diesem Bereich anstreben oder daran interessiert sind, weiter zu lernen, können Sie mit fortgeschrittenen Kursen oder Forschungsarbeiten fortfahren, wenn Sie bei der Arbeit an einer Aufgabe auf einen Bedarf für etwas anderes (etwas Klügeres!) stoßen. Pandas hat für fast alles eine Lösung!