Packages & Pandas#

Pakete#

Importiere das Modul “math” und runde mit “floor” den Wert 2.77259 ab.

# Code
Hide code cell source
import math

math.floor(2.77259)
2

Importiere aus dem Modul “math” die Funktion “log” als einzige Funktion und berechne den Logarithmus von 100 zur Basis 4

# Code
Hide code cell source
from math import log
log(100, 4)
3.3219280948873626

Importiere die Funktion “sqrt” aus dem Modul “math” als die Funktion “wurzel_aus”.

# Code
Hide code cell source
from math import sqrt as wurzel_aus
wurzel_aus(25)
5.0

Ratespiel#

Schreibe ein kleines Ratespiel. Erstelle dazu eine Zufallszahl zwischen 0 und 1000, die erraten werden soll. Anschließend soll die:der Spieler:in eine Zahl raten. Je nachdem soll dann ein Hinweis gegeben werden, ob die Zahl zu hoch oder zu tief ist. Falls die richtige Zahl erraten wurde, soll das Spiel mit einem Glückwunsch beendet werden. Die:der Spieler:in soll so viele Versuche haben, bis die Lösung erraten wurde.

# Code
Hide code cell source
from random import randint
'''
Nach dem Laden der Funktion aus dem Paket 'random'
kann eine Zufallszahl generiert werden.
Bedenke, dass das untere Limit inklusiv und die obere Schranke
exklusiv ist.'''
zufallszahl = randint(0, 101)
gelöst = False
while not gelöst:
    antwort = int(input("Deine geratene Zahl: "))
    if antwort == zufallszahl:
        gelöst = True
        print("Herzlichen Glückwunsch!")
    elif antwort<zufallszahl:
        print('Leider Falsch. Die Zahl ist größer')
    elif antwort>zufallszahl:
        print('Leider Falsch. Die Zahl ist kleiner')
Deine geratene Zahl: 3
Leider Falsch. Die Zahl ist größer
Deine geratene Zahl: 5
Leider Falsch. Die Zahl ist größer
Deine geratene Zahl: 9
Leider Falsch. Die Zahl ist größer
Deine geratene Zahl: 500
Leider Falsch. Die Zahl ist kleiner
Deine geratene Zahl: 300
Leider Falsch. Die Zahl ist kleiner
Deine geratene Zahl: 100
Leider Falsch. Die Zahl ist kleiner
Deine geratene Zahl: 50
Leider Falsch. Die Zahl ist kleiner
Deine geratene Zahl: 25
Leider Falsch. Die Zahl ist kleiner
Deine geratene Zahl: 12
Leider Falsch. Die Zahl ist größer
Deine geratene Zahl: 18
Leider Falsch. Die Zahl ist kleiner
Deine geratene Zahl: 13
Leider Falsch. Die Zahl ist größer
Deine geratene Zahl: 16
Leider Falsch. Die Zahl ist größer
Deine geratene Zahl: 17
Herzlichen Glückwunsch!

Pandas#

Mithilfe von PageViewer ist es möglich die Aufrufzahlen von verschiedenen Webseiten einzusehen. Wähle 5 Seiten der englischsprachigen Wikipedia und vergleiche die Aufrufzahlen der letzten 30 Tage. Lade das Ergebnis als csv Datei herunter und lese es mit dem pandas-Paket ein.

# Code
Hide code cell source
import pandas as pd
'''
Um eine bestimmte Datei zu laden, muss der Funktion read_[Dateityp]
der Pfad zu dieser Datei gegeben werden. Dazu gibt es zwei Möglichkeiten:
1. Den Pfad relativ zum Arbeitsverzeichnis angeben.
    So spart man sich Zeit, einen unnötig langen Dateipfad
    und außerdem können diese Pfade auch in kollaborativen
    Projekten mit vielen Beteiligten ohne Probleme
    verwendet werden.
2. Den Gesamtpfad zur Datei auf dem Rechner angeben.
    Das ist die umständlichere Variante, der gesamte
    Dateipfad ist sehr indiviudell, weshalb in
    kollaborativen Projekten an dieser Stelle jeder
    Beteiligte seinen eigenen Pfad zur Datei angeben müsste,
    das führt zu Konflikten beim Zusammenführen des Codes
    und ist außerdem viel umständlicher und länger als
    die 1. Möglichkeit.
'''
data = pd.read_csv('data/pageviews-20221026-20221115.csv')
data
Date Josip Broz Tito Saban Saulic Bijelo Dugme
0 2022-10-26 2300 5 192
1 2022-10-27 2440 4 192
2 2022-10-28 2314 0 223
3 2022-10-29 2253 2 238
4 2022-10-30 2258 0 274
5 2022-10-31 2425 3 207
6 2022-11-01 2682 1 237
7 2022-11-02 2625 3 196
8 2022-11-03 2505 4 178
9 2022-11-04 2267 5 231
10 2022-11-05 2257 0 247
11 2022-11-06 2379 2 271
12 2022-11-07 2513 2 207
13 2022-11-08 2548 2 227
14 2022-11-09 2189 1 173
15 2022-11-10 2279 2 185
16 2022-11-11 2347 3 267
17 2022-11-12 2168 3 294
18 2022-11-13 2461 2 340
19 2022-11-14 2525 2 202
20 2022-11-15 2528 3 231

Welche Seite wurde in dem Zeitraum am häufigsten besucht? Gib die Seite und die Gesamtzahl der Aufrufe an.

# Code
Hide code cell source
'''
Eine Möglichkeit ist es einen neuen Dataframe 'summe' zu erstellen
und anschließend nach dem maximalen Wert in diesem Dataframe zu suchen.
'''
summe = data.sum(numeric_only=True)
print('Der Dataframe "summe" nach der Erstellung')
print(summe)
print('Die Zeile mit dem Maximalwert in "summe"')
print(summe[summe == summe.max()])

'''
Eine weitere Möglichkeit ist das Abfragen des Maximalwerts und des Index des Maximalwerts.
Beachte, das die folgenden beiden Zeilen auch auf den Dataframe 'summe' angewandt werden könnten und das selbe Ergebnis hätten.
'''
print(data.sum(numeric_only=True).max())
print(data.sum(numeric_only=True).idxmax())
Der Dataframe "summe" nach der Erstellung
Josip Broz Tito    50263
Saban Saulic          49
Bijelo Dugme        4812
dtype: int64
Die Zeile mit dem Maximalwert in "summe"
Josip Broz Tito    50263
dtype: int64
50263
Josip Broz Tito

Wie oft wurde jede Seite im Durchschnitt aufgerufen

# Code
Hide code cell source
'''
Die Funktion 'mean' errechnet für alle Columns den Durchschnittswert.
Da in unserem DataFrame auch Strings auftauchen, müssen wir den Eingabeparameter auf
'numeric_only' setzen.'''
data.mean(numeric_only=True)

'''
Die gleiche Funktion 'mean' taucht auch in der Funktion 'describe' auf.'''
#data.describe()
"\nDie gleiche Funktion 'mean' taucht auch in der Funktion 'describe' auf."

Wie oft wurde jede Seite am 03. November 2022 abgerufen?

# Code
Hide code cell source
'''
Um einen bestimmten Wert in einer Column zu suchen,
müssen wir auch angeben in welcher Spalte wir suchen wollen.

Hier wird also der angegeben String mit jedem Wert in der Column 'Date'
'''
data[data['Date']=='2022-11-03']
Date Josip Broz Tito Saban Saulic Bijelo Dugme
8 2022-11-03 2505 4 178

Sortiere den Dataframe nach der Anzahl der Aufrufe der am wenigsten besuchten Seite.

# Code
Hide code cell source
'''
Falls wir schon im Vorfeld wissen, welche Seite die wenigsten Aufrufe hat,
können wir die einfach direkt angeben.
'''
data.sort_values(by='Saban Saulic', ascending=True)
Date Josip Broz Tito Saban Saulic Bijelo Dugme
10 2022-11-05 2257 0 247
2 2022-10-28 2314 0 223
4 2022-10-30 2258 0 274
6 2022-11-01 2682 1 237
14 2022-11-09 2189 1 173
18 2022-11-13 2461 2 340
3 2022-10-29 2253 2 238
15 2022-11-10 2279 2 185
19 2022-11-14 2525 2 202
11 2022-11-06 2379 2 271
12 2022-11-07 2513 2 207
13 2022-11-08 2548 2 227
17 2022-11-12 2168 3 294
16 2022-11-11 2347 3 267
20 2022-11-15 2528 3 231
7 2022-11-02 2625 3 196
5 2022-10-31 2425 3 207
8 2022-11-03 2505 4 178
1 2022-10-27 2440 4 192
9 2022-11-04 2267 5 231
0 2022-10-26 2300 5 192
Hide code cell source
'''
Falls wir nicht sicher sagen können, nach welcher Column wir suchen,
müssen wir zuerst herausfinden, welche die richtige ist.
'''
data.sort_values(by=data.sum(numeric_only=True).idxmin(), ascending=True)
Date Josip Broz Tito Saban Saulic Bijelo Dugme
10 2022-11-05 2257 0 247
2 2022-10-28 2314 0 223
4 2022-10-30 2258 0 274
6 2022-11-01 2682 1 237
14 2022-11-09 2189 1 173
18 2022-11-13 2461 2 340
3 2022-10-29 2253 2 238
15 2022-11-10 2279 2 185
19 2022-11-14 2525 2 202
11 2022-11-06 2379 2 271
12 2022-11-07 2513 2 207
13 2022-11-08 2548 2 227
17 2022-11-12 2168 3 294
16 2022-11-11 2347 3 267
20 2022-11-15 2528 3 231
7 2022-11-02 2625 3 196
5 2022-10-31 2425 3 207
8 2022-11-03 2505 4 178
1 2022-10-27 2440 4 192
9 2022-11-04 2267 5 231
0 2022-10-26 2300 5 192