# Bibliotheken importieren
import numpy as np # Für numerische Operationen
import pandas as pd # Für Datenmanipulation und -analyse
import altair as alt # Für Datenvisualisierung
10 Grundlagen
Dieses Kapitel bietet eine Einführung in die grundlegenden Konzepte von Python, die für Data Science und KI essentiell sind. Für eine praktische Lernerfahrung kann das gesamte Kapitel als Jupyter Notebook heruntergeladen werden:
⬇️ Jupyter Notebook herunterladen
Nach dem Herunterladen kann das Notebook im code
Ordner gespeichert und in Jupyter Notebook geöffnet werden.
10.1 Bibliotheken importieren
In Python erweitern Pakete und Bibliotheken die Funktionalität der Sprache. Sie werden am Anfang des Skripts importiert, üblicherweise als erster Code-Block unterhalb der ersten Markdown-Zelle. Dies hilft, den Code übersichtlich und effizient zu gestalten. Oft werden Aliase (Kurzformen) verwendet, um die Bibliotheken im Code einfacher anzusprechen.
Folgender Code importiert wichtige Data Science-Bibliotheken:
Erklärung der importierten Bibliotheken:
- NumPy (np): Stellt Funktionen für komplexe mathematische Operationen bereit.
- Pandas (pd): Ermöglicht die effiziente Handhabung und Analyse von strukturierten Daten wie Tabellen.
- Altair (alt): Bietet eine intuitive Möglichkeit zur Erstellung von interaktiven Visualisierungen.
10.2 Kommentare einfügen
Kommentare sind ein wichtiges Werkzeug zur Dokumentation des Codes. Sie helfen, den Code verständlicher zu machen und erleichtern die Zusammenarbeit mit anderen Entwicklerinnen und Entwicklern. In Python gibt es verschiedene Möglichkeiten, Kommentare zu nutzen.
10.2.1 Einzeilige Kommentare
Einzeilige Kommentare beginnen mit dem #
-Zeichen:
# Dies ist ein einzeiliger Kommentar
= 5 # Kommentare können auch am Ende einer Codezeile stehen x
10.2.2 Mehrzeilige Kommentare
Für mehrzeilige Kommentare werden oft dreifache Anführungszeichen verwendet.
"""
Dies ist ein
mehrzeiliger
Kommentar
"""
'\nDies ist ein \nmehrzeiliger \nKommentar\n'
10.2.3 Docstrings
Mehrzeilige Kommentare werden auch als “Docstring” (Documentation-String) bezeichnet, wenn sie bspw. direkt nach der Definition einer Funktion stehen:
def example_function():
"""
Dies ist ein Docstring für eine Funktion.
Er beschreibt, was die Funktion tut,
welche Parameter sie akzeptiert
und was sie zurückgibt.
"""
pass
Durch die Verwendung von Docstrings wird der Code nicht nur für Menschen lesbarer, sondern auch für automatisierte Tools zur Dokumentationserstellung zugänglicher. Dies ist besonders in größeren Projekten und bei der Entwicklung von Bibliotheken oder Frameworks von Vorteil.
10.2.4 Code auskommentieren
Kommentare können auch zur temporären Deaktivierung von Code (auch als “auskommentieren” bekannt) genutzt werden.
# Auskommentieren
# x = 5
10.3 Variablen und Datentypen
In der Programmierung spielen Variablen und Datentypen eine zentrale Rolle. Sie bilden das Fundament, auf dem komplexe Analysen und Algorithmen aufbauen.
10.3.1 Variablen
Variablen sind benannte Speicherorte im Arbeitsspeicher eines Computers. Sie dienen dazu, Daten zu speichern und zu manipulieren.
Bei der Benennung von Variablen in Python gibt es einige wichtige Konventionen zu beachten:
Snake Case: Wir verwenden Kleinbuchstaben und trennen Wörter durch Unterstriche. Beispiel:
benutzer_name
,gesamtpreis_mit_rabatt
Beschreibende Namen: Aussagekräftige Namen nutzen, die den Zweck der Variable verdeutlichen (Variablennamen müssen mit einem Buchstaben oder Unterstrich beginnen, nicht mit Zahlen). Gut:
alter_in_jahren
,gesamtpreis
Schlecht:a
,x1
Keine reservierten Wörter: Keine Python-Schlüsselwörter wie
if
,for
,class
verwenden.
Durch Einhaltung dieser Konventionen wird der Code lesbarer und wartbarer, was besonders in größeren Projekten und bei der Zusammenarbeit in Teams wichtig ist.
Beispielsweise können wir eine Variable mit dem Namen alter
erstellen und ihr der Wert 25 zugewiesen.
= 25 alter
In Python können den Variablen ganz unterschiedliche Werte zugewiesen werden:
# Verschiedene Variablen speichern
= "Alice"
name = True
studiert = [1, 2, 3]
zahlen = {"name": "Alice", "alter": 30} person
Um den Inhalt von Variablen anzuzeigen, wird die print()
-Funktion verwendet:
print(alter)
25
Eine Variable kann man sich wie eine beschriftete Box vorstellen, in der Informationen aufbewahrt werden. Der Name der Variable ist die Beschriftung auf der Box, und der Inhalt der Box repräsentiert den Wert der Variable. Dieser Wert kann im Laufe des Programms verändert werden, daher der Name “Variable”.
= 60
alter print(alter)
60
10.3.2 Datentypen
Datentypen bestimmen die Art der Daten, die in einer Variable gespeichert werden können. Sie definieren auch, welche Operationen mit diesen Daten durchgeführt werden können. Python ist eine dynamisch typisierte Sprache, was bedeutet, dass der Datentyp einer Variable automatisch erkannt wird.
Jeder Datentyp hat seine eigenen Eigenschaften und Verwendungszwecke. Zum Beispiel verwendet man “Strings” für Text, “Integer” für ganze Zahlen und “Floats” für Dezimalzahlen. “Listen” und “Dictionaries” sind komplexere Datentypen, die mehrere Werte oder Schlüssel-Wert-Paare speichern können.:
Datentyp | Beschreibung | Beispiel | Verwendung |
---|---|---|---|
String | Textdaten, in Anführungszeichen gesetzt | "Hallo Welt" |
Für Namen, Texte, Sätze |
Integer | Ganze Zahlen ohne Dezimalstellen | 42 , -10 |
Für Zählungen, Indizes, ganze Mengen |
Float | Zahlen mit Dezimalstellen | 3.14 , -0.5 |
Für Messwerte, Berechnungen mit Dezimalstellen |
Boolean | Logische Werte (True oder False) | True , False |
Für Bedingungen, Flags, Zustandsabfragen |
List | Geordnete Sammlung von Elementen, veränderbar | [1, 2, 3] , ['a', 'b', 'c'] |
Für Sequenzen von Daten, geordnete Sammlungen |
Dictionary | Sammlung von Schlüssel-Wert-Paaren | {'name': 'Max', 'alter': 30} |
Für strukturierte Daten, Zuordnungen, Konfigurationen |
Anzeigen des Datentyps in Python:
# Verwendung der type() Funktion
= 42
zahl = "Hallo Welt"
text = 3.14
dezimal = True
logisch = [1, 2, 3]
liste = {"name": "Max", "alter": 30}
wörterbuch
print(type(zahl))
print(type(text))
print(type(dezimal))
print(type(logisch))
print(type(liste))
print(type(wörterbuch))
<class 'int'>
<class 'str'>
<class 'float'>
<class 'bool'>
<class 'list'>
<class 'dict'>
10.4 Operatoren und Berechnungen
Operatoren ermöglichen mathematische und logische Operationen in Python.
10.4.1 Arithmetische Operatoren
Für die folgenden Operationen erzeugen wir zunächst zwei numerische Variablen:
= 10
laenge = 5 breite
Berechnung der Fläche und des Umfangs:
# Multiplikation
= laenge * breite
flaeche # Addition und Multiplikation
= 2 * (laenge + breite)
umfang # Ausgabe der Variable
print(umfang)
30
10.4.2 Vergleichsoperatoren
ist_quadratisch
überprüft, ob die beiden Seiten gleich lang sind:
# Gleichheit überprüfen
= laenge == breite
ist_quadratisch # Ausgabe: Ist es ein Quadrat?
print(f"Ist es ein Quadrat? {ist_quadratisch}")
Ist es ein Quadrat? False
Wir nutzen in dem print()
-Befehl einen sogenannten f-string (formatted string literal), mit dem wir Text und Python-Objekte kombiniert ausgeben können. Das Python-Objekt wird dabei in einer geschwungenen Klammer eingefügt.
10.4.3 Logische Operatoren
ist_grosses_rechteck
verwendet logische Operatoren, um festzustellen, ob das Rechteck sowohl eine große Fläche als auch einen großen Umfang hat (mit Werten, die wir festgelegt haben).
= (flaeche > 20) and (umfang > 10)
ist_grosses_rechteck # Ausgabe
print(f"Ist es ein großes Rechteck? {ist_grosses_rechteck}")
Ist es ein großes Rechteck? True
10.4.4 Arten von Operatoren
Hier eine Übersicht einiger wichtiger Operatoren:
Kategorie | Operatoren | Beschreibung |
---|---|---|
Arithmetische Operatoren | +, -, *, /, // | Addition, Subtraktion, Multiplikation, Division, Ganzzahldivision |
%, ** | Modulo (Rest), Potenz | |
Vergleichsoperatoren | ==, != | Gleichheit, Ungleichheit |
<, >, <=, >= | Kleiner als, Größer als, Kleiner oder gleich, Größer oder gleich | |
Logische Operatoren | and, or, not | Logisches UND, ODER, NICHT |
10.5 Arbeiten mit DataFrames
DataFrames, bereitgestellt durch das Pandas-Paket, sind zentral für die Datenanalyse in Python. Sie organisieren Daten in Zeilen und Spalten, ähnlich einer Tabelle.
# Erstellen eines dictionarys
= {
daten "Zahlen": [1, 2, 3, 4, 5],
"Quadrate": [1, 4, 9, 16, 25]
}# Ausgabe
print(daten)
{'Zahlen': [1, 2, 3, 4, 5], 'Quadrate': [1, 4, 9, 16, 25]}
Das Dictionary daten
enthält zwei Listen: Zahlen und deren Quadrate.
Erstellen eines DataFrame mit Pandas:
= pd.DataFrame(daten) df
Wir nennen den DataFrame df
(dies ist eine gängige Abkürzung für DataFrame). Unser DataFrame wird aus dem Wörterbuch daten
mit der Funktion pd.DataFrame
erstellt, welche die Daten in Zeilen und Spalten organisiert.
Den DataFrame ausgeben (dafür verwenden wir nicht print()
):
# DataFrame anzeigen
df
Zahlen | Quadrate | |
---|---|---|
0 | 1 | 1 |
1 | 2 | 4 |
2 | 3 | 9 |
3 | 4 | 16 |
4 | 5 | 25 |
Das Eingeben von df
in eine Jupyter Notebook-Zelle zeigt den DataFrame in tabellarischer Form an.
10.6 Methoden verstehen
Eine Methode ist eine Funktion, die mit einem Objekt (wie einem DataFrame, einer Liste oder einem String) verknüpft ist und über die Punktnotation (.
) aufgerufen wird. Dies erleichtert die Manipulation des Objekts und das Abrufen von Informationen.
Hier ein Beispiel der String-Methode .upper()
, mit welcher Text in Großbuchstaben ausgegeben werden kann:
# String-Methode
= "hello, world"
text # Ausgabe
print(text.upper())
HELLO, WORLD
Mit der Methode .sort()
können Werte in einer Liste sortiert werden:
# Liste erstellen
= [3, 1, 4, 1, 5, 9]
numbers # Liste sortieren
numbers.sort()# Liste ausgeben
print(numbers)
[1, 1, 3, 4, 5, 9]
Die folgenden Beispiele sind DataFrame-Methoden des Pakets Pandas, die häufig in Datenprojekten zum Einsatz kommen. Beispielsweise ist .head()
eine Methode, welche die ersten Zeilen eines DataFrames anzeigt:
df.head()
Zahlen | Quadrate | |
---|---|---|
0 | 1 | 1 |
1 | 2 | 4 |
2 | 3 | 9 |
3 | 4 | 16 |
4 | 5 | 25 |
Die Methode .describe()
liefert zusammenfassende Statistiken wie Mittelwert, Anzahl und Standardabweichung. Zusätzlich verwenden wir hier die Methode .round(2)
, um die Werte auf die zweite Dezimalstelle zu runden:
round(2) df.describe().
Zahlen | Quadrate | |
---|---|---|
count | 5.00 | 5.00 |
mean | 3.00 | 11.00 |
std | 1.58 | 9.67 |
min | 1.00 | 1.00 |
25% | 2.00 | 4.00 |
50% | 3.00 | 9.00 |
75% | 4.00 | 16.00 |
max | 5.00 | 25.00 |
Zuletzt noch ein Beispiel, wie der Mittlwert mit Hilfe der Methode .mean()
berechnet werden kann. Wir erzeugen dafür ein neues Objekt mit der Bezeichnung mean_value
und geben dieses dann mit einem f-String aus:
= df['Zahlen'].mean()
mean_value # Ergebnis ausgeben
print(f"Mittelwert: {mean_value}")
Mittelwert: 3.0
Hier nochmals eine Zusammenfassung der wichtigsten Punkte zu Methoden:
- Objekt: Eine Entität, die Daten und Funktionalität enthält (z.B. DataFrame, Liste oder String).
- Methode: Eine Funktion, die mit einem Objekt verknüpft ist.
- Punktnotation (
.
): Wird verwendet, um eine Methode auf einem Objekt aufzurufen.
10.7 Daten mit Altair visualisieren
Nachdem wir die Struktur eines DataFrames verstanden haben, können wir die Daten mit Hilfe von Altair visualisieren:
# Einfaches Streudiagramm erstellen
= alt.Chart(df).mark_point().encode(
chart ='Zahlen',
x='Quadrate'
y
)# Diagramm anzeigen
chart
Komponenten des Altair-Diagramms:
alt.Chart(df)
: Erstellt ein neues Diagrammobjekt aus dem DataFramedf
.mark_point()
: Gibt den Diagrammtyp an (in diesem Fall ein Streudiagramm).encode
: Ordnet DataFrame-Spalten Diagrammattributen zu.x='Numbers'
: Legt die horizontale Achse auf die SpalteNumbers
fest.y='Squares'
: Legt die vertikale Achse auf die SpalteSquares
fest.
Diese prägnante Syntax ermöglicht die schnelle Erstellung und Anpassung von Visualisierungen.