In diesem Artikel werden wir die Grundlagen von Python behandeln. Wir nähern uns dem Ziel immer mehr. Im Allgemeinen werden wir bald mit den Hauptbibliotheken für Data Science zusammenarbeiten und TensorFlow verwenden (zum Schreiben und Bereitstellen neuronaler Netze werden Sie Deep Learning verstehen).
Installation
Python kann von python.org heruntergeladen werden. Wenn es jedoch noch nicht installiert ist, dann stattdessen
Ich empfehle das Anaconda-Distributionspaket, das bereits die meisten Bibliotheken enthält, die für die Arbeit im Bereich der Datenwissenschaft benötigt werden.
Wenn Sie die Anaconda-Distribution nicht verwenden, müssen Sie den pip-Paketmanager installieren, der die Installation von Paketen von Drittanbietern vereinfacht, da wir einige davon benötigen. Es lohnt sich auch, die viel benutzerfreundlichere interaktive IPython-Shell zu installieren. Beachten Sie, dass die Anaconda-Distribution mit pip und IPython geliefert wird.
Leerzeichen
Viele Programmiersprachen verwenden differenzierende Codeblöcke.
Zahnspangen. Einrückung wird in Python verwendet:
Dies macht den Code leicht lesbar, folgt aber gleichzeitig der Formatierung. Das Leerzeichen in Klammern und eckigen Klammern wird ignoriert, was das Schreiben ausführlicher Ausdrücke erleichtert:
und einfach zu lesender Code:
Um die Anweisung fortzusetzen, wird der Backslash in der nächsten Zeile verwendet. Ein solcher Datensatz wird jedoch selten verwendet:
two_plus_three = 2 + \ 3
Das Formatieren von Code mit Leerzeichen erschwert das Kopieren und Einfügen von Code in die Python-Shell. Versuchen Sie beispielsweise, den folgenden Code zu kopieren:
for i in [ 1, 2, 3, 4, 5] :
In die Standard-Python-Shell wird ein Fehler ausgegeben:
Denn für den Interpreter gibt eine leere Zeichenfolge das Ende eines Codeblocks mit einer for-Schleife an.
IPython verfügt über eine magische Funktion "% Einfügen", die alles in der Zwischenablage korrekt einfügt, einschließlich Leerzeichen.
Module (Importieren von Bibliotheken)
Einige Python-basierte Programmierumgebungsbibliotheken werden standardmäßig nicht geladen. Damit diese Tools verwendet werden können, müssen Sie die Module importieren, die sie enthalten.
Ein Ansatz besteht darin, das Modul selbst einfach zu importieren:
import re my_regex = re.compile ("[0-9]+",re.I)
Hier ist
re der Name des Moduls, das Funktionen und Konstanten für die Arbeit mit regulären Ausdrücken enthält. Wenn Sie das gesamte Modul auf diese Weise importieren, können Sie auf Funktionen zugreifen, indem Sie ihnen das Präfix re voranstellen.
Wenn der Code mit dem Namen re bereits im Code vorhanden ist, können Sie den Modulalias verwenden:
import re as regex my_regex = regex.compile("[0-9)+",regex.I)
Der Alias wird auch in Fällen verwendet, in denen das importierte Modul einen umständlichen Namen hat oder wenn das Modul häufig auf das Modul zugreift.
Wenn Sie beispielsweise Daten basierend auf dem
matplotlib- Modul visualisieren, ist dies normalerweise der
FallVerwenden Sie den folgenden Standardalias:
import matplotlib.pyplot as plt
Wenn Sie mehrere spezifische Werte aus dem Modul abrufen müssen, können Sie diese explizit importieren und ohne Einschränkungen verwenden:
from collections import defaultdict , Counter lookup = defaultdict(int) my_counter = Counter()
Funktionen
Eine Funktion ist eine Regel, die null oder mehr Eingabeargumente akzeptiert und das entsprechende Ergebnis zurückgibt. In Python werden Funktionen normalerweise mit der def-Anweisung definiert:
def double() : """, , docstring, , . , 2""" return * 2
Funktionen in Python werden als erstklassige Objekte behandelt. Dies bedeutet, dass sie Variablen zugewiesen und wie andere Argumente an andere Funktionen übergeben werden können:
Darüber hinaus können Sie problemlos kurze anonyme Funktionen oder Lambda-Ausdrücke erstellen:
= apply_to_one(lambda : + 4)
Lambda-Ausdrücke können Variablen zugewiesen werden. Es wird jedoch empfohlen, den Operator def zu verwenden:
another double = lmbd : 2 *
Darüber hinaus können Sie Standardargumente an Funktionsparameter übergeben, die nur angegeben werden sollten, wenn ein anderer als der Standardwert erwartet wird:
def my_print (message="oe " ): print (message ) my_print ( "pe")
Manchmal ist es ratsam, Argumente nach Namen anzugeben:
In Zukunft werden Funktionen sehr häufig verwendet.
Linien
Zeichenfolgen (oder Zeichenfolgen) auf beiden Seiten sind auf einfache oder doppelte Anführungszeichen beschränkt (sie müssen übereinstimmen):
single_quoted_string = ' '
Der Backslash wird zum Codieren von Sonderzeichen verwendet. Zum Beispiel:
tab_string = "\t"
Wenn Sie den Backslash selbst benötigen, der direkt auftritt
In den Verzeichnisnamen des Windows-Betriebssystems können Sie dann mit r '"' eine
unformatierte Zeichenfolge erstellen:
not_tab_string = r"\t"
Mehrzeilige Textblöcke werden mit Triple Single (oder erstellt)
doppelte) Anführungszeichen:
multi_line_string = """ . """
Ausnahmen
Wenn etwas schief geht, löst Python eine Ausnahme aus. Nicht behandelte Ausnahmen führen dazu, dass das Programm unerwartet gestoppt wird. Ausnahmen werden mit
try- und
Except- Anweisungen behandelt :
try: print (0 / 0) except ZeroDivisionError : rint ( " ")
Obwohl in vielen Programmiersprachen die Verwendung von Ausnahmen als schlechter Programmierstil angesehen wird, gibt es in Python keinen Grund zur Sorge, wenn damit der Code sauberer wird, und manchmal werden wir genau das tun.
Listen
Die wahrscheinlich wichtigste Datenstruktur in Python ist eine Liste. Dies ist nur eine geordnete Sammlung (oder Sammlung), ähnlich einem Array in anderen Programmiersprachen, jedoch mit zusätzlichen Funktionen.
integer_list = [1, 2, ]
Sie können den Wert festlegen und mit eckigen Klammern auf das n-te Element der Liste zugreifen:
= list(range (10))
Darüber hinaus werden eckige Klammern verwendet, um Listen zu „schneiden“:
first_three = [:]
Python hat eine ln-Anweisung, die prüft, ob ein Element zu einer Liste gehört:
1 ln [1, 2, 3]
Die Prüfung besteht darin, alle Elemente einzeln zu betrachten. Sie sollten sie daher nur verwenden, wenn bekannt ist, dass die Liste klein ist oder es keine Rolle spielt, wie lange die Prüfung dauert.
Listen lassen sich leicht miteinander verketten:
= [1, 2, 3] . extend ( [ 4, 5, 6] )
Wenn Sie die Liste x unverändert lassen möchten, können Sie Listen hinzufügen:
= [1, 2, 3] = + [4, 5, 6]
Normalerweise wird ein Element in einer Operation zu Listen hinzugefügt:
= [1, 2, 3] x.append (0)
Es ist oft praktisch, eine Liste zu entpacken, wenn Sie wissen, wie viele Elemente sie enthält:
, = [1, 2]
Wenn die Anzahl der Elemente auf beiden Seiten des Ausdrucks nicht gleich ist, wird eine ValueError-Fehlermeldung angezeigt.
Für einen verworfenen Wert wird normalerweise ein Unterstrich verwendet:
_, = [1, 2]
Tupel
Tupel sind unveränderliche (oder unveränderliche) Cousins von Listen.
Fast alles, was mit einer Liste gemacht werden kann, ohne Änderungen daran vorzunehmen, kann mit einem Tupel gemacht werden. Anstelle von eckigen Klammern wird ein Tupel mit runden Klammern angezeigt, oder sie können überhaupt auf sie verzichten:
my_list = [1, 2]
Tupel bieten eine bequeme Möglichkeit, mehrere Werte von Funktionen zurückzugeben:
Tupel (und Listen) werden auch in mehreren Zuordnungen verwendet:
, = 1, 2
Wörterbücher
Ein Wörterbuch oder eine assoziative Liste ist eine weitere grundlegende Datenstruktur.
Darin sind die Werte mit Schlüsseln verknüpft, sodass Sie den Wert, der einem bestimmten Schlüssel entspricht, schnell abrufen können:
empty_dict = {}
Auf den Schlüsselwert kann in eckigen Klammern zugegriffen werden:
rigory_aleksee = grades[ "Grigoriy"]
Wenn Sie versuchen, einen Wert anzufordern, der nicht im Wörterbuch enthalten ist, wird eine KeyError-Fehlermeldung angezeigt:
try: kates_grade = grades [ "Kate "] except eyError: rint ( " ! " )
Sie können mit dem Operator in nach einem Schlüssel suchen:
grigoriy_has_grade = "Grigoriy" in grades
Wörterbücher verfügen über eine get () -Methode, die bei der Suche nach einem fehlenden Schlüssel anstelle einer Ausnahme den Standardwert zurückgibt:
grigoriy_grade = grades. get ( "Grigoriy ", 0)
Die Schlüsselwertzuweisung erfolgt in denselben eckigen Klammern:
grades [ "Tim" ] = 99
Wörterbücher werden häufig als einfache Möglichkeit zur Darstellung von Strukturen verwendet
Daten:
tweet = { "user" : " grinaleks", "text" : " - ", " retweet_count" : 100, "hashtags " : [ "# data", " #science", " #datascience " , " #awesome", "#yolo" ] }
Neben der Suche nach einzelnen Schlüsseln können Sie jeden gleichzeitig kontaktieren:
tweet_keys = tweet.keys()
Schlüssel müssen unveränderlich sein; Insbesondere können Listen nicht als Schlüssel verwendet werden. Wenn Sie einen zusammengesetzten Schlüssel benötigen, ist es besser, ein Tupel zu verwenden oder eine Möglichkeit zu finden, den Schlüssel in eine Zeichenfolge zu konvertieren.
Standardwörterbuch
Lassen Sie das Dokument die Wörter zählen. Die offensichtliche Lösung des Problems besteht darin, ein Wörterbuch zu erstellen, in dem die Schlüssel Wörter sind und die Werte die Häufigkeit von Wörtern (oder die Anzahl der Vorkommen von Wörtern im Text) sind. Wenn sich das aktuelle Wort während der Wortprüfung bereits im Wörterbuch befindet, erhöht sich seine Häufigkeit, und wenn es nicht vorhanden ist, wird es dem Wörterbuch hinzugefügt:
Darüber hinaus können Sie eine Methode namens "Es ist besser, um Vergebung als um Erlaubnis zu bitten" nutzen und den Fehler abfangen, wenn Sie versuchen, auf den fehlenden Schlüssel zuzugreifen:
word_ counts = { } for word in document : try: word_counts [word] += 1 except eyError : word_counts [word] = 1
Der dritte Trick besteht darin, die Methode get () zu verwenden, mit der die Situation mit fehlenden Schlüsseln ordnungsgemäß überwunden wird:
word_counts = { } for word in document : previous_count = word_counts.get (word, 0) word_counts [word] = previous_count + 1
Alle diese Techniken sind etwas umständlich. Aus diesem Grund ist es ratsam, das defaultdict-Wörterbuch (das auch als Wörterbuch mit dem Standardwert bezeichnet wird) zu verwenden. Mit Ausnahme einer Funktion sieht es wie ein normales Wörterbuch aus. Wenn Sie versuchen, auf einen Schlüssel zuzugreifen, der nicht darin enthalten ist, wird zunächst mithilfe der Funktion ohne Argumente ein Wert hinzugefügt, der beim Erstellen bereitgestellt wird. Um defaultdict-Wörterbücher zu verwenden, müssen Sie sie aus dem Sammlungsmodul importieren:
from collections import defaultdict word_counts = defaultdict(int)
Darüber hinaus ist die Verwendung von Standardwörterbüchern bei der Arbeit mit Listen, Wörterbüchern und sogar mit benutzerdefinierten Funktionen von praktischem Nutzen:
dd_list = defaultdict (list)
Diese Funktionen werden benötigt, wenn Wörterbücher für die „Sammlung“ verwendet werden.
Ergebnisse für einen bestimmten Schlüssel und wenn es notwendig ist, Duplikate zu vermeiden
prüft, ob ein Schlüssel im Wörterbuch vorhanden ist.
Zählerwörterbuch
Eine Unterklasse von Gegenwörterbüchern wandelt eine Folge von Werten in ein defaultdict (int) -ähnliches Objekt um, bei dem die Tasten Frequenzen zugeordnet werden oder genauer gesagt, die Tasten in der Frequenz angezeigt (zugeordnet) werden.
Es wird hauptsächlich beim Erstellen von Histogrammen verwendet:
from collections import Counter = Counter([0,1,2,0])
Seine Funktionalität macht es einfach genug, das Problem des Zählens von Worthäufigkeiten zu lösen:
Das Zählerwörterbuch verfügt über die Methode most_common (), die häufig nützlich ist:
Viele
Die Menge oder Satzdatenstruktur ist eine Sammlung ungeordneter Elemente ohne Wiederholungen:
s = set ()
Viele werden aus zwei Gründen verwendet. Erstens ist der Betrieb an Sets sehr schnell. Wenn Sie eine große Menge von Elementen auf Zugehörigkeit zu einer bestimmten Sequenz überprüfen müssen, ist die eingestellte Datenstruktur dafür besser geeignet als eine Liste:
Der zweite Grund besteht darin, eindeutige Elemente in den Datensatz aufzunehmen:
item_list = [1, 2, 3, 1, 2, 3]
Viele werden viel seltener verwendet als Wörterbücher und Listen.
Kontrollstrukturen
Wie in den meisten anderen Programmiersprachen können Aktionen nach Bedingungen mit der if-Anweisung ausgeführt werden:
if 1 > 2: message " 1 2 . . . " elif 1 > 3: message "elif 'else if '" else: message = " , else "
Darüber hinaus können Sie den einzeiligen dreifachen if-then-else-Operator verwenden, der manchmal später verwendet wird:
parity = "" if % 2 === else " "
Python hat eine ganze Schleife:
= 0 while < 10: print (x, " 10") += 1
Die for-Schleife wird jedoch häufiger mit dem in-Operator verwendet:
for in range (lO) : print (x, " 10" ) 51
Wenn Sie eine komplexere Regelungslogik benötigen, können Sie die Operatoren verwenden
continue break: for 1n range (10) : 1f == 3: continue
Infolgedessen werden 0, 1, 2 und 4 gedruckt.
Wahrhaftigkeit
Boolesche Variablen in Python funktionieren genauso wie in den meisten anderen Programmiersprachen, mit nur einer Ausnahme: Sie werden groß geschrieben:
one_is_less_than_two = 1 < 2
Um einen nicht vorhandenen Wert anzugeben, wird ein spezielles None-Objekt verwendet, das in anderen Sprachen null entspricht:
= None print (x == None )
Python kann jeden Wert verwenden, bei dem ein boolescher boolescher Typ erwartet wird. Alle folgenden Elemente haben den Booleschen Wert False:
- Falsch .
- Keine
- set () (set):
- [] (leere Liste);
- {} (leeres Wörterbuch);
So ziemlich alles andere wird als wahr angesehen. Dies macht es einfach, if-Anweisungen zu verwenden, um nach leeren Listen zu suchen. leere Zeilen, leere Wörterbücher usw. Manchmal führt dies jedoch zu schwer erkennbaren Fehlern, wenn Sie Folgendes nicht berücksichtigen:
s = some_function_that_returns_a_string ()
Hier ist eine einfachere Möglichkeit, dasselbe zu tun:
first_char = s and s [0]
weil der logische Operator und den zweiten Wert zurückgibt, wenn der erste wahr ist, und den ersten Wert, wenn er falsch ist. Wenn x im folgenden Ausdruck entweder eine Zahl oder möglicherweise Keine ist, ist das Ergebnis in ähnlicher Weise eine Zahl:
safe = or 0
Die in Python integrierte Funktion all nimmt eine Liste und gibt True nur zurück, wenn jedes Listenelement true ist, und die integrierte Funktion true gibt true zurück, wenn mindestens ein Element true ist:
all ( [True, 1, { 3 }])