Ein gründliches Verständnis von Python-Listen und numpy array öffnet die Tür zu vielen nützlichen Datenaufgaben. Dieser Leitfaden führt Sie in beide Konzepte ein.
Listen und Arrays sind zwei der am häufigsten verwendeten Datenstrukturen in Python . Eine Liste in Python ist einfach eine Sammlung von Objekten. Diese Objekte können ganze Zahlen, Gleitkommazahlen , Zeichenfolgen, Boolesche Werte oder sogar andere Datenstrukturen wie Wörterbücher sein. Ein Array, insbesondere ein Python-NumPy Array, ähnelt einer Python-Liste. Der Hauptunterschied besteht darin, dass NumPy Arrays viel schneller sind und strenge Anforderungen an die Homogenität der Objekte stellen. Beispielsweise kann ein NumPy Array aus Zeichenfolgen nur Zeichenfolgen und keine anderen Datentypen enthalten, aber eine Python-Liste kann eine Mischung aus Zeichenfolgen, Zahlen, Booleschen Werten und anderen Objekten enthalten. Da Operationen wie die Berechnung des Mittelwerts oder der Summe auf NumPy Arrays viel schneller sind, kommen diese Datenstrukturen häufiger in Kontexten vor, in denen die Geschwindigkeit im Vordergrund steht.
Sowohl Listen als auch NumPy Arrays verfügen über eine große Auswahl integrierter Methoden zum Ausführen einer Vielzahl von Aufgaben, darunter Sortieren, Min-/Max-Finden, Abschneiden, Anhängen, Verketten und vieles mehr.
Listen können auch andere Datenstrukturen wie Wörterbücher definieren, die sowohl in der Softwareentwicklung als auch in der Datenwissenschaft Anwendung finden . Listen können beispielsweise Wörterbücher generieren, die in JSON-Dateien konvertiert werden können . Softwareentwickler verwenden häufig diese Dateitypen.
Wörterbücher können auch in Datenrahmen umgewandelt werden , die von Datenwissenschaftlern häufig verwendet werden. Darüber hinaus können Sie mit Python-Listen ganz einfach eine Vielzahl von Datenrahmen erstellen, die für viele Datenaufgaben nützlich sind. Dazu gehört das Erweitern vorhandener Datentabellen um neue Felder, das Berechnen neuer Datenfelder mithilfe erstellter Listen, das Durchführen explorativer Datenanalysen für Daten, auf die über eine API zugegriffen wird, und vieles mehr. Ein gründliches Verständnis von Python-Listen und NumPy Arrays öffnet die Tür zu vielen nützlichen Datenaufgaben.
Listen und Arrays werden häufig für Aufgaben wie das Generieren synthetischer Daten verwendet . In vielen Fällen haben Data-Science-Teams nur eingeschränkten Zugriff auf echte Daten. Beim Erstellen von Software, die auf Daten-ETL und maschinellem Lernen basiert , sind synthetische Daten oft die einzige Möglichkeit, einen Anwendungsprototyp zu erstellen. Mit Python können Sie synthetische Listen wie Namen, Bundesstaaten, Körpergrößen, Berufe und andere kategorische Werte generieren, die als Zeichenfolge dargestellt werden können. Darüber hinaus können auch numerische Werte wie Bevölkerungszahlen, Einkommen und Transaktionsbeträge generiert werden. Auch einfaches Feature Engineering ist mit der Listenableitung in Python unkompliziert. Alles in allem bieten sowohl Listen als auch Arrays viele nützliche Methoden zum Bearbeiten und Generieren von Daten.
Hier werden wir einige der gängigsten Methoden und Datenstrukturen untersuchen, die Listen und Arrays verwenden. Dies sollte dem unerfahrenen Softwareentwickler oder Datenwissenschaftler eine solide Grundlage für die Verwendung von Listen zur Datenmanipulation in Python bieten.
So erstellen Sie eine Liste in Python
Das Erstellen einer Liste in Python ist sehr einfach. Sie können eine Liste aus Zeichenfolgen, Gleitkommawerten, Ganzzahlen und Booleschen Werten erstellen. Eine Python-Liste aus Zeichenfolgen ist eine Liste aus Werten, die einer Folge von Unicode-Zeichen entsprechen. Eine Liste aus Gleitkommawerten enthält Werte, die reelle Zahlen darstellen. Eine Liste aus Ganzzahlen enthält Ganzzahlenwerte, die positiv, negativ oder null sein können. Schließlich ist eine Boolesche Liste eine Liste aus Wahr/Falsch-Werten. Sie können auch eine Liste aus gemischten Typen erstellen.
Beginnen wir mit der Erstellung einer Stringliste mit den Unternehmen Facebook, Amazon, Apple, Netflix und Google:
Lassen Sie uns auch eine Liste mit Ganzzahlen erstellen, die die Anzahl der Mitarbeiter in jedem dieser Unternehmen im Jahr 2021 darstellen. Die Reihenfolge in unserer Ganzzahlliste entspricht der Reihenfolge in unserer Firmennamenliste. Beispielsweise ist in unserer Firmennamenliste „Facebook“ der Wert des ersten Elements und in unserer Mitarbeiterliste ist 58.604 die Anzahl der Mitarbeiter bei Facebook.
Als Nächstes erstellen wir eine Liste von Floats, die dem Umsatz in Milliarden US-Dollar für jedes Unternehmen im Jahr 2021 entsprechen:
Zum Schluss erstellen wir eine Boolesche Liste. Wir verwenden etwas, das sich Listenverständnis nennt , um unsere Liste mit Booleschen Werten zu erstellen. Listenverständnis ist eine einfache und nützliche Methode, um neue Listen basierend auf den Werten in anderen Listen zu erstellen. Die Struktur des Listenverständnisses sieht im Allgemeinen wie folgt aus:
Ein Ausdruck kann einfach das Element im Iterable selbst oder eine Transformation des Elements sein, wie z. B. die Überprüfung des Wahrheitswerts einer Bedingung. So erstellen wir die Liste der Booleschen Werte. Diese Liste basiert auf den Werten in den Mitarbeiterlisten unserer Technologieunternehmen. Sie hat den Wert „true“, wenn es mehr als 60.000 Mitarbeiter gibt, und andernfalls „false“:
Dadurch wird die folgende Liste erstellt:
Es ist auch möglich, eine Liste gemischter Typen zu erstellen. Angenommen, wir haben den Firmennamen, den Umsatz, die Anzahl der Mitarbeiter und boolesche Werte basierend auf der Anzahl der Mitarbeiter. Betrachten wir diese Liste gemischter Typenwerte für Microsoft:
Wir können die Append-Methode verwenden, um jede Liste zu aktualisieren. Wenn wir die aktualisierten Listen ausdrucken, sehen wir, dass die neuen Werte hinzugefügt wurden:
Auch Python-Listen sind mit einer Vielzahl nützlicher Methoden ausgestattet. So können wir beispielsweise die Liste nach Unternehmen (alphabetisch) und Mitarbeiterzahl (aufsteigend) sortieren:
Dadurch werden unsere vorhandenen Listen wie folgt geändert:
Beachten Sie, dass dadurch die Reihenfolge dieser Listen geändert wird, sodass sie nicht mehr übereinstimmen. Eine sicherere Wahl ist die Verwendung der integrierten Python-Methode sorted , die eine sortierte Liste zurückgibt, die wir in einer neuen Variablen speichern können, anstatt die alte Liste zu ändern.
So erstellen Sie mit NumPy ein Array in Python
NumPy ist ein Python-Paket, das zum Generieren von Arrays nützlich ist, die sich in vielerlei Hinsicht von Python-Listen unterscheiden. Der größte Unterschied besteht darin, dass NumPy Array weniger Ressourcen verbrauchen als Python-Listen, was beim Speichern großer Datenmengen wichtig wird. Wenn Sie mit Tausenden von Elementen arbeiten, reichen Python-Listen für die meisten Zwecke aus. Wenn die Anzahl der Elemente in einer Liste jedoch Millionen oder Milliarden erreicht, sind NumPy Array vorzuziehen.
NumPy ist auch nützlich, um synthetische Daten zu generieren. Nehmen wir beispielsweise an, in unserem Beispiel mit den Daten eines Technologieunternehmens fehlen uns Werte für den Nettogewinn, wobei der Nettogewinn der Gesamtumsatz abzüglich der Kosten für Waren, Steuern und Zinsen ist. Wir möchten diese Werte irgendwie imputieren. Außerdem möchten wir diese imputierten Werte aus einer Normalverteilung entnehmen . Lassen Sie uns ein NumPy Array erstellen, das die Liste der Nettogewinne für jedes Unternehmen enthält.
Um fortzufahren, importieren wir das NumPy-Paket:
Um unsere Stichprobe zu erstellen, benötigen wir einen Wert für den durchschnittlichen Nettogewinn und die Standardabweichung des Nettogewinns. Gehen wir einfach davon aus, dass der durchschnittliche Nettogewinn aller Unternehmen 80 Milliarden US-Dollar beträgt, mit einer Standardabweichung von 40 Milliarden US-Dollar. Wir nennen die Variablen für Mittelwert und Standardabweichung jeweils „mu“ und „sigma“:
Wir müssen auch die Anzahl der Werte angeben, die wir generieren möchten. Wir können die Länge unserer Tech-Unternehmenslisten einfach in einer neuen Variable speichern, die wir n_values nennen:
Um sicherzustellen, dass unsere Ergebnisse reproduzierbar sind, sollten wir außerdem einen zufälligen Startwert angeben:
Um unser numpy Array zu generieren, verwenden wir die Normalmethode im NumPy-Randommodul. Wir übergeben die Parameterwerte für Mittelwert (mu), Standardabweichung (sigma) und Anzahl der Werte (n_values) an die Normalmethode und speichern das Ergebnis in einer Variablen namens net_income:
Hier haben wir synthetische Werte für die Nettoeinkommen von Facebook (77 Milliarden Dollar), Apple (75 Milliarden Dollar), Amazon (121 Milliarden Dollar), Netflix (29 Milliarden Dollar), Google (109 Milliarden Dollar) und Microsoft (11 Milliarden Dollar) ermittelt. Da diese Zahlen synthetisch sind und wir erfundene Werte für aggregierte Statistiken verwenden, um Werte für alle Unternehmen zu ermitteln, sind sie nicht sehr realistisch.
Eine noch genauere Methode zur Generierung dieser synthetischen Werte besteht darin, für jedes Unternehmen eine einzigartige Normalverteilung zu verwenden und dabei den durchschnittlichen Nettogewinn und die Standardabweichungen des Nettogewinns jedes Unternehmens zu verwenden, sofern diese verfügbar sind. Für dieses Beispiel reicht unser einfacher Ansatz aus, bei dem wir davon ausgehen, dass wir Zugriff auf den Durchschnitt und die Standardabweichung aller Unternehmen haben.
Für dieses Beispiel haben wir angenommen, dass die Verteilung des Nettoeinkommens normal ist (oder die Form einer Glockenkurve hat). Ein weiteres häufiges Muster ist die Verteilung mit dicken Enden, die auftritt, wenn eine Verteilung eine signifikante Anzahl extremer positiver oder negativer Werte enthält. Dies wird auch als Schiefe bezeichnet . Wir können eine Liste synthetischer Werte für das Nettoeinkommen aus einer Verteilung mit dicken Enden mithilfe der Gumbel-Methode in NumPy generieren:
Auch hier ist anzumerken, dass diese Werte zwar nicht sehr realistisch sind, aber leicht verbessert werden können, indem man entweder tatsächliche aggregierte statistische Werte verwendet und für jedes Unternehmen eine Verteilung erstellt. Mit dem richtigen Fachwissen können diese Methoden qualitativ hochwertige, realistische synthetische Daten generieren central limit theorem.
Verwenden von Python-Listen zum Erstellen von Wörterbüchern, JSON-Dateien, Datenrahmen und CSV-Dateien
Mit den Listen, die wir generiert haben, können wir nun ein Python-Wörterbuch erstellen , das eine nützliche Möglichkeit ist, unsere Listen in Schlüssel-Wert-Paaren zu speichern. Wir haben eine Liste für Firmennamen, Mitarbeiterzahl, Umsatz, Boolesche Werte für Umsatzschwellenwerte, normalverteiltes Nettoeinkommen und fettverteiltes Nettoeinkommen. Lassen Sie uns ein Wörterbuch erstellen, das die entsprechenden benannten Schlüssel für jeden dieser Werte unseren Listen zuordnet:
Wir sehen, dass wir in dieser Datenstruktur Schlüssel haben, die eindeutige Zeichenfolgen sind, oder die Namen, die wir jeder Liste und der entsprechenden Liste geben. Wir können dieses Wörterbuch mit der folgenden Logik problemlos in eine JSON-Datei konvertieren:
Und wir können unsere JSON-Datei lesen und die Ergebnisse ausdrucken:
Wir können Python-Wörterbücher auch ganz einfach mit dem Pandas-Datenrahmen -Konstruktor in einen Pandas- Datenrahmen konvertieren :
Wir können Pandas auch verwenden, um diesen Datenrahmen mit der Methode to_csv in eine CSV-Datei zu schreiben:
Und wir können die Methode read_csv verwenden, um unsere Datei einzulesen:
Und zeigen Sie unsere Daten an:
Wir sehen, dass wir mit einer einzigen Codezeile einen Pandas-Datenrahmen mithilfe der Listen und des Wörterbuchs generieren konnten, die wir zuvor erstellt haben.
Der Code in diesem Beitrag ist auf GitHub verfügbar .
Experimentieren mit Python-Listen und NumPy Arrays
Das Erstellen von Listen und Arrays in Python ist für eine Vielzahl von Aufgaben nützlich. Mit Python können Sie problemlos Listen für Zeichenfolgen, Boolesche Werte, Gleitkommazahlen und Ganzzahlen erstellen und bearbeiten. Darüber hinaus können Sie mit der Listenverständnisfunktion neue Listen basierend auf den Werten in einer anderen Liste auf lesbare und prägnante Weise erstellen.
NumPy Arrays sind eine ressourcenschonendere Alternative zu Listen, die zudem mit Tools zum Ausführen komplexer mathematischer Operationen und zum Generieren synthetischer Daten ausgestattet sind. Beide Iterables können zum Erstellen komplexerer Datenstrukturen wie Wörterbüchern und Datenrahmen verwendet werden. Darüber hinaus ist es unkompliziert, aus diesen aus Listen erstellten Datenstrukturen JSON- und CSV-Dateien zu erstellen. Ein gutes Verständnis der verfügbaren Tools zum Generieren und Bearbeiten von Listen und Arrays in Python ist für jeden Ingenieur und Datenwissenschaftler unerlässlich .