10 Python-Einzeiler, die Ihren Data-Science-Workflow verbessern
Python ist die beliebteste Data-Science-Programmiersprache, da sie vielseitig ist und viel Unterstützung von der Community genießt. Bei so viel Nutzung gibt es viele Möglichkeiten, unseren Data-Science-Workflow zu verbessern, die Sie vielleicht nicht kennen.
In diesem Artikel werden wir zehn verschiedene Python-Einzeiler untersuchen, die Ihre datenwissenschaftliche Arbeit verbessern würden.
Was sind sie? Werfen wir einen Blick darauf.
1. Effizienter Umgang mit fehlenden Daten
Fehlende Daten kommen in Datensätzen immer wieder vor. Dies kann verschiedene Gründe haben, von Missmanagement der Daten bis hin zu natürlichen Bedingungen und darüber hinaus. Dennoch müssen wir entscheiden, wie wir mit den fehlenden Daten umgehen.
Einige würden es in die Kategorie der fehlenden Daten schaffen oder sie alle fallen lassen. Es kann jedoch vorkommen, dass wir uns dafür entscheiden, die fehlenden Daten einzutragen.
Wenn wir die fehlenden Daten ergänzen möchten, können wir die Pandas-Methode fillna
verwenden. Es ist einfach zu verwenden, da wir nur den Wert, den wir füllen möchten, als Ersatz für den fehlenden Wert übergeben müssen, aber wir können es effizienter gestalten.
Sehen wir uns den Code unten an.
df.fillna({col: df[col].median() for col in df.select_dtypes(include='number').columns} |
{col: df[col].mode()[0] for col in df.select_dtypes(include='object').columns}, inplace=True)
Durch die Kombination von fillna
mit der Bedingung können wir die numerischen fehlenden Daten mit dem Median und die kategorialen fehlenden Daten mit dem Modus füllen.
Mit einer Zeile können Sie schnell alle verschiedenen fehlenden Daten in anderen Spalten ergänzen.
2. Entfernung stark korrelierter Merkmale
Multikollinearität tritt auf, wenn unser Datensatz viele unabhängige Variablen enthält, die stark miteinander und nicht mit dem Ziel korrelieren. Dies wirkt sich negativ auf die Modellleistung aus, daher möchten wir weniger korrelierte Merkmale beibehalten.
Wir können die Pandas-Korrelationsfunktion mit der bedingten Auswahl kombinieren, um schnell die weniger korrelierten Merkmale auszuwählen. So können wir beispielsweise die Merkmale auswählen, deren maximale Pearson-Korrelation mit den anderen unter 0,95 liegt.
df = df.loc[:, df.corr().abs().max() < 0.95]
Probieren Sie die Korrelationsmerkmale und den Schwellenwert aus, um festzustellen, ob das Vorhersagemodell gut ist oder nicht.
3. Bedingte Spalte anwenden
Das Erstellen einer neuen Spalte mit mehreren Bedingungen kann manchmal kompliziert sein und die Warteschlange für deren Ausführung kann lang sein. Wir können jedoch die Apply-Methode von Pandas verwenden, um bei der Entwicklung der neuen Funktion bestimmte Bedingungen zu verwenden und gleichzeitig mehrere Spaltenwerte zu verwenden.
Hier finden Sie beispielsweise Beispiele für die Erstellung einer neuen Spalte, deren Werte auf der Bedingung der anderen Spaltenwerte basieren.
df['new_col'] = df.apply(lambda x: x['A'] * x['B'] if x['C'] > 0 else x['A'] + x['B'], axis=1)
Sie können eine andere Bedingung ausprobieren, die Ihren Anforderungen entspricht.
4. Gemeinsame und unterschiedliche Elemente finden
Python bietet viele integrierte Datentypen, einschließlich Set. Beim Datentyp „Set“ handelt es sich um eindeutige Daten, die eine ungeordnete Liste von Daten darstellen, jedoch nur mit eindeutigen Elementen. Es wird häufig für viele Datenoperationen verwendet, einschließlich der Suche nach gemeinsamen Elementen.
Wir haben zum Beispiel den folgenden Satz:
set1 = {"apple", "banana", "cherry", "date", "fig"}
set2 = {"cherry", "date", "elderberry", "fig", "grape"}
Dann wollen wir das gemeinsame Element zwischen beiden Mengen finden. Wir können die folgende Methode verwenden.
set1.intersection(set2)
Ausgabe :
{'cherry', 'date', 'fig'}
Es ist eine einfache, aber nützliche Möglichkeit, das gemeinsame Element zu finden. Umgekehrt können wir auch die Elemente finden, die innerhalb beider Mengen unterschiedlich sind.
set1.difference(set2)
Ausgabe :
{'apple', 'banana'}
Versuchen Sie, sie in Ihrem Datenworkflow zu verwenden, wenn Sie gemeinsame und unterschiedliche Elemente finden müssen.
5. Boolesche Masken zum Filtern
Bei der Arbeit mit dem NumPy-Array und seinem abgeleiteten Objekt möchten wir manchmal die Daten entsprechend unseren Anforderungen filtern. In diesem Fall können wir eine boolesche Maske erstellen, um die Daten basierend auf der von uns festgelegten booleschen Bedingung zu filtern.
Nehmen wir an, wir haben die folgende Liste von Daten.
import numpy as np
data = np.array([10, 15, 20, 25, 30, 35, 40, 45, 50])
Dann können wir die boolesche Maske verwenden, um die gewünschten Daten zu filtern. Wir wollen zum Beispiel nur gerade Zahlen.
data[(data % 2 == 0)]
Ausgabe :
array([10, 20, 30, 40, 50])
Dies ist auch die Grundlage der Pandas-Filterung; Eine boolesche Maske kann jedoch vielseitiger sein, da sie auch im NumPy-Array funktioniert.
6. Zählung des Vorkommens auflisten
Wenn wir mit einer Liste oder anderen Daten mit mehreren Werten arbeiten, möchten wir manchmal die Häufigkeit für jeden Wert wissen. In diesem Fall können wir die Zählerfunktion verwenden, um sie automatisch zu zählen.
Erwägen Sie beispielsweise die folgende Liste.
data = [10, 10, 20, 20, 30, 35, 40, 40, 40, 50]
Dann können wir die Zählerfunktion verwenden, um die Frequenz zu berechnen.
from collections import Counter
Counter(data)
Ausgabe :
Counter({10: 2, 20: 2, 30: 1, 35: 1, 40: 3, 50: 1})
Das Ergebnis ist ein Wörterbuch für das Vorkommen der Anzahl. Verwenden Sie sie, wenn Sie eine schnelle Frequenzberechnung benötigen.
7. Numerische Extraktion aus Text
Reguläre Ausdrücke (Regex) sind definierte Zeichenlisten, die einem Muster im Text entsprechen. Sie werden normalerweise verwendet, wenn wir bestimmte Textmanipulationen durchführen möchten, und genau das können wir mit diesem Einzeiler tun.
Im folgenden Beispiel können wir eine Kombination aus Regex und Map verwenden, um Zahlen aus dem Text zu extrahieren.
import re
list(map(int, re.findall(r'\d+', "Sample123Text456")))
Ausgabe :
[123, 456]
Das obige Beispiel funktioniert nur für Ganzzahldaten. Wenn Sie jedoch mehr über reguläre Ausdrücke erfahren, erhalten Sie die Leistungsfähigkeit und Flexibilität, um diesen Einzeiler für mehrere Anwendungsfälle anzupassen.
8. Verschachtelte Liste reduzieren
Wenn wir unsere Daten für die Analyse vorbereiten, können wir auf Listendaten stoßen, die eine Liste innerhalb der Liste enthalten, die wir als verschachtelt bezeichnen können. Wenn wir so etwas finden, möchten wir es möglicherweise für eine weitere Datenanalyse oder Visualisierung reduzieren.
Nehmen wir zum Beispiel an, wir haben die folgende verschachtelte Liste.
nested_list = [
[1, 2, 3],
[4, 5],
[6, 7, 8, 9]
]
Anschließend können wir die Liste mit dem folgenden Code reduzieren.
sum(nested_list, [])
Ausgabe :
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Mit dieser eindimensionalen Datenliste können Sie bei Bedarf weitere und einfachere Analysen durchführen.
9. Liste zum Wörterbuch
Sind Sie schon einmal in die Situation geraten, dass Sie mehrere Listen haben und die Informationen im Wörterbuchformat zusammenfassen möchten? Der Anwendungsfall kann sich beispielsweise auf Kartierungszwecke oder die Feature-Kodierung beziehen.
In diesem Fall können wir die Liste, die wir haben, mit der Funktion zip
in ein Wörterbuch umwandeln.
Wir haben zum Beispiel die folgende Liste.
fruit = ['apple', 'banana', 'cherry']
values = [100, 200, 300]
Mit der Kombination von zip und dict können wir beide oben genannten Listen zu einer kombinieren.
dict(zip(fruit, values))
Ausgabe :
{'apple': 100, 'banana': 200, 'cherry': 300}
Dies ist eine schnelle Möglichkeit, beide Daten zu einer Struktur zusammenzufassen, die dann für die weitere Datenvorverarbeitung verwendet werden kann.
10. Zusammenführen von Wörterbüchern
Wenn wir ein Wörterbuch haben, das die Informationen enthält, die wir für die Datenvorverarbeitung benötigen, sollten wir sie kombinieren. Zum Beispiel haben wir die Aktion „Liste ins Wörterbuch“ wie oben ausgeführt und am Ende die folgenden Wörterbücher erhalten:
fruit_mapping = {'apple': 100, 'banana': 200, 'cherry': 300}
furniture_mapping = {'table': 100, 'chair': 200, 'sofa': 300}
Dann möchten wir sie kombinieren, da diese Informationen insgesamt wichtig sein könnten. Dazu können wir den folgenden Einzeiler verwenden.
{**fruit_mapping, **furniture_mapping }
Output>>
{'apple': 100,
'banana': 200,
'cherry': 300,
'table': 100,
'chair': 200,
'sofa': 300}
Wie Sie sehen, sind beide Wörterbücher zu einem Wörterbuch geworden. Dies ist in vielen Fällen sehr nützlich, in denen Sie Daten aggregieren müssen.
Abschluss
In diesem Artikel haben wir zehn verschiedene Python-Einzeiler untersucht, die Ihren Data-Science-Workflow verbessern würden. Diese Einzeiler haben sich auf Folgendes konzentriert:
- Effizienter Umgang mit fehlenden Daten
- Entfernung stark korrelierter Merkmale
- Bedingte Spalte anwenden
- Gemeinsame und unterschiedliche Elemente finden
- Boolesche Masken zum Filtern
- Vorkommen der Listenanzahl
- Numerische Extraktion aus Text
- Verschachtelte Liste reduzieren
- Liste zum Wörterbuch
- Zusammenführen von Wörterbüchern
Ich hoffe, das hat geholfen!