Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
gf_informatik:daten:processing [2023-06-10 20:25] hofgf_informatik:daten:processing [2025-06-06 08:29] (aktuell) – [Aufgabe 6] hof
Zeile 1: Zeile 1:
 # Data Processing in Python # Data Processing in Python
 +<html><script type="module" src="https://bottom.ch/ksr/ed/bottom-editor.js"></script></html>
  
 {{ :gf_informatik:daten:dataprocessing.pptx | Präsentation}} {{ :gf_informatik:daten:dataprocessing.pptx | Präsentation}}
Zeile 26: Zeile 27:
  
    * Wenn Dateien gelesen oder geschrieben werden, müssen sie beim Betriebssystem reserviert werden. Mit `with` wird sichergestellt, dass die Datei nicht offen bleibt sondern nach dem Lesevorgang wieder geschlossen wird.    * Wenn Dateien gelesen oder geschrieben werden, müssen sie beim Betriebssystem reserviert werden. Mit `with` wird sichergestellt, dass die Datei nicht offen bleibt sondern nach dem Lesevorgang wieder geschlossen wird.
-   * Die Datei (hier 'dateiname.txt') muss sich im gleichen Ordner befinden wie die Python-Datei.+   * Die Datei (hier 'dateiname.txt') muss sich im Ordner befinden, wo Python ausgeführt wird. 
 +   * Der Typ einer Datei wird über die Dateierweiterung (`.txt`, en. _extension_) bestimmt. Windows versteckt die Endungen standardmässig, es ist empfehlenswert, [[https://support.microsoft.com/de-de/windows/allgemeine-dateierweiterungen-in-windows-da4a4430-8e76-89c5-59f7-1cdbbc75cb01|diese anzuzeigen]].
    * `'r'` bedeutet *read*, dass die Textdatei nur gelesen und nicht verändert wird.    * `'r'` bedeutet *read*, dass die Textdatei nur gelesen und nicht verändert wird.
  
 #### Aufgabe 2 #### Aufgabe 2
  
-Lade die Datei [[https://kantonsschuleromanshorn.sharepoint.com/:f:/s/FSInformatik/Ek-Hi_stH2RMjDa-wQN9jekBMeF_YD6rvhmibDlNglGWxw?e=Y3AX65|gemeinden.csv]] herunter und speichere sie im Ordner, wo du dein Python-Programm abspeicherst. Verwende obigen Python-Code, um herauszufinden, wieviel Zeilen die Datei hat +Lade die Datei [[https://kantonsschuleromanshorn.sharepoint.com/:f:/s/FSInformatik/Ek-Hi_stH2RMjDa-wQN9jekBMeF_YD6rvhmibDlNglGWxw?e=Y3AX65|gemeinden.csv]] herunter und speichere sie im Ordner, wo du dein Python-Programm abspeicherst. Verwende obigen Python-Code, um herauszufinden, wieviel Zeilen die Datei hat. 
-.+ 
 +##### Encoding 
 +Achtung, Mac-Users: Die Datei verwendet die Latin1-Codierung, einer Erweiterung von [[gf_informatik:verschluesselung:codierung|ASCII]], um auch Umlaute anzeigen zu könnenDiese ist in Windows voreingestellt. MacOS hingegen verwendet standardmässig die universelle Unicode (UTF-8) Codierung. Beim Öffnen der Datei kann die Abweichung korrigiert werden: 
 + 
 +<code python> 
 +# Specify text encoding when opening a file. 
 +with open('dateiname.txt', 'r', encoding='latin1') as infile: 
 +</code> 
 ## Dateien schreiben ## Dateien schreiben
 Schreiben funktioniert ganz ähnlich wie lesen, aber als zweites Argument muss `'w'` (für _write_) angegeben werden: Schreiben funktioniert ganz ähnlich wie lesen, aber als zweites Argument muss `'w'` (für _write_) angegeben werden:
Zeile 65: Zeile 75:
   * `split(char)` erzeugt aus einem String eine Liste von Werten, die mit dem angegebenen Trennzeichen abgetrennt sind:   * `split(char)` erzeugt aus einem String eine Liste von Werten, die mit dem angegebenen Trennzeichen abgetrennt sind:
     * `"Aarau,AG,21726,12.36".split(',')` erzeugt die Liste `["Aarau","AG","21726","12.36"]`     * `"Aarau,AG,21726,12.36".split(',')` erzeugt die Liste `["Aarau","AG","21726","12.36"]`
-  * `strip()` gibt den selben String zurück, aber ohne Leerschläge an beiden Enden.+  * `strip()` gibt den selben String zurück, aber ohne Leerschläge an beiden Enden
 +    * `"  Romans Horn  ".strip()` gibt `"Romans Horn"` zurück.
  
  
Zeile 77: Zeile 88:
 <nodisp 1> <nodisp 1>
 ++++Lösung:| ++++Lösung:|
-<code python> +<html><bottom-editor zip='https://bottom.ch/ksr/py/files/2m.zip'>with open('gemeinden.csv', 'r') as infile:
-with open('gemeinden.csv', 'r') as infile:+
     be = 0     be = 0
     tg = 0     tg = 0
Zeile 90: Zeile 100:
     print("Bern", be)     print("Bern", be)
     print("Thurgau", tg)     print("Thurgau", tg)
-</code>+</bottom-editor></html> 
 ++++ ++++
 </nodisp> </nodisp>
Zeile 103: Zeile 114:
 Allerdings funktioniert das nur, wenn der String auch wirklich eine Zahl darstellt. Sonst wird eine *Exception* geworfen; wir können sie mit `try...except` auffangen: Allerdings funktioniert das nur, wenn der String auch wirklich eine Zahl darstellt. Sonst wird eine *Exception* geworfen; wir können sie mit `try...except` auffangen:
  
-<code python>+<html><bottom-editor>
 try: try:
     my_number = int("abc" # may throw an exception     my_number = int("abc" # may throw an exception
Zeile 109: Zeile 120:
 except ValueError: except ValueError:
     pass                    # executed if an exception was thrown     pass                    # executed if an exception was thrown
-</code>+</bottom-editor></html> 
 #### Aufgabe 5 #### Aufgabe 5
 Benütze `try...except` um in deinem Code die Bevölkerung und die Fläche der Gemeinden auszulesen. Benütze `try...except` um in deinem Code die Bevölkerung und die Fläche der Gemeinden auszulesen.
    * welche Spalten (Indices) gehören zu diesen Werten?    * welche Spalten (Indices) gehören zu diesen Werten?
    * verwendest du `int()` oder `float()`?    * verwendest du `int()` oder `float()`?
- 
  
 #### Aufgabe 6 #### Aufgabe 6
Zeile 130: Zeile 141:
 <nodisp 1> <nodisp 1>
 ++++Code:| ++++Code:|
-<code python>+<html><bottom-editor zip='https://bottom.ch/ksr/py/files/2m.zip'>
 def find_smallest_population(): def find_smallest_population():
     with open('gemeinden.csv') as towns:     with open('gemeinden.csv') as towns:
Zeile 150: Zeile 161:
  
 print("Smallest town: ", find_smallest_population()) print("Smallest town: ", find_smallest_population())
-</code>+</bottom-editor></html>
 ++++ ++++
 </nodisp> </nodisp>
Zeile 156: Zeile 167:
 <nodisp 1> <nodisp 1>
 ++++Code:| ++++Code:|
-<code python> +<html><bottom-editor zip='https://bottom.ch/ksr/py/files/2m.zip'>
-def find_smallest_population(): +
-    with open('gemeinden.csv') as towns: +
-        # Search for the smallest, so start out with a value larger than any expected. +
-        min_pop = 1000000 +
-        town = None +
-        for line in towns: +
-            cells = line.split(',') +
-            try: +
-                # Population is in the third column, and it is an integer. +
-                population = int(cells[2]) +
-                if population < min_pop: +
-                    # We found a town smaller than the currently known smallest. +
-                    min_pop = population +
-                    town = cells[0] +
-            except ValueError: +
-                pass +
-        return town, min_pop +
- +
-print("Smallest town: ", find_smallest_population()) +
 def find_largest_area(): def find_largest_area():
     with open('gemeinden.csv') as towns:     with open('gemeinden.csv') as towns:
Zeile 196: Zeile 187:
  
 print("Largest area", find_largest_area()) print("Largest area", find_largest_area())
-</code>+</bottom-editor></html>
 ++++ ++++
 </nodisp> </nodisp>
Zeile 208: Zeile 199:
 <nodisp 1> <nodisp 1>
 ++++Code:| ++++Code:|
-<code python>+<html><bottom-editor zip='https://bottom.ch/ksr/py/files/2m.zip'>
 def summarize_canton(canton): def summarize_canton(canton):
     with open('gemeinden.csv', 'r') as infile:     with open('gemeinden.csv', 'r') as infile:
Zeile 262: Zeile 253:
 summarize_canton('TI') summarize_canton('TI')
 summarize_canton('GL') summarize_canton('GL')
-</code>+</bottom-editor></html>
 ++++ ++++
 </nodisp> </nodisp>
  • gf_informatik/daten/processing.1686428750.txt.gz
  • Zuletzt geändert: 2023-06-10 20:25
  • von hof