Verschieben durch Pandas DataFrames | Data Science Rebalanced | Skillshare

Playback-Geschwindigkeit


1.0x


  • 0.5x
  • 0.75x
  • 1x (normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Verschieben durch Pandas DataFrames

teacher avatar Data Science Rebalanced, Data Scientists

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Einheiten dieses Kurses

    • 1.

      Trailer zum Kurs

      1:43

    • 2.

      Kursprogramm Übersicht und Tools

      1:22

    • 3.

      Leitfaden zur Optimierung

      1:19

    • 4.

      Wann zu optimieren

      2:36

    • 5.

      Methodenübersicht

      0:22

    • 6.

      Jupyter Notizbuch laden

      2:17

    • 7.

      Über die Daten

      1:03

    • 8.

      FOR-Schleife

      2:46

    • 9.

      Iterrows

      1:13

    • 10.

      Itertuples

      1:22

    • 11.

      Verfassen der Liste

      1:41

    • 12.

      Bewerben

      1:19

    • 13.

      Vektorisierung mit Pandas

      1:09

    • 14.

      Codebeispiel 1 - Langsam

      4:26

    • 15.

      Codebeispiel 2 - Refactored

      3:59

    • 16.

      Codebeispiel 2 - Langsam

      2:44

    • 17.

      Codebeispiel 2 - Refactored

      2:13

  • --
  • Anfänger-Niveau
  • Fortgeschrittenes Niveau
  • Fortgeschrittenes Niveau
  • Jedes Niveau

Von der Community generiert

Das Niveau wird anhand der mehrheitlichen Meinung der Teilnehmer:innen bestimmt, die diesen Kurs bewertet haben. Bis das Feedback von mindestens 5 Teilnehmer:innen eingegangen ist, wird die Empfehlung der Kursleiter:innen angezeigt.

76

Teilnehmer:innen

--

Projekt

Über diesen Kurs

Hast du jemals eine Stunde Code mit dem Schreiben verbracht, um deine Daten nur zu bereinigen und festzustellen, dass es drei Stunden dauert? Manchmal ist es okay, auf eine andere Aufgabe zu wechseln, während du auf den Ablauf des Codes wartest; beim Umzug in Produktionsumgebungen ist jedoch eine refactoring oft erforderlich. In diesem Kurs lernst du, wie du eine Aufgabe beschleunigen kannst, wirst du als Data Scientist oder Data Analystin viel erledigen: Verfassen von Pandas DataFrames und Umwandeln deiner Daten.

Leah ist Datenwissenschaftler an einem großen Finanzinstitut und entdeckt, dass es eine ernste Lücke zwischen den Fähigkeiten und Techniken gibt, die die Schüler in der Schule lernen, versus das, was sie tatsächlich am Job in der realen Welt brauchen. Effizientes Python zu schreiben war in Leahs Bachelor-Programm überhaupt nicht gestresst. Sie hilft dir, die gleichen Fehler zu vermeiden, die sie bei ihrem ersten Job gemacht hat, indem du dir beibringst, wie du DataFrames schnell durchlaufen kannst.

Dieser Kurs richtet sich an aufstrebende Datenwissenschaftler und Programmierer, die ihr Wissen über das Schreiben effizienter Python erweitern möchten.

In diesem Kurs lernst du die folgenden Techniken zum Schleifen durch Pandas DataFrames:

  • Für Schleifen
  • Iterrows()
  • Itertuples()
  • Verfassen der Liste
  • Bewerben()
  • Vektorisierung mit Pandas

Leah wird durch zwei reale Beispiele für langsamen Code gehen und dir zeigen, wie du es reaktor kannst.

Für diesen Kurs sind keine Vorkenntnisse in Pandas erforderlich, ein grundlegendes Verständnis von Python 3 ist jedoch hilfreich (aber nicht erforderlich).

Musik von TimMoor von Pixabay

Bilder in diesem Kurs verwenden - Computer

Triff deine:n Kursleiter:in

Teacher Profile Image

Data Science Rebalanced

Data Scientists

Kursleiter:in

Leah Berg and Ray McLendon are Data Scientists at a large financial institution and have over 15 years of combined experience. They have a passion for seeing people grow and become the best versions of themselves. When Leah and Ray graduated from university, they struggled at their first Data Scientist jobs and quickly realized that academia only told half the story.

While their degree programs placed a large emphasis on machine learning algorithms with perfectly cleaned and balanced data sets, they found the opposite true in the industry. Every problem they encountered required 90% of their time spent focusing on messy and imbalanced data sets, as well as the people generating those data sets.

Leah and Ray created Data Science Rebalanced to help data scientists new to the... Vollständiges Profil ansehen

Level: Beginner

Kursbewertung

Erwartungen erfüllt?
    Voll und ganz!
  • 0%
  • Ja
  • 0%
  • Teils teils
  • 0%
  • Eher nicht
  • 0%

Warum lohnt sich eine Mitgliedschaft bei Skillshare?

Nimm an prämierten Skillshare Original-Kursen teil

Jeder Kurs setzt sich aus kurzen Einheiten und praktischen Übungsprojekten zusammen

Mit deiner Mitgliedschaft unterstützt du die Kursleiter:innen auf Skillshare

Lerne von überall aus

Ob auf dem Weg zur Arbeit, zur Uni oder im Flieger - streame oder lade Kurse herunter mit der Skillshare-App und lerne, wo auch immer du möchtest.

Transkripte

1. Trailer zum Kurs: Hallo allerseits, Willkommen beim heutigen Video, das Tipps zum Schreiben von effizientem Python enthält. Mein Name ist Lisa Simpson und ich bin Datenwissenschaftlerin an einem großen Finanzinstitut. Aber ungefähr vier Jahre Erfahrung mein Kollege Ray und ich wollten diese Videos wirklich machen , weil wir feststellen, dass es eine große Lücke gibt und die Fähigkeiten, die Sie in der Schule lernen, im Vergleich denen, die Sie tatsächlich benötigen in der realen Welt. Alle unsere Videos konzentrieren sich also auf reale Datensätze, reale Probleme und die Fähigkeiten, die Sie benötigen, um diejenigen zu lösen , die sie nicht unbedingt in der Schule unterrichten. Wir freuen uns sehr, Sie heute bei uns zu haben und hoffen, dass Sie bei uns bleiben werden. Es gibt unzählige verschiedene Möglichkeiten, Ihren Code in Python zu beschleunigen oder zu optimieren. In diesem Kurs werde ich mich darauf konzentrieren, eine bestimmte Aufgabe zu beschleunigen , bei der Sie wahrscheinlich als Datenwissenschaftler viel tun werden und nicht so, dass Sie Sie wahrscheinlich als Datenwissenschaftler viel tun einen Pandas DataFrame durchlaufen und einige anwenden Transformationen in Textdaten. Wir werden durchgehen, wann und warum Sie Ihren Code optimieren können, und gehen sechs verschiedene Möglichkeiten durch, um einen Pandas DataFrame zu durchlaufen. Dann nehmen wir das Gelernte an, um es auf zwei Codebeispiele anzuwenden , die wir überarbeitet haben. Dieses Tutorial soll super anfängerfreundlich sein. Wir verwenden Jupyter Notebooks, damit Sie den gesamten Code, den ich schreibe, sehen und alleine ausführen können den gesamten Code, den ich schreibe . Und wir werden einige wirklich beliebte Data Science-Bibliotheken wie Pandas und NLTK verwenden . Die Daten, die wir für den heutigen Kurs verwenden werden , sind der Nachrichtendatensatz der AG. Dies ist ein sehr beliebter Textdatensatz, über eine Million Nachrichtenartikel, ihre Titel und ihre Beschreibungen sowie Kategorien für jeden der Nachrichtenartikel enthält ihre Titel und ihre Beschreibungen . In diesem Kurs konzentrieren wir uns nur auf den Titel des Nachrichtenartikels. Obwohl es in diesem Datensatz über eine Million Datenpunkte gibt , wir nur ein paar tausend Datensätze testen , nur weil wir nicht möchten, dass unser Code für immer läuft. Und damit fangen wir an. 2. Kursübersicht und Tools: Okay, lassen Sie uns ein paar Tipps zum Schreiben von effizientem Python eingehen . Dieser Kurs soll wirklich anfängerfreundlich sein. Wir werden ein paar wirklich beliebte Data Science-Bibliotheken wie Pandas und NLTK oder Natural Language Toolkit verwenden. Jetzt müssen Sie kein Experte in diesen Bibliotheken sein, aber es hilft, ein wenig Vertrautheit mit ihnen zu haben . Ich werde mein Bestes tun, um die Dinge zu erklären , während wir während des gesamten Kurses weitermachen. Ich habe Python 3 im Abschnitt „Zwischenfähigkeiten“ aufgeführt. Ich erwarte, dass Sie schon ziemlich viel Vertrautheit mit Python haben. Aber wenn nicht, verwenden wir Jupyter-Notebooks. Sie können die Zellen ganz einfach selbst verfolgen und ausführen. Während dieses Kurses werden wir uns auf die Vorverarbeitung von Texten für unsere Nachrichtenartikel konzentrieren . Ich habe tatsächlich einen anderen Kurs über die Verarbeitung natürlicher Sprache in Python, wir werden mehrere der Methoden verwenden , die in diesem Kurs gelehrt werden. Daher würde ich dringend empfehlen, diesen zu überprüfen bevor Sie sich diesen Kurs ansehen, also werden wir in diesem Kurs PyCharm als Entwicklungsumgebung verwenden, aber wir werden Jupyter wirklich verwenden Notebooks für die eigentliche Entwicklung. Pycharm wird es uns einfach erlauben, ein Jupiter-Notizbuch zu drehen und alle unsere Änderungen dort vorzunehmen. Jetzt können Sie jede IDE verwenden, die Sie möchten. Ich bevorzuge einfach PyCharm, aber fühlen Sie sich frei, wenn Sie Anaconda verwenden, vielleicht Spidered oder VS-Code oder irgendeine IDE reicht. Neben PyCharm- und Jupiter-Notebooks konzentrieren wir uns auf die Bibliotheken, Pandas und Natural Language Toolkit oder NLTK. 3. Leitfaden zur Optimierung: Die kurze Version, um diesen Kurs zusammenzufassen, ist also dass Sie möglicherweise nicht sofort eine Optimierung durchführen müssen. Ich würde empfehlen, ein paar Schritte durchzugehen bevor Sie tatsächlich mit der Optimierung Ihres Codes beginnen. Zuallererst muss Ihr Code tatsächlich ausgeführt werden, damit Sie wissen können, ob es Optimierung bedeutet. Machen Sie also zuerst den Schritt, um sicherzustellen, dass Ihr Code ausgeführt wird, dann nach dieser Überprüfung, aber Sie erhalten die Ausgabe, die Sie erwarten, weil Ihr Code manchmal funktioniert, aber die Ergebnisse Kunst zu produzieren, wenn Sie es erwarten würden, sobald Sie sie laufen lassen und die Ausgabe ist, die Sie erwarten würden, dann können Sie anfangen darüber nachzudenken, okay, ist diese Ansicht, die derzeit läuft akzeptabel für mich? Aber es dreht sich nicht alles um dich. Wenn Sie diesen Code für eine andere Person schreiben oder jemand anderes Ihren Code konsumiert, wenn Sie sicherstellen möchten , dass die Geschwindigkeit dafür akzeptabel ist, wenn es keine Personen gibt, die Ihren Code verwenden, Sie haben möglicherweise Benutzer, die indirekt mit Ihrem Code arbeiten. Daher ist es wichtig, mit ihnen darüber zu sprechen, welche Art von Leistung sie von einer bestimmten Anwendung erwarten . Schließlich, nachdem Sie all das abgedeckt haben, sind Sie möglicherweise bereit, zu optimieren. Und wenn Sie mit der Optimierung beginnen, wiederholen Sie den Zyklus immer wieder , bis Sie Ihre Optimierungsanforderungen erfüllen. Ich habe diesen Kerl modifiziert etwas aus Pythons Dokumentation stammt. Gehen Sie also gerne auf ihre Website und lesen Sie eine Menge mehr über verschiedene Möglichkeiten zur Optimierung. Und wieder werde ich mich in diesem Kurs nur auf eine wirklich, wirklich kleine Teilmenge konzentrieren, wie Sie Ihren Python-Code optimieren können. 4. Wann zu optimieren: Wir haben über Schritte zur Optimierung gesprochen, aber wann sollten Sie Ihren Code tatsächlich optimieren? Ich habe hier ein paar verschiedene Beispiele , wann Sie Ihren Code optimieren möchten. Lasst uns die also durchreden. Und eines der ersten Male, dass Sie Ihren Code möglicherweise optimieren müssen, ist, wenn Sie mit Big Data-KI arbeiten am längsten mit Big Data-KI arbeiten und mit wirklich kleinen Datensätzen arbeiten. Ich habe Code geschrieben, der für diese Datensätze funktioniert hat. Es gab also Zeiten, in denen ich anfing, auf größere Datensätze zu skalieren denen ich meinen Code nicht so effizient ausführen konnte , wie er es zuvor getan hatte. Sobald Sie also anfangen, sich mit wirklich großen Datensätzen zu beschäftigen, möchten Sie versuchen, Ihren Code so optimal wie möglich zu schreiben . Ein weiterer Grund, warum Sie Ihren Code möglicherweise optimieren möchten , ist, dass Sie eine wiederverwendbare Komponente erstellen. Nehmen wir an, Sie arbeiten an einer bestimmten Funktion und finden heraus , dass dies für andere Leute in Ihrem Team wirklich nützlich ist . Sie haben andere Leute , die genau dasselbe tun wie Sie, und sie könnten diese Funktion auch nutzen. Dies könnte der Fall sein, wenn Sie Ihren Code optimieren möchten , da mehr Leute ihn verwenden und möglicherweise beispielsweise in einem größeren Datensatz ausgeführt werden , dann sehen Sie, ob Sie fortfahren und machen Sie etwas Optimierung für sie. Als Nächstes möchten Sie möglicherweise optimieren, wenn Sie in der Cloud bereitgestellt werden. Wenn Sie also anfangen, Dinge auszuführen und AWS oder Google Cloud zu sagen, diese Ressourcen beim Ausführen nicht kostenlos Dinge auf Ihrem lokalen Laptop. Es spielt keine Rolle, wie langsam sie laufen. Es geht im Grunde darum, wie lange Sie bereit sind zu warten, bis sie die Cloud fertigstellen. Sie haben die zusätzliche Komplexität, tatsächlich für diese Ressourcen bezahlen zu müssen, die Sie verwenden. Damit Ihre Sachen nicht ewig laufen und Sie diese riesige Glocke aufladen, möchten Sie wahrscheinlich versuchen, Ihre Codes zu optimieren und sie so schnell wie möglich laufen zu lassen. Ein weiteres Beispiel dafür, wann Sie möglicherweise optimieren möchten , ist, wenn Sie mit externen Benutzern arbeiten und versuchen, ihnen das bestmögliche Erlebnis zu ermöglichen. Angenommen, Sie haben eine Art Modell erstellt, das auf einer Website eine Vorhersage macht auf einer Website eine Vorhersage und der Benutzer muss mit diesem Modell interagieren. Nun, sie wollen nicht 10 Stunden warten, um eine Antwort von Ihnen auf Ihre Vorhersage zu erhalten. Wenn Sie Leute haben , die auf etwas angewiesen sind , das Sie ihnen zur Verfügung stellen, möchten Sie auf jeden Fall versuchen, Ihren Code zu optimieren und ihn so schnell wie möglich zu machen. Optimierung kommt ins Spiel, wenn Sie versuchen, während eines Proof of Concept schnell zu iterieren. Und wenn Sie an einem Proof-of-Concept arbeiten, haben Sie oft viele verschiedene Methoden oder Techniken, die Sie überprüfen möchten. Und um all dies schnell ausprobieren zu können, muss Ihr Code optimiert werden. Schließlich gibt es ethische Bedenken für einen Code, der sehr lange läuft, auch wenn Sie Ihren Code wirklich hinter den Kulissen in der Cloud laufen lassen , der alles in einem Rechenzentrum irgendwo in läuft Rechenzentren haben einen CO2-Fußabdruck an sie gebunden. Je länger Ihr Code läuft, desto mehr erhöhen Sie den potenziell CO2-Fußabdruck des Rechenzentrums. Wenn Sie sich also der Umwelt bewusst sind , könnte dies auch ein weiterer Grund zur Optimierung sein. 5. Methodenübersicht: Wir werden sechs verschiedene Wege durchlaufen , um einen Pandas DataFrame zu durchlaufen. Wir beginnen mit der langsamsten Version und arbeiten uns bis zur schnelleren Version hoch. Also werden wir für Schleifen abdecken. Es entstand es oder Tupel, ein Listenverständnis, wenden Anweisungen und Vektorisierung mit Pandas-Serien an. Und wenn Sie nicht wissen, was das bedeutet, ist das in Ordnung. Wir werden heute alles in diesem Kurs behandeln. 6. Ein Jupyter Notebook laden: In Ordnung, also habe ich meine IDE geöffnet, die PyCharm ist. Und was ich getan habe, ist bereits ein Projekt-TA für diese Klasse zu erstellen . Ich habe einen Ordner für die Daten, habe mein Jupyter Notebook drin sowie meine requirements.txt Datei, die die gesamte Bibliothek enthält , die wir verwenden werden. Auch hier können Sie jede Entwicklungsumgebung nutzen , die für Sie funktioniert. Vielleicht ist das VS-Code, vielleicht du, diese Spinne spielt keine Rolle. Wir werden das einfach für unsere Akten verwenden und dann von hier aus ein Jupiter-Notizbuch öffnen. Eine der Best Practices, wenn Sie ein Python-Projekt starten, besteht also ein Python-Projekt starten darin, eine virtuelle Umgebung zu erstellen und alle Ihre Bibliotheken dort zu installieren. Ich habe das bereits getan, aber wenn Sie es nicht getan haben, können Sie einfach das Terminal in PyCharm öffnen, ich habe bereits meine ursprüngliche Umgebung eingerichtet und um diese Anforderungen zu installieren, was ich tun würde, ist einfach diese Zeile zu machen hier. Das ist also pip install dash r, sagt ihm, dass wir eine Anforderungsdatei haben und dann den Namen der Anforderungsdatei auflisten. Um unser Jupiter-Notebook hier im Terminal zum Laufen zu bringen, tippe ich einfach Jupyter-Notebook ein. Und das wird anfangen zu beobachten wir mit dem Jupyter Notebook interagieren können. Und hier ist unser lokaler Webserver mit unserem Jupiter-Notebook drin. Ich habe dieses Python-Notizbuch hier. Sie hätten dies plus die Daten und die Anforderungsdatei mit den Bibliotheken von der Kurswebsite herunterladen dies plus die Daten und die Anforderungsdatei mit den können. Ich klicke auf diese Tipps, um ein effizientes Python-Notizbuch zu schreiben , um das zu öffnen, und wir werden loslegen. Alles klar, jetzt, da wir unser Notizbuch haben, lasst uns etwas Code durchgehen. Dieses Notizbuch soll wirklich ein eigenständiges Stück sein, und es gibt eine Menge von dem, was ich in den Folien darin behandelt habe. Fühlen Sie sich also frei Sie nicht zeitlich all diesen Text durchlesen möchten, wenn Sie ein bisschen Motivation dafür wünschen, warum wir unseren Code beschleunigen möchten. kleines Beispiel hier am Anfang, ich habe hier auch eine Notiz, wie man PyCharm herunterlädt wenn Sie keine Entwicklungsumgebung haben und eine haben möchten, empfehle ich auf jeden Fall PyCharm. Sie können diesem Link hier folgen, gehen zu dieser Site und dann können Sie von dort aus Ihr anderes Betriebssystem auswählen. Und ich würde empfehlen, mit der Community-Version zu gehen , weil sie so ziemlich alles enthält , was Sie brauchen würden. Einen Fuß renne ich gerade. Wenn Sie jedoch für ein paar weitere Funktionen bezahlen möchten, haben sie auch eine professionelle Version. Ich werde einige der Dinge überspringen , die ich bereits in den Folien behandelt habe, und lass uns nach unten gehen um mehr über unseren Datensatz zu erfahren. 7. Über die Daten: Wir arbeiten mit dem Nachrichtendatensatz der AG zusammen. Und das ist ein wirklich beliebter Textdatensatz, der über eine Million verschiedene Nachrichtenartikel enthält und ihre Nachrichtenartikeltitel, die Beschreibungen sowie eine Kategoriespalte für und was die verschiedenen Kategorien enthält von den Nachrichtenartikeln sind. Ich habe diesen Datensatz von Kaggle abgerufen, also habe ich hier einen Link gemacht, wenn Sie Angst haben möchten, obwohl es über eine Million Datensätze im Datensatz gibt, werden wir nur ein Beispiel von ihnen verwenden. Was ich hier mache, ist Laden und ein paar Bibliotheken, die wir brauchen werden. Ich lese in dieser train.py CSV. Dies wird unser Datensatz sein, mit dem wir arbeiten werden. Und dann streibe ich 5000 Datensätze von dort aus. Dieser Zufallszustand ist nur eine Zufallszahl , mit der Sie meine Ergebnisse reproduzieren können. Lassen Sie uns das also ausführen und einen Blick auf unseren Datensatz werfen. Sie können also hier sehen, dass wir diese Klassenindexspalte haben. Dies hat eine Kategorie für jeden der Nachrichtenartikel. Wir haben den Titel des Nachrichtenartikels sowie eine Beschreibung des Nachrichtenartikels. In dieser Klasse werden wir uns wirklich nur darauf konzentrieren, den Titel des Nachrichtenartikels zu manipulieren , den Sie diesen Datensatz auch für ein Klassifikationsproblem verwenden können diesen Datensatz auch für ein Klassifikationsproblem , wenn Sie dies möchten. 8. for-Schleife: Heute werden wir also über einen Datenrahmen schleifen. Und es gibt viele verschiedene Möglichkeiten, das zu tun. Eines der wirklich großartigen Dinge, die ich an Python oder wirklich jeder Programmiersprache liebe , ist, dass es keinen einzigen richtigen Weg gibt, ein Problem zu lösen. Sie können zwei Menschen dazu haben, mutig zu sein. 20 Personen finden alle ganz andere Lösungen, die das gleiche Problem lösen. Wir werden also sechs verschiedene Möglichkeiten durchlaufen , um einen Pandas DataFrame zu überqueren. Und wir werden die Anzahl der Zeichen berechnen Anzahl der Zeichen , die im Titel jedes dieser Nachrichtenartikel enthalten sind. Und wir werden sehen, wie sich die Leistung auf jede dieser Methoden auswirkt. Also beginnen wir mit einer der langsamsten Methoden. Und dies ist nur eine grundlegende Vierschleife für Schleifen, wirklich in vielen verschiedenen Sprachen liegen und eine der grundlegendsten Möglichkeiten , über Daten zu iterieren. Wenn Sie also vor Python eine andere Programmiersprache gelernt haben , haben Sie wahrscheinlich zuvor vier Schleifen gemacht. Wie das in Python am Ende aussieht , ist das Folgende für jedes dieser Beispiele. Ich starte einen Timer, um zu verfolgen, wie lange die Beispiele dauern. Beachten Sie nur, dass Sie abhängig den Ressourcen, die Sie auf Ihrem Computer haben, möglicherweise etwas andere Antworten erhalten als ich. Selbst wenn Sie es mehrmals ausführen, erhalten Sie wahrscheinlich andere Antworten. Und deshalb nutzen wir die Zeitbibliothek, um unsere Startzeit zu erhalten. Und dann auch wir in unserer Endzeit und berechnen, wie lange es dauert. Um also einen DataFrame mit einer for-Schleife zu durchlaufen, was wir zuerst tun, temporäre Liste, um die gesamte Anzahl der Zeichen im Titel zu enthalten die gesamte Anzahl der Zeichen im , die wir durchlaufen werden. Die Syntax ähnelt vielen verschiedenen Sprachen. Wir werden sagen, dass ich im Bereich 0 bis zur Länge des DataFrame nur erhalte, wie viele Zeilen sich im DataFrame befinden und herausfinden, was die maximale Zahl ist, die wir zum Iterieren benötigen vorbei. Und wir verwenden I als diese Indexvariable. In der for-Schleife nehmen wir diesen DataFrame, wir machen das. Ich verriegle es. Und dies ist eine Möglichkeit, verschiedene Teile eines Pandas DataFrame zu indizieren und auf verschiedene Teile davon zuzugreifen , die unsere Variable von früher verwendet haben, um zu sagen, auf welchem Element wir uns im DataFrame befinden. Und dann extrahierten wir auch den Titel dieser Spalte und um die Anzahl der Zeichen zu erhalten, tun wir diese Len-Funktion, um die Länge davon zu erhalten. Wir speichern dies in einer Variablen und hängen diese dann an unsere Liste an, die wir zuvor vorübergehend erstellt hatten. Es wird also über jedes Element in unserem DataFrame iterieren , die Länge berechnen, diese an die Liste anhängen und diese Liste schließlich einer neuen Spalte in unserem DataFrame zuweisen . Mal sehen, wie lange das für 5000 Datensätze dauert, und sehen wir uns das Ergebnis an. Für mich hat das ungefähr fünf Sekunden gedauert und je nachdem, wie Ihre Ressourcen auf Ihrem Computer aussehen, erhalten Sie wahrscheinlich eine andere Antwort als ich, und das ist völlig in Ordnung. Also beginnen wir hier mit unserer langsamsten Methode und werden uns dann an den effizienteren Methoden bemühen. Bisher haben wir unsere Ergebnisse hier, wir haben diese neue Kolumne auf unserem DataFrame namens Lengthen. Und das hat die Anzahl der Zeichen, die für jeden dieser Datensätze im Titel enthalten sind . Also drucke ich nur den ersten Virus aus, oh, Aufzeichnungen. Aber das hat dies getan, wenn ich insgesamt 1000 Datensätze habe. 9. Iterrows: Als nächstes haben wir eine Funktion namens iter rows. Dies ist eine Funktion, die spezifisch für Pandas DataFrames ist , und ich lasse Sie über einen DataFrame als Indexserienpaare iterieren. Und die Paare der Indexreihen sind der wichtige Teil , denn hier erzielen wir hier einige unserer Effizienzsteigerungen. Syntax, warum sieht das tatsächlich for-Schleife aus, die wir zuvor geschrieben haben. Es fängt tatsächlich mit einer for-Schleife an. Es sieht so aus, als würden wir diese ITER-Zeilenfunktion anstelle des Bereichs verwenden ITER-Zeilenfunktion anstelle des , um automatisch die Anzahl der Zeilen abrufen zu können , die iteriert werden müssen. Wir müssen das Range-Zeug, das wir vorher gemacht haben, nicht machen. Diesmal benennen wir jedoch zwei Variablen, eine namens Index und dann eine Spaltenzeile, damit wir über die Indizes iterieren können. Und dann haben wir unsere Reihe, und wir nehmen jede Zeile, wir bekommen den Titel für diese Zeile und bekommen dann die Länge davon. Und wir fügen dies auch an unsere Liste ähnlich wie unser vorheriges Beispiel. Weisen Sie diese Liste dann einer neuen Spalte mit dem Namen length zu. Wenn wir das ausführen, können wir sehen, wie lange das dauert, und vergleichen dies mit der ursprünglichen Methode. Es sieht so aus, als hätten wir vorher etwa fünf Sekunden hier und wir haben es auf etwa 1,5 Sekunden reduziert. Und Sie können in unserem DataFrame sehen, dass wir genau die gleiche Antwort erhalten. Finden Sie also einfach eine etwas verändernde Art und Weise, wie wir unseren Code geschrieben haben. Wir haben hier viel Effizienz gewonnen, aber Spoiler-Alarm, wir können es tatsächlich besser machen. 10. Itertuples: Es gibt also eine andere Funktion in Pandas namens itertools und sie ist wirklich ähnlich wie sie entstand, aber anstatt über Indexreihenpaare zu iterieren, und dies erzeugt tatsächlich jede Zeile als benanntes Tupel. Und dort erhalten wir hier die Effizienz. Syntaxweise sieht dem anderen ähnlich aus. Wir müssen keinen Index definieren , da es sich um ein benanntes Tupel handelt, wir definieren einfach unsere Zeilenvariable und dann nennen wir diese df.head sind Tupel, um über jedes Element in unserem DataFrame zu schleifen, ohne einen von das Range-Zeug, das wir in unserem ersten Beispiel gemacht haben. Diesmal nehmen wir also jede Zeile, wir erhalten den Titel, und dann haben wir die Länge davon, um dies an unsere Liste anzuhängen, und wir weisen dieser eine neue Spalte zu. Wenn wir das ausführen und das tatsächlich zu einer Subsekunden-Ergebnisse führt, wenn dies eine ziemliche Verbesserung ist, von dem wir angefangen haben, dass Sie darüber oder Tupel geben , dass Sie es verwenden müssen dieser Punkt-Accessor. Also Rho-Punkt-Titel anstelle dieser Klammer-Notation, die wir mit ITER-Zeilen verwendet haben. Und das Ärgerliche daran ist, dass dies nicht funktioniert wenn Sie Leerzeichen im Namen Ihrer Spalten haben. Um diese Methode zu verwenden, die ich wärmstens empfehlen würde, dass Sie darüber hinweg tun, müssen Sie alle Ihre Spalten umbenennen wenn sie Leerzeichen haben, um dies loszuwerden, was ein wenig nervig sein kann. Aber sobald du geschrieben hast und sobald du das für den Rest deines Lebens hast. In dem Fall, in dem Sie versuchen zu entscheiden, ob ich es benutzen soll, entstand oder Tupel hinein. Empfehlen Sie immer, es oder Tupel zu verwenden , um über einen Datenrahmen zu iterieren. Also eine der schnellsten Möglichkeiten, die du kannst. 11. Comprehension: letzten drei Methoden und ich werde darüber sprechen. Sie sind alle ziemlich ähnlich in der Geschwindigkeit. Und abhängig von Ihrer Situation, in der Sie sich befinden, können Sie möglicherweise eine verwenden oder müssen sie möglicherweise dort abholen. Im nächsten Schritt haben wir Listenverständnis. Listenverständnis bietet nur eine kürzere Syntax zum Erstellen einer neuen Liste basierend auf Werten aus einer vorhandenen Liste. Und das ist spezifisch für Python, glaube ich so. Sie haben das vielleicht nicht in anderen Sprachen vor ihm gesehen. Die Syntax kann ein bisschen verwirrend sein. Ich weiß, als ich anfing, Listenverständnisse zu lernen, mich irgendwie umgehauen. Wirklich schwer für mich zu verstehen. Wenn Sie einmal anfangen, sie ein paar Mal zu sehen, Sie sich mit ihnen sehr wohl und sehen dann , wo Sie sie oft in Ihrem Code verwenden können. Eigentlich ist es, was ich gerne mit einem Listenverständnis mache , ist, mit der for-Schleife zu beginnen , dort zu lesen und dann zu dem zurückzukehren, was am Anfang des Listenverständnisses passiert. Also hier sagen wir, dass x in unserem DataFrame-Spaltentitel die Länge jedes Exits erhält. Wir verwenden dies also als Liste und im Grunde sagen wir, dass unsere ursprüngliche Spalte eine Liste war, und dann werden wir die Länge davon abrufen und diese als neue Liste speichern. Wir machen das alles in einer Zeile, also ist es ein bisschen einfacher und kompakter als diese anderen Methoden, über die wir bisher gesprochen haben. Und das macht tatsächlich eine Liste für uns, sodass wir nicht wie wir es getan haben und andere Szenarien an die Liste anhängen müssen. Wir nehmen unsere Liste und weisen sie dann einer neuen Spalte zu, und wir können diese ausführen und sehen, wie lange das dauert. Und wieder ist das etwas schneller. Das Ende, der Ansatz der ITER-Tupel, den wir zuvor gemacht haben. Aber manchmal gibt es eine Menge komplizierter Dinge, die Sie möglicherweise tun müssen, um Text zu schreiben oder mit welchen Daten Sie arbeiten. Und es passt nicht ganz perfekt in ein Listenverständnis. Es gibt also Zeiten, in denen Sie dies und andere Zeiten verwenden können , in denen es sinnvoll sein könnte , die nächste Methode zu verwenden, die angewendet wird. 12. Geltend: Fly ist spezifisch für Pandas DataFrames. Und was es tut, ist, dass Sie eine Funktion entlang einer Achse eines DataFrame anwenden können . Und was das bedeutet, ist, dass ich eine Funktion auf alle meine Spalten oder alle meine Zeilen anwenden kann . Und so wie ich es meistens verwende, werde ich eine Funktion auf alle Zeilen in meinem DataFrame anwenden. Oft verwenden Sie apply with Lambda-Anweisungen, um Inline-Funktionen zu erstellen. So wie das in Python aussieht, ist wir herausfinden, welche Spalte wir manipulieren möchten. In diesem Fall ist es unser Titel unseres DataFrame. Wir wenden uns an Punkt und dann machen wir dieses Lambda x mit einem Doppelpunkt und geben ihm dann welche Funktion wir tun wollen. In diesem Fall bekomme ich nur die Länge meines x-Wertes, um die Länge zu erhalten, jeden Titel in unseren DataFrame-Zeilen. Aber sie sind wirklich nett an Appes-Anweisungen ist , dass Sie Ihre eigene benutzerdefinierte Funktion schreiben können, die wir später in ein paar Beispielen sehen werden , und das, anstatt die Länge hier zu setzen, rufst du einfach deine Funktion auf. Es ist also wirklich schön, dass Sie in Ihrer Funktion komplexere Dinge tun können . Und dann rufen Sie einfach die Funktion hier auf und wenden Sie sie auf jede Zeile in Ihrem Datenrahmen an. Wenn wir das also dazu bringen, ist das super, super schnell. Wir haben hier wieder Geschwindigkeiten unter Sekunde auf 5000 Rekorden. Und bewerben ist eine meiner persönlichen bevorzugten Möglichkeiten , Funktionen auf verschiedene Zeilen und meinen DataFrame anzuwenden. Da dies die ist, neige ich dazu, viele Male aus allen Methoden auszuwählen , über die wir sprechen. 13. Vectorization Pandas: Eine letzte Methode zum Durchschleifen über einen DataFrame ist die Vektorisierung mit Pandas-Serien. Dies ist normalerweise der schnellste Ansatz, den Sie für das Durchschleifen bei DataFrame erhalten können. Das Schwierige ist, dass Sie Ihre Daten manchmal nicht im richtigen Format abrufen können , um mit dieser Methode zu arbeiten. Wir haben Glück, dass ich uns in diesem Fall ein Beispiel gegeben habe, in dem das nicht funktioniert. Wir können sehen, wie das funktioniert, aber manchmal können Sie Ihre Daten einfach nicht im richtigen Format abrufen , damit dies funktioniert. Und so können Sie mit der Vektorisierung verschiedene Operationen auf ganze Arrays anstelle jedes Einzelnen anwenden verschiedene Operationen auf ganze Arrays . Für jedes andere Beispiel , das wir bisher durchgemacht haben, durchläuft es jede Zeile in unserem DataFrame. Vektorisierung nimmt die gesamte Spalte und wendet dann eine Transformation auf die Spalte an. Auf diese Weise müssen wir nicht über jedes Element im DataFrame iterieren . Wie das hier in der Praxis aussieht, ist dass wir unsere Kolumne haben, die wir manipulieren möchten. Ich bekomme die String-Version dieser Spalte und erhalte dann die Länge davon. Und wenn wir das laufen lassen, ist das auch ziemlich schnell. Und ich sehe hier, dass es etwas langsamer erscheint als die Apply-Methode. Aber wenn Sie das ein paar verschiedene Male ausführen, erhalten Sie unterschiedliche Ergebnisse. Das sind also alles Subsekunden, also sind wir in ziemlich guter Verfassung. 14. Code-Beispiel 1 – Slowing: Nehmen wir nun all das, was wir hier gelernt haben, und gehen Sie ein paar Codebeispiele durch ein paar Codebeispiele , in denen wir eine langsamere Codeversion haben , und dann werden wir einige Refactorings vornehmen, um es ein bisschen schneller zu machen. In diesem ersten Beispiel werden wir den Titel unserer Nachrichtenartikel durch Kleinbuchstaben m und SMS bereinigen unserer Nachrichtenartikel durch Kleinbuchstaben m und SMS bereinigen oder bestimmte Token aus einem Wörterbuch platzieren und dann Zahlen und Satzzeichen aus den Texten entfernen. Dies sind ziemlich standardmäßige Vorverarbeitungsschritte , die Sie normalerweise tun würden, wenn Sie mit Textdaten zu tun haben. Und ich habe tatsächlich einen Kurs zur Verarbeitung natürlicher Sprache mit Python, der mehrere davon abdeckt, sowie verschiedene Methoden zum Arbeiten mit natürlicher Sprachverarbeitung. Wenn diese also neu für Sie sind, würde ich auf jeden Fall empfehlen, sich diesen Kurs anzusehen und mehr über diese Schritte dort zu erfahren. In unserem Datenordner ist eine andere Sache, die ich aufgenommen habe ein Wörterbuch, das ich mir ausgedacht habe. Es ist nur eine CSV-Akte. Wir haben also zwei Spalten von und bis. Aus der Kolumne hat eine Reihe von Abkürzungen und Großbritannien und NBA, uns und dann hat die beiden Kolumne die vollständig erweiterte Version dieser Abkürzung. Manchmal gibt es Fälle, in denen Sie auf die Abkürzungen erweitern möchten auf die Abkürzungen , die Sie möglicherweise in Ihrem Text haben. Und das ist eine Möglichkeit, dies zu tun. Ich erstelle selbst ein Wörterbuch. Was wir hier machen werden, ist genau das. Wir haben einige Abkürzungen in den Titeln unserer Nachrichtenartikel, die wir auf die Vollversion von ihnen erweitern möchten . In diesem ersten Beispiel werden wir zunächst ein paar Bibliotheken importieren , die wir verwenden werden. Die meisten von ihnen sind nur in der Basis Python und dann verwenden wir Pandas für unsere DataFrames, wie wir es in diesen anderen Beispielen verwendet haben. Also werde ich ein paar Warnungen herausfiltern , die wir bekommen haben, damit es unsere Ausgabe-Plots nicht ohne Vorwarnung durcheinander bringt, Stop-Filterwarnungen machen. Und dann haben wir hier zwei Funktionen , um unsere Texte vorab zu verarbeiten. Die erste ist eine Funktion zum Ersetzen des Wörterbuchs, und wir nehmen hier nur den Titel des Nachrichtenartikels auf. In dieser Funktion laden wir also in unser Wörterbuch und speichern es als DataFrame, wir erstellen eine temporäre Liste, um alle unsere erweiterten oder sauberen Token zu speichern . Und was wir dann tun, ist, unseren Titel unseres Nachrichtenartikels zu nehmen und ihn auf Leerzeichen zu teilen. Das bringt uns also eine Liste von Token, die wir darüber iterieren werden. Also was wir hier machen indem wir jedes unserer Token durchlaufen und prüfen, ob es im Wörterbuch ist, in dem wir es geladen haben. Wenn ja, hängen wir diese erweiterte Version an unsere neue Liste an. Ansonsten hängen Sie einfach das vorherige Token von dort an. Was wir tun, ist, all diese mit dieser Join-Funktion wieder zusammenzuschließen. Und wir trennen diese einfach mit Leerzeichen , so dass es sich um eine einzelne Zeichenfolge anstelle einer Liste von Token handelt. All das ist also ein paar Wörterbuchersatz. Und dann haben wir den zweiten Teil unserer Vorverarbeitung hier. Wir nehmen einen ganzen Datenrahmen auf und diese Funktion und was wir tun, ist tatsächlich eine Faktorisierung, was eine der schnellsten Methoden war, über die wir gesprochen haben, wir sind zuerst Kleinbuchstaben in unseren Texten mit diese Zeichenfolge tiefer in der gesamten Spalte. Und dann ersetzen wir Ziffern durch ein Leerzeichen. Und dann haben wir eine Reihe von verschiedenen Interpunktionen, die wir hier aufgelistet haben, die wir auch durch Leerzeichen ersetzen werden. Nachdem wir all das getan haben, verwenden wir tatsächlich eine Anwendung mit einem Lambda, um diese Wörterbuchersetzungsfunktion aufzurufen und diese auf jede Zeile des DataFrame anzuwenden. Also verwenden wir hier eine Mischung aus einer langsameren Methode sowie einigen schnellen Methoden. Und wir werden hier sehen, wie lange es dauern wird. Ich lade diese Funktionen ein, über die ich gerade gesprochen habe. Und dann geben wir hier , wie wir es tatsächlich so nennen und Titelfunktion vorverarbeiten, unseren gesamten DataFrame ein. Und dann denken Sie daran, dass dies auch den Austausch des Wörterbuchs anwendet , nachdem wir unsere Token bereinigt haben. Wenn wir das also machen, werden wir sehen, wie lange das dauert. Und so auf meiner Maschinennotiz führe ich eine Berichtssoftware aus. Das ist wahrscheinlich der Grund, warum es etwas länger dauert, aber das hat ungefähr zwei Minuten gedauert bis ich mit etwa 5000 Datensätzen lief. Wenn Sie jetzt nur fünftausend Datenpunkte haben, ist das vielleicht gut genug für Sie. Auch hier können Sie an diese verschiedenen Optimierungsschritte zurückdenken . Wir haben unseren Fußurin, wir haben die richtigen Ergebnisse erzielt, und dann denken wir darüber nach, okay, das sinnvoll dass es in meinem Szenario so lange läuft? Bin ich damit einverstanden? Wenn ich also nur diese Analyse nebenbei mache, ist das wahrscheinlich in Ordnung für mich. Aber die Probleme treten normalerweise auf, wenn Sie anfangen, sich mit wirklich großen Datensätzen zu beschäftigen. Auch hier hat dieser Datensatz insgesamt über eine Million Datensätze. Also, wenn wir das für den gesamten Datensatz machen würden und vielleicht zu lange dauern , bis wir geduldig sind und auf uns warten. Damit wir die Ergebnisse hier sehen können, haben wir diese neue Spalte mit dem Titel Clean. Und Sie können hier sehen, dass wir es in Kleinbuchstaben gelegt haben. Wir haben einige Abkürzungen, auf die ich ausgeweitet wurde. Wir haben auch Zahlen und dann jede dieser Interpunktionen losgeworden . 15. Code-Beispiel 2 – Refactored: also zu unserer überarbeiteten Version davon gehen, haben wir dieselben beiden Funktionen, aber wir haben sie etwas anders geschrieben. Anstatt das Wörterbuch jedes Mal zu laden , wenn die Funktion ausgeführt was wir vorher gemacht haben, werden wir es tatsächlich einmal laden und dann an unsere Funktion übergeben. Und dann nehmen wir auch den Titel des Nachrichtenartikels auf, wie wir es vorher bekommen haben. Also hier haben wir unsere ursprüngliche Funktion in Löwen zusammengefasst. Und dies nutzt die Funktionalität von Wörterbüchern sowie die Verwendung des Listenverständnisses. So können Sie hier unten in unserem folgenden Code sehen, wenn wir in unser Wörterbuch laden, führen wir einige Formatierungen durch, um es tatsächlich in einem echten Wörterbuchformat zu erhalten , während es vorher tatsächlich ein DataFrame war. Wenn wir das tun, können wir diese Punkt-get-Funktionalität verwenden , um dies zu tun. Suchen Sie nach oben, um zu sehen, ob das Wort im Wörterbuch existiert. Wenn es die vollständig erweiterte Version zurückgibt, andernfalls das ursprüngliche Wort zurück. Also haben wir die ganze if-sonste-Aussage hier in nur eine einzige Zeile geändert . Und dann ist der Rest davon nur ein Listenverständnis. Also sagen wir für jedes Wort in unserem Titelpunkt-Split, führe diese Funktion aus. Dieser Titelpunktaufteilung erhält nur eine Liste der Token, die sich im Titel befinden, basierend auf dem Leerzeichen. Also, und dann durchlaufen wir jeden von diesen und führen dann diese Wörterbuchfunktion aus. Nachdem wir unsere gesamte Liste zurückerhalten haben, haben wir diese als einzelne Zeichenfolge mit der Join-Funktion wieder zusammengefügt . Als Nächstes haben wir diesmal unsere Vorverarbeitungsfunktion Anstatt einen ganzen DataFrame zu übernehmen und Operationen für den gesamten DataFrame durchzuführen, Operationen für den gesamten DataFrame durchzuführen, werden wir diese einfach für den Titel selbst machen und später anwenden um dies anzuwenden. Also hier haben wir die gleichen paar Dinge , die wir vorher gemacht haben. Wir machen unser unteres Gehäuse mit niedrigerem Titelpunkt. Diesmal ersetzen Sie Ziffern durch die 3D-Bibliothek, die etwas schneller ist als der Ansatz, den wir zuvor gemacht haben. Und dann entfernen wir hier auch alle Interpunktionen. Dies mag etwas kompliziert aussehen, aber was wir hier tun, ist Verwendung dieser Übersetzungsfunktion, eine Funktion, die Sie für Strings aufrufen können. Und dann würden wir diesen str-Punkt make trans verwenden , um einige Transformationen durchzuführen. Hier werden Sie feststellen, dass wir String-Punkt-Interpunktion haben. Die String-Bibliothek ist wirklich nett, weil sie bereits eine Liste aller verschiedenen Interpunktionen für uns berechnet hat. Wir müssen sie also nicht alle auflisten wie zuvor. So ersetzt letztendlich ehrgeizig alle Interpunktionen durch Leerzeichen. Und um ehrlich zu sein, habe ich das nicht selbst geschrieben. Ich ging zu meinem alten Freund Google und fand einen Beitrag auf Stack Overflow, verschiedene Möglichkeiten zum Entfernen der Interpunktion diskutiert wurden und welcher Weg der schnellste war. Ich habe das gefunden und kopiere es einfach in dieses Notizbuch und es funktioniert hervorragend für unsere Situation. Das ist also nur eine kurze Erinnerung daran, dass Sie nicht wissen müssen, wie Sie alles optimieren können, ist völlig normal, um Ressourcen wie Google und StackOverflow nicht zu verwenden Ressourcen wie Google und StackOverflow um den optimalen Weg zu finden, etwas zu tun. Lassen Sie uns nun fortfahren, um diese Funktionen tatsächlich anzuwenden und sehen, Sie werden hier sehen, dass wir unser Wörterbuch nur einmal laden , ursprünglich schien es sinnvoll zu sein, dies die Funktion, da es mit dem zusammenhängt, was wir taten, aber es öffnete sich jedes Mal, wenn diese Funktion aufgerufen wurde. Das müssen wir nicht tun. Wir können es einfach einmal laden und es in diesem Wörterbuchformat abrufen und dann an unsere Funktion übergeben. Um diese Funktionen tatsächlich anzuwenden, verwenden wir Apply-Anweisungen mit einer Lambda-Funktion, um diese Inline-Funktion aufzurufen. Hier nehmen wir den DataFrame-Spaltentitel. Wir verwenden diese Anwendung mit lambda x und rufen dann unsere Vorverarbeitungsfunktion auf. Jetzt ist dies die fortgeschrittenere Version dessen worüber ich früher gesprochen habe, in der wir nur Lambdas benutzt um die Länge des Titels aufzurufen. Dieses Mal rufen wir tatsächlich unsere eigene benutzerdefinierte Funktion auf, was wirklich nett ist. Also normalerweise so, wie ich Dinge gerne mache. Und nachdem wir unseren Text vorverarbeitet haben und das nächste, was wir tun können, rufen Sie unseren Wörterbuchersatz und ersetzen Sie all diese Instanzen. Und wenn wir also rennen, dauert dies tatsächlich weniger als eine Sekunde. Also sind wir von etwa zwei Minuten zuvor auf weniger als eine Sekunde hier gegangen , was verrückt ist, indem wir einfach die Art und Weise, wie wir unseren ursprünglichen Code geschrieben haben, neu geschrieben haben. Sie werden hier sehen, dass ich diese neue Spalte namens title clean version 2 gespeichert habe. Und das gibt uns genau das gleiche Ergebnis , das wir zuvor erhalten haben. 16. Code-Beispiel 2 – Slowing: Gehen Sie also zu unserem nächsten Beispiel fort. Nehmen wir an, in diesem Beispiel möchten wir, dass ich die Anzahl der Token zähle, die im Titel des Nachrichtenartikels enthalten sind. Aber um als Token betrachtet zu werden, werden wir ein paar Bedingungen haben , die wahr sein müssen. Wir werden alle unsere Token lemmatisieren , um sie in ihre Wurzelform zu bringen. Und diese lemmatisierten Token müssen eins sein, größer als ein Zeichen sein, um kein Stoppwort zu sein. Und drittens, seien Sie im Natural Language Toolkit, Vokabular. All das ist eine Art neue Terminologie für Sie. Ich würde Ihnen empfehlen, sich meinen anderen Kurs, die Verarbeitung natürlicher Sprache in Python, anzusehen , wo wir tief in das eintauchen, was es bedeutet, zu lemmatisieren, ob Stoppwörter, was ein Vokabular ist, all diese Terminologie. Um diese Regeln tatsächlich in Python zu implementieren, können wir dies tun indem wir einige Bibliotheken importieren, die wir benötigen, hauptsächlich NLTK, nämlich Natural Language Toolkit und Pandas. NLTK hat also eine Liste von Stoppwörtern und hat dann seine eigene Lemmatisierung, die wir tun werden. Wenn Sie das zum ersten Mal ausführen, müssen Sie diese möglicherweise herunterladen und ich habe sie bereits heruntergeladen, also sollte es einfach für mich überspringen, wenn ich es ausführe. Wir haben diese Funktion hier, die Zähl-Token in NLTK-Vocab genannt wird, und sie nimmt eine Zeichenfolge innerhalb der Funktion wir unser WordNet Lemmatisiert von NLTK aufrufen. Und dann richten wir einen Zähler ein. Wir fangen hier mit nur einer einfachen for-Schleife an. Und wir teilen unsere Zeichenfolge wieder auf Leerzeichen, ähnlich wie bei unseren anderen Beispielen. Das bringt uns eine Liste von Token und wir werden über jedes dieser Token iterieren. Ähm, also für jedes Token in unserer Liste wird das Token lemmatisiert. Und wenn die Länge der Token größer als eins ist, ist es nicht in unseren Stoppwörtern und es ist in unserem Vokabular, dann erhöhen Sie den Zähler und dies wird die Anzahl der Token zurückgeben , die diese Kriterien erfüllen. Lasst uns die aufladen. Sie können hier sehen, dass ich diese NLTK-Elemente bereits heruntergeladen habe , aber es kann eine Sekunde dauern, bis Sie heruntergeladen werden. Als Nächstes lösche ich den DataFrame, mit dem wir früher gearbeitet haben, und stattdessen habe ich nur 50 Datensätze gesampelt, da Spoiler-Alarm, diese Methode eine ganze Weile dauert. Und wenn wir 5000 Schallplatten machen würden würde ich nicht wollen, dass wir hier sitzen. Also sparen wir uns hier etwas Zeit und löschen diese aus und laden sie mit nur 50 neu in einen DataFrame. Um diese Funktion zuerst anzuwenden, werden wir die Vorverarbeitung, die wir in unserem ersten Beispiel durchgeführt haben, sowie unseren Wörterbuchersatz anwenden die wir in unserem ersten Beispiel durchgeführt haben, . Jetzt verwenden wir eine der schnelleren Methoden, um diese Funktion auf unsere Titelbereinigungsspalte anzuwenden. Mal sehen, wie lange es dauert, bis es dauert. Ordnung, also dauerte das für mich ungefähr drei Minuten, was wahrscheinlich nicht akzeptabel ist, was wahrscheinlich nicht akzeptabel ist wenn man bedenkt, dass dies nur 50 Aufzeichnungen sind. Also lasst uns sehen, was die Ergebnisse hier wo sind. Wenn Sie sich also nur die ersten fünf Datensätze in unserem DataFrame ansehen, können Sie hier sehen, dass wir die Anzahl der Token haben , die bestimmte Kriterien erfüllen. 17. Code-Beispiel 2 – Refactored: Nun zur überarbeiteten Version davon werden wir die Funktion, die wir zuvor geschrieben haben, tatsächlich loswerden und sie stattdessen auf eine etwas andere Weise verwenden. Wir behalten die ersten beiden Dinge, die wir aus unserem vorherigen Beispiel gemacht haben, Vorverarbeitung und Austausch unseres Wörterbuchs. Was wir hier auch getan haben, ist, das Wort net lemmatisiert und die Stoppwörter und das Vokabular aus der Funktion herauszunehmen lemmatisiert und die Stoppwörter und das . Und wir rufen diese nur an, damit sie nicht jedes Mal neu erstellt werden , wenn die Funktion aufgerufen wird. Jetzt passiert hier die Magie. Wir haben hier eine Apply-Erklärung, wo das Lambda mit einem Listenverständnis ist. Lassen Sie uns das aufschlüsseln, denn es scheint zunächst etwas kompliziert zu sein. Was ich normalerweise gerne nochmal mache, wenn ich mir Listenverständnisse anschaue, beginne wo die for-Schleife passiert, lese all das rechts und gehe dann zurück zu dem, was auf der Linke Seite davon. Also hier wenden wir diesen Vorgang auf unseren gesamten DataFrame in unserer Spalte „Titel Clean“ an. In diesem Fall ist das also unser Ausgang. Für jedes Element, über das wir iterieren, werden wir das auf den Leerraum teilen. Das gibt uns also eine Liste von Token ähneln, was wir in früheren Beispielen gemacht haben. Und dann werden wir einige andere Bedingungen überprüfen. Wir werden sicherstellen, dass das lemmatisierte Token größer als ein Zeichen ist. Es ist nicht in unseren Stoppwörtern und es ist in unserem NLTK-Vokab, wenn all diese Kriterien erfüllt sind, werden wir nur dieses Token zurückgeben. Dies alles ist in ein Listenverständnis eingeschlossen. Denken Sie daran, also werden wir eine Liste von Token haben , die diese Kriterien erfüllen. Und dann können wir einfach die Länge der Liste ermitteln. Und das sollte uns das gleiche Ergebnis liefern wie das , was wir auf der vorherigen Folie hatten. Wenn wir das ausführen, gehen wir wieder von fast drei Minuten auf weniger als eine Sekunde zurück, was großartig ist, es zu sehen. In unserem Code hier sehen Sie, dass wir genau die gleiche Antwort erhalten wie bei der vorherigen Version. Und wir haben dabei so viel Zeit gespart. Das schließt diesen Kurs mit Tipps zum Schreiben von effizientem Python ab. Hoffentlich haben Sie ein paar Techniken gelernt wie Sie Pandas, DataFrames und auch einige Vorverarbeitung unterwegs durchlaufen können. Und das kratzt wirklich nur an der Oberfläche dessen, was Sie mit der Optimierung Ihres Codes in Python tun können . Wenn Sie mit Agar-Daten umgehen, gibt es auch Wenn Sie mit Agar-Daten umgehen, andere Tools und Bibliotheken wie Hadoop und VAX, die Ihnen helfen können, mit Ihren Big Data umzugehen. Vielen Dank, dass Sie diese Lektion verfolgt haben, und ich freue mich darauf, Sie in der nächsten zu sehen.