Packages & Pandas#
Pakete#
Importiere das Modul “math” und runde mit “floor” den Wert 2.77259 ab.
# Code
Show 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
Show 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
Show 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
Show 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
Show 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
Show 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
Show 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
Show 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
Show 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 |
Show 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 |