suchen
HeimTechnologie-PeripheriegeräteKIZwei tolle Tipps zur Verbesserung der Effizienz Ihres Pandas-Codes

Zwei tolle Tipps zur Verbesserung der Effizienz Ihres Pandas-Codes

Jan 18, 2024 pm 08:12 PM
代码深度学习pandas

Wenn Sie Pandas jemals mit tabellarischen Daten verwendet haben, sind Sie möglicherweise mit dem Prozess des Importierens, Bereinigens und Transformierens der Daten und der anschließenden Verwendung als Eingabe für das Modell vertraut. Wenn Sie Ihren Code jedoch skalieren und in die Produktion überführen müssen, wird Ihre Pandas-Pipeline höchstwahrscheinlich abstürzen und langsam laufen. In diesem Artikel werde ich zwei Tipps geben, die Ihnen helfen, die Ausführung von Pandas-Code zu beschleunigen, die Effizienz der Datenverarbeitung zu verbessern und häufige Fallstricke zu vermeiden.

Zwei tolle Tipps zur Verbesserung der Effizienz Ihres Pandas-Codes

Tipp 1: Vektorisierungsoperationen

In Pandas sind Vektorisierungsoperationen ein effizientes Werkzeug, das die Spalten des gesamten Datenrahmens prägnanter verarbeiten kann, ohne Zeile für Zeile zu schleifen.

Wie funktioniert es?

Broadcasting ist ein Schlüsselelement der vektorisierten Manipulation und ermöglicht Ihnen die intuitive Manipulation von Objekten mit unterschiedlichen Formen.

eg1: Ein Array a mit 3 Elementen wird mit einem Skalar b multipliziert, was zu einem Array mit derselben Form wie Quelle führt.

Zwei tolle Tipps zur Verbesserung der Effizienz Ihres Pandas-Codes

eg2: Wenn Sie eine Additionsoperation durchführen, fügen Sie Array a mit Form (4,1) und Array b mit Form (3,) hinzu.

Zwei tolle Tipps zur Verbesserung der Effizienz Ihres Pandas-Codes

Es gab viele Artikel, in denen dies diskutiert wurde, insbesondere im Deep Learning, wo groß angelegte Matrixmultiplikationen üblich sind. In diesem Artikel werden zwei kurze Beispiele erläutert.

Angenommen, Sie möchten zunächst zählen, wie oft eine bestimmte Ganzzahl in einer Spalte vorkommt. Hier sind 2 mögliche Methoden.

"""计算DataFrame X 中 "column_1" 列中等于目标值 target 的元素个数。参数:X: DataFrame,包含要计算的列 "column_1"。target: int,目标值。返回值:int,等于目标值 target 的元素个数。"""# 使用循环计数def count_loop(X, target: int) -> int:return sum(x == target for x in X["column_1"])# 使用矢量化操作计数def count_vectorized(X, target: int) -> int:return (X["column_1"] == target).sum()

Angenommen, Sie haben einen DataFrame mit einer Datumsspalte und möchten diesen um eine bestimmte Anzahl von Tagen verschieben. Die Berechnung mithilfe vektorisierter Operationen ist wie folgt:

def offset_loop(X, days: int) -> pd.DataFrame:d = pd.Timedelta(days=days)X["column_const"] = [x + d for x in X["column_10"]]return Xdef offset_vectorized(X, days: int) -> pd.DataFrame:X["column_const"] = X["column_10"] + pd.Timedelta(days=days)return X

Tipp 2: Iterieren Sie

„for-Schleife“

Der erste und intuitivste Weg zum Iterieren ist die Verwendung einer Python-for-Schleife.

def loop(df: pd.DataFrame, remove_col: str, words_to_remove_col: str) -> list[str]:res = []i_remove_col = df.columns.get_loc(remove_col)i_words_to_remove_col = df.columns.get_loc(words_to_remove_col)for i_row in range(df.shape[0]):res.append(remove_words(df.iat[i_row, i_remove_col], df.iat[i_row, i_words_to_remove_col]))return result

「apply」

def apply(df: pd.DataFrame, remove_col: str, words_to_remove_col: str) -> list[str]:return df.apply(func=lambda x: remove_words(x[remove_col], x[words_to_remove_col]), axis=1).tolist()

Bei jeder Iteration von df.apply erhält das bereitgestellte Callable eine Serie, deren Index df.columns ist und deren Werte Zeilen sind. Das bedeutet, dass Pandas die Sequenz in jeder Schleife generieren muss, was teuer ist. Um die Kosten zu senken, ist es besser, apply für die Teilmenge von df aufzurufen, von der Sie wissen, dass Sie sie verwenden werden, etwa so:

def apply_only_used_cols(df: pd.DataFrame, remove_col: str, words_to_remove_col: str) -> list[str]:return df[[remove_col, words_to_remove_col]].apply(func=lambda x: remove_words(x[remove_col], x[words_to_remove_col]), axis=1)

「Listenkombination + Itertuples」

Es ist auf jeden Fall besser, die Iteration mit Itertuples in Kombination mit Listen durchzuführen. itertuples generiert (benannte) Tupel mit Zeilendaten.

def itertuples_only_used_cols(df: pd.DataFrame, remove_col: str, words_to_remove_col: str) -> list[str]:return [remove_words(x[0], x[1])for x in df[[remove_col, words_to_remove_col]].itertuples(index=False, name=None)]

「Listenkombination + Zip」

zip akzeptiert ein iterierbares Objekt und generiert ein Tupel, wobei das i-te Tupel alle i-ten Elemente des gegebenen iterierbaren Objekts der Reihe nach enthält.

def zip_only_used_cols(df: pd.DataFrame, remove_col: str, words_to_remove_col: str) -> list[str]:return [remove_words(x, y) for x, y in zip(df[remove_col], df[words_to_remove_col])]

「Listenkombination + to_dict」

def to_dict_only_used_columns(df: pd.DataFrame) -> list[str]:return [remove_words(row[remove_col], row[words_to_remove_col])for row in df[[remove_col, words_to_remove_col]].to_dict(orient="records")]

「Caching」

Zusätzlich zu den besprochenen iterativen Techniken können zwei weitere Methoden dazu beitragen, die Leistung des Codes zu verbessern: Caching und Parallelisierung. Caching ist besonders nützlich, wenn Sie eine Pandas-Funktion mehrmals mit denselben Argumenten aufrufen. Wenn beispielsweise „remove_words“ auf einen Datensatz mit vielen doppelten Werten angewendet wird, können Sie functools.lru_cache verwenden, um die Ergebnisse der Funktion zu speichern und zu vermeiden, dass sie jedes Mal neu berechnet werden. Um lru_cache zu verwenden, fügen Sie einfach den @lru_cache-Dekorator zur Deklaration von „remove_words“ hinzu und wenden Sie die Funktion dann mit Ihrer bevorzugten Iterationsmethode auf Ihren Datensatz an. Dies kann die Geschwindigkeit und Effizienz Ihres Codes erheblich verbessern. Nehmen Sie den folgenden Code als Beispiel:

@lru_cachedef remove_words(...):... # Same implementation as beforedef zip_only_used_cols_cached(df: pd.DataFrame, remove_col: str, words_to_remove_col: str) -> list[str]:return [remove_words(x, y) for x, y in zip(df[remove_col], df[words_to_remove_col])]

Das Hinzufügen dieses Dekorators generiert eine Funktion, die sich die Ausgabe zuvor gefundener Eingaben „merkt“, sodass der gesamte Code nicht erneut ausgeführt werden muss.

"Parallelisierung"

Der letzte Trumpf besteht darin, Pandarallel zu verwenden, um unsere Funktionsaufrufe über mehrere unabhängige DF-Blöcke hinweg zu parallelisieren. Das Tool ist einfach zu verwenden: Sie importieren und initialisieren es einfach und ändern dann alle .applys in .parallel_applys.

from pandarallel import pandarallelpandarallel.initialize(nb_workers=min(os.cpu_count(), 12))def parapply_only_used_cols(df: pd.DataFrame, remove_col: str, words_to_remove_col: str) -> list[str]:return df[[remove_col, words_to_remove_col]].parallel_apply(lambda x: remove_words(x[remove_col], x[words_to_remove_col]), axis=1)

Das obige ist der detaillierte Inhalt vonZwei tolle Tipps zur Verbesserung der Effizienz Ihres Pandas-Codes. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Dieser Artikel ist reproduziert unter:51CTO.COM. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Gemma Scope: Das Mikroskop von Google, um in den Denkprozess von AI zu blickenGemma Scope: Das Mikroskop von Google, um in den Denkprozess von AI zu blickenApr 17, 2025 am 11:55 AM

Erforschen der inneren Funktionsweise von Sprachmodellen mit Gemma -Umfang Das Verständnis der Komplexität von KI -Sprachmodellen ist eine bedeutende Herausforderung. Die Veröffentlichung von Gemma Scope durch Google, ein umfassendes Toolkit, bietet Forschern eine leistungsstarke Möglichkeit, sich einzuschütteln

Wer ist ein Business Intelligence Analyst und wie kann man einer werden?Wer ist ein Business Intelligence Analyst und wie kann man einer werden?Apr 17, 2025 am 11:44 AM

Erschließung des Geschäftserfolgs: Ein Leitfaden zum Analyst für Business Intelligence -Analyst Stellen Sie sich vor, Rohdaten verwandeln in umsetzbare Erkenntnisse, die das organisatorische Wachstum vorantreiben. Dies ist die Macht eines Business Intelligence -Analysts (BI) - eine entscheidende Rolle in Gu

Wie füge ich eine Spalte in SQL hinzu? - Analytics VidhyaWie füge ich eine Spalte in SQL hinzu? - Analytics VidhyaApr 17, 2025 am 11:43 AM

SQL -Änderungstabellanweisung: Dynamisches Hinzufügen von Spalten zu Ihrer Datenbank Im Datenmanagement ist die Anpassungsfähigkeit von SQL von entscheidender Bedeutung. Müssen Sie Ihre Datenbankstruktur im laufenden Flug anpassen? Die Änderungstabelleerklärung ist Ihre Lösung. Diese Anleitung Details Hinzufügen von Colu

Business Analyst vs. Data AnalystBusiness Analyst vs. Data AnalystApr 17, 2025 am 11:38 AM

Einführung Stellen Sie sich ein lebhaftes Büro vor, in dem zwei Fachleute an einem kritischen Projekt zusammenarbeiten. Der Business Analyst konzentriert sich auf die Ziele des Unternehmens, die Ermittlung von Verbesserungsbereichen und die strategische Übereinstimmung mit Markttrends. Simu

Was sind Count und Counta in Excel? - Analytics VidhyaWas sind Count und Counta in Excel? - Analytics VidhyaApr 17, 2025 am 11:34 AM

Excel -Datenzählung und -analyse: Detaillierte Erläuterung von Count- und Counta -Funktionen Eine genaue Datenzählung und -analyse sind in Excel kritisch, insbesondere bei der Arbeit mit großen Datensätzen. Excel bietet eine Vielzahl von Funktionen, um dies zu erreichen. Die Funktionen von Count- und Counta sind wichtige Instrumente zum Zählen der Anzahl der Zellen unter verschiedenen Bedingungen. Obwohl beide Funktionen zum Zählen von Zellen verwendet werden, sind ihre Designziele auf verschiedene Datentypen ausgerichtet. Lassen Sie uns mit den spezifischen Details der Count- und Counta -Funktionen ausgrenzen, ihre einzigartigen Merkmale und Unterschiede hervorheben und lernen, wie Sie sie in der Datenanalyse anwenden. Überblick über die wichtigsten Punkte Graf und Cou verstehen

Chrome ist hier mit KI: Tag zu erleben, täglich etwas Neues !!Chrome ist hier mit KI: Tag zu erleben, täglich etwas Neues !!Apr 17, 2025 am 11:29 AM

Die KI -Revolution von Google Chrome: Eine personalisierte und effiziente Browsing -Erfahrung Künstliche Intelligenz (KI) verändert schnell unser tägliches Leben, und Google Chrome leitet die Anklage in der Web -Browsing -Arena. Dieser Artikel untersucht die Exciti

Die menschliche Seite von Ai: Wohlbefinden und VierfacheDie menschliche Seite von Ai: Wohlbefinden und VierfacheApr 17, 2025 am 11:28 AM

Impacting Impact: Das vierfache Endergebnis Zu lange wurde das Gespräch von einer engen Sicht auf die Auswirkungen der KI dominiert, die sich hauptsächlich auf das Gewinn des Gewinns konzentrierte. Ein ganzheitlicherer Ansatz erkennt jedoch die Vernetzung von BU an

5 verwendende Anwendungsfälle für Quantum Computing, über die Sie wissen sollten5 verwendende Anwendungsfälle für Quantum Computing, über die Sie wissen solltenApr 17, 2025 am 11:24 AM

Die Dinge bewegen sich stetig zu diesem Punkt. Die Investition, die in Quantendienstleister und Startups einfließt, zeigt, dass die Industrie ihre Bedeutung versteht. Und eine wachsende Anzahl realer Anwendungsfälle entsteht, um seinen Wert zu demonstrieren

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

Sicherer Prüfungsbrowser

Sicherer Prüfungsbrowser

Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.