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.