Python 101 Übungsblatt 2
Contents
Python 101 Übungsblatt 2#
Übungsblatt 2, Punkte: 2
Anliegen dieses LN: Ergebnissicherung zur Übung der ersten beiden Wochen, insbesondere zu
Diese Übungsblatt wird ausgegeben und erklärt am Mi 2023-10-25 in der Vorlesung.
Bearbeitung und Abgabe:
zuhause selber probieren
in den Übungen KW 44 und 45 fertigstellen – die Übungsgruppenleiterin unterstützt Sie!
auf Moodle hochladen: https://moodle.haw-landshut.de/mod/assign/view.php?id=471327
der Übungsgruppenleiterin in den Übungen zeigen
Abgabefrist: Ende KW 45
Quelle der Aufgaben: http://jbusse.de/jvdp-jb/f_f1_AUTO.html | http://jbusse.de/jvdp-jb/f_f2_AUTO.html | http://jbusse.de/jvdp-jb/e_r1b.html
Aufgabe 1: Listen#
Gegeben: Eine Liste Z
von Zahlen
Z = [1, 7, 3, -6, 7, 12 ]
Gesucht: Eine Liste der Zahlen in Z
, die durch 3 teilbar sind.
Z_3 = None
... #
assert Z_3 == [ 3, -6, 12 ]
---------------------------------------------------------------------------
AssertionError Traceback (most recent call last)
Cell In [3], line 1
----> 1 assert Z_3 == [ 3, -6, 12 ]
AssertionError:
Aufgabe 2: Dicts#
Sei gegeben:
shopping_dict = {"apple": 5, "banana": 4, "milk": 2}
shopping_dict_len = len(shopping_dict)
print(shopping_dict)
{'apple': 5, 'banana': 4, 'milk': 2}
Anzahl der Keys
... #
assert Anzahl_der_Keys == shopping_dict_len
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In [5], line 2
1 ... #
----> 2 assert Anzahl_der_Keys == shopping_dict_len
NameError: name 'Anzahl_der_Keys' is not defined
Ist der key “ham” enthalten? Verschiedene Lösungen, incl. get()
... #
... #
assert ham_in_shopping_dict == False
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In [7], line 1
----> 1 assert ham_in_shopping_dict == False
NameError: name 'ham_in_shopping_dict' is not defined
Liste aller keys; Liste aller values:
... #
... #
assert set(shopping_dict_keys) == { 'apple', 'banana', 'milk' }
assert set(shopping_dict_values) == { 2, 4, 5 }
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In [9], line 1
----> 1 assert set(shopping_dict_keys) == { 'apple', 'banana', 'milk' }
2 assert set(shopping_dict_values) == { 2, 4, 5 }
NameError: name 'shopping_dict_keys' is not defined
Erhöhe die Anzahl der “apple” um 2
... #
Ellipsis
assert shopping_dict["apple"] == 7
---------------------------------------------------------------------------
AssertionError Traceback (most recent call last)
Cell In [11], line 1
----> 1 assert shopping_dict["apple"] == 7
AssertionError:
Füge hinzu:
“ham”: 1
“apple”: 999 (“apple” gibt es schon: Aussagekräftige Warnung ausgeben!)
# ham: 1
... #
# apple: 999
key = "apple"
... #
... #
shopping_dict
{'apple': 5, 'banana': 4, 'milk': 2}
Lösche aus dem dict:
“milk”
“steak”
Gib als Ergebnis der Löschoperation den Wert des gelöschten Elementes zurück. Falls es das Element nicht gibt, gib ersatzweise None
zurück.
key = "milk"
... #
key = "steak"
... #
Aufgabe 3#
Grundlage der Aufgabe: Runde 1a: grundlagende Datentypen und Datenstrukturen .
Gegeben:
Der Melbourne Housing Datensatz als Python Datenstruktur gemäß
orient='dict'
, siehe https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_dict.html
Gesucht:
Price_avg
: berechne das arithmetisches Mittel („Durchschnitt“) des Preises aller Häuser.Lege
Price_centered
an: Subtrahiere vom jeweiligen Preis den Durchschnittspreis.Bestimme zu
Price_centered
die https://de.wikipedia.org/wiki/Empirische_Varianz.Lege
Price_standardized
an: Dividiere jeden Wert ausPrice_centered
durch die Standardabweichung (Wurzel der Varianz).
In Runde 1a: grundlagende Datentypen und Datenstrukturen lösen wir diese Aufgabe auf Basis von orient='list'
.
Aufgabe hier:
Lösung auf Basis der Variablen
melb_orient_dict
, also auf Basis vonorient='dict'
.
Das ist eine kleine Transfer-Aufgabe. Gerne dürfen Sie den existierenden Code aus der Vorlesung etc. wiederverwenden.
Wir lesen die ersten n
Zeilen des Datensatze Melbourne Housing Pandas Dataframe ein. Download Datensatz:
Wohin speichern? Am einfachsten in das selbe Verzeichnis legen, in dem dieses Notebook liegt.
import pandas as pd
nrows = 3
usecols = [ 'Landsize', 'Rooms', 'Price', 'Date', 'Address', 'Type']
melb_df = pd.read_csv( "./melb_data.csv",
usecols = usecols,
nrows = nrows )
melb_df
Address | Rooms | Type | Price | Date | Landsize | |
---|---|---|---|---|---|---|
0 | 85 Turner St | 2 | h | 1480000.0 | 3/12/2016 | 202.0 |
1 | 25 Bloomburg St | 2 | h | 1035000.0 | 4/02/2016 | 156.0 |
2 | 5 Charles St | 3 | h | 1465000.0 | 4/03/2017 | 134.0 |
# jede Spalte ein Dict
melb_orient_dict = melb_df.to_dict(orient='dict') # orient='dict': default
melb_orient_dict
{'Address': {0: '85 Turner St', 1: '25 Bloomburg St', 2: '5 Charles St'},
'Rooms': {0: 2, 1: 2, 2: 3},
'Type': {0: 'h', 1: 'h', 2: 'h'},
'Price': {0: 1480000.0, 1: 1035000.0, 2: 1465000.0},
'Date': {0: '3/12/2016', 1: '4/02/2016', 2: '4/03/2017'},
'Landsize': {0: 202.0, 1: 156.0, 2: 134.0}}
# hier die Lösung, typischerweise in mehr als nur einer Jupyter-Zelle
# ggf. noch mehr Code
# u.s.w.
Zur Kontrolle kann man das so entstandene dict auch wieder in ein DataFrame umwandeln, Doku:
melb2_index_df = pd.DataFrame.from_dict(melb_orient_dict)
melb2_index_df
Address | Rooms | Type | Price | Date | Landsize | |
---|---|---|---|---|---|---|
0 | 85 Turner St | 2 | h | 1480000.0 | 3/12/2016 | 202.0 |
1 | 25 Bloomburg St | 2 | h | 1035000.0 | 4/02/2016 | 156.0 |
2 | 5 Charles St | 3 | h | 1465000.0 | 4/03/2017 | 134.0 |