lehrkraefte:ks:informatik-glf4-20

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
lehrkraefte:ks:informatik-glf4-20 [2021/02/26 08:07]
Simon Knaus
lehrkraefte:ks:informatik-glf4-20 [2021/05/17 10:47]
Simon Knaus
Line 248: Line 248:
 ===== Simulationen ===== ===== Simulationen =====
 ==== L1-6: Erarbeitung Skript ==== ==== L1-6: Erarbeitung Skript ====
-Bearbeite das Skript {{lehrkraefte:ks:informatik-glf4-20:simulation.pdf||Simulationen}}. Lade die gelösten Aufgaben in den Sharepoint-Abgabe-Ordner hochBenenne dabei die Dateien als ''simulation_afg_x_name_vorname.py'' wobei x die Aufgabennummer ist.+Bearbeite das Skript {{https://bldsg.sharepoint.com/:b:/r/sites/cl03-ksbg-el/classes/1dNP_2017/Theorie/Informatik/04_Simulation/Simulation.pdf?csf=1&web=1||Simulationen}}. Wenn du damit fertig bist, wähle ein Arbeitsblatt deiner Wahl: {{https://bldsg.sharepoint.com/:b:/r/sites/cl03-ksbg-el/classes/1dNP_2017/Theorie/Informatik/04_Simulation?csf=1&web=1||Arbeitsblätter}}
 <hidden Lösungen> <hidden Lösungen>
 <code python zufallszahl.py> <code python zufallszahl.py>
Line 256: Line 256:
 </code> </code>
  
 +<code python 20_zufallszahlen.py>
 +from random import randint
 +for i in range(20):
 +  zufallszahl = randint(1,100)
 +  print(zufallszahl)
 +# oder 
 +zufallszahlen = []
 +for i in range(20):
 +  zufallszahl = randint(1,100)
 +  zufallszahlen.append(zufallszahl)
 +
 +print(zufallszahlen)
 +</code>
  
 </hidden> </hidden>
-===== Big Data: Slicing und Dicing data with Python ===== 
 ===== Datenanalyse und Datenschutz ===== ===== Datenanalyse und Datenschutz =====
 +====L7-L8: Meine Daten ====
 +Wähle eine App / Firma / Tool deiner Wahl. Versuche herauszufinden, wie du deine Daten herunterladen kannst. Häufig sind Stichworte wie "data request" bei Google hilfreich.
 +  - Wähle deine App und finde einen Weg, deine Daten herunterzuladen ("data request" als Stichwort bei der Suche ist hilfreich)
 +  - Wenn du die Daten erhalten hast: Wie sehen diese aus? In welchem Format kommen die Daten daher? Kannst du sie lesen? 
 +  - Welche Fragen könntest du mit diesen Daten bzgl. deines Nutzungsverhalten beantworten?
 +
 +==== L9-L12: Datenanalyse ====
 +=== Ziel ===
 +Am Beispiel von Youtube-Daten (Watch-History) können die eigenen Verhaltensmuster mit Excel analysiert werden.
 +=== Aufträge ===
 +  - [[https://web.microsoftstream.com/video/ba753801-9ab8-41e4-9c9e-d14fe3ddf4db|Einführungsvideo]] schauen
 +  - Daten bei Youtube [[https://takeout.google.com/|herunterladen]] und mit diesem Programm [[lehrkraefte:ks:informatik-glf4-20_4blw:extractor|Python-Programm]] ({{lehrkraefte:ks:informatik-glf4-20:youtube-date-extractor.py|englisches Datumsformat}}/ {{lehrkraefte:ks:informatik-glf4-20:youtube-date-extractor-europe_sommer.py|deutsches Datumsformat}}) Formatierung in ein CSV konvertieren. Falls keine eigene Daten heruntergeladen werden können, bitte diese {{lehrkraefte:ks:informatik-glf4-20:jan14-history.html|Datei}} verwenden.
 +  - CSV in Excel öffnen 
 +    - [[https://web.microsoftstream.com/video/114ca60b-fa45-4b99-bb9e-a62b032fd5c6|Einführungsvideo Excel]] schauen
 +    - Folgende Excel-Funktionen nachlesen resp. ausprobieren:
 +      - [[https://support.microsoft.com/de-de/office/wochentag-funktion-60e44483-2ed1-439f-8bd0-e404c190949a|Wochentag]]
 +      - [[https://support.microsoft.com/de-de/office/stunde-funktion-a3afa879-86cb-4339-b1b5-2dd2d7310ac7|Stunde]]
 +      - [[https://support.microsoft.com/de-de/office/mittelwert-funktion-047bac88-d466-426c-a32b-8f33eb960cf6|Mittelwert]]
 +    - Spalten erstellen mit den den notwendigen Informationen, z.B. Stunde am Tag, Wochentag, etc. (siehe oben) und diese dann als Excel-Datei speichern.
 +  - Folgende Fragen mit Filter oder Pivot beantworten:
 +    * Zu welcher Tageszeit schaue ich am meisten Videos?
 +    * An welchem Wochentag schaue ich am meisten Videos?
 +    * Wie viele Videos schaue ich durchschnittlich pro Tag?
 +    * ...
 +
 +====  Datenanalyse Instagram ====
 +Analog zur Analyse von Youtube-Daten können auch Instagram-Daten analysiert werden. Zu diesem Zweck müssen die Daten bei Instagram heruntergeladen werden: [[https://www.instagram.com/download/request/|Download-Tool]] (HTML wählen).
 +  - Lädt diese Daten herunter, entpackt sie und untersucht die heruntergeladenen Daten. Die HTML-Dateien sind miteinander verlinkt und können so navigiert werden.
 +  - Kopiert den Code unten in TigerJython und passt den Pfad zum entpackten Ordner oben an. Das Programm funktioniert ähnlich wie die Analyse der Youtube-Watchlist. Es untersucht alle Dateien, und speichert die Zeit wie auch die Art der Handlung auf Instagram. Die Datei ``resultat.csv`` kann dann gleich analysiert werden wie die Youtube-Watchlist. 
 +
 +<code python insta.py>
 +import re        # Regular Expressions
 +import datetime  # Datum/Zeit 
 +import os        # Files suchen
 +
 +# Erklärungen zu diesem Code sind Analog dem Youtube-Extraktor.
 +
 +rootdir = "C:/pfad/zum/entpackten/instagram/ordner/"
 +
 +# Resultat, das am Schluss geschrieben werden soll
 +csv = ""   # Comma separated values
 +# Wie viele Kontrollausgaben?
 +debug = 10
 +
 +# Alle HTML-Dateien im Verzeicznis anzeigen            
 +for root, dirs, files in os.walk(rootdir):
 +    for file in files:
 +        if file.endswith(".html"):
 +            filepath = os.path.join(root, file) 
 +            # Datei oeffnen
 +            f = open(filepath, "r")
 +            html = f.read()  # Alles einlesen
 +            f.close()        # Datei schliessen
 +            
 +            
 +            # Datum der Form 30.12.2021, 22:13 einlesen
 +            # Alle nötigen Angaben werden in Klammern "ge-captured"
 +            daten = re.findall("(\d{1,2}).(\d{1,2}).(\d{1,4}), (\d{1,2}):(\d{1,2})", html)
 +            if(debug>0):
 +                print(file,": ",len(daten))
 +                debug-=1
 +                   
 +         
 +            # Alle Einträge durchgehen, d enthält jeweils den nächsten Eintrag
 +            for d in daten:
 +                # Einträge in Zahlen umwandeln
 +                # Monat plus die anderen Einträge (ohne AM/PM) in Zahlen umgewandelt 
 +                #   Die Zeichenkette "42" ist nicht das gleiche wie die Zahl 42.
 +                
 +                e = [int(x) for x in d]
 +                if debug>0:
 +                    # Ausgabe zur Kontrolle, sollte folgendes Format Produzieren
 +                    print(e) # [1, 6, 2021, 21, 23, 12]
 +                    debug -= 1  # Um 1 vermindern
 +            
 +                # Datum daraus generieren (macht die Datumsmanipulation einfacher).
 +                # Jahr, Monat, Tag, Stunde, Minute, Sekunde
 +                datum = datetime.datetime(e[2], e[1], e[0], e[3], e[4],0)
 +
 +                if debug>0:
 +                    # Ausgabe zur Kontrolle, produziert folgendes Format
 +                    print(datum)   # 2021-01-06 21:23:12
 +                    debug -= 1  # Um 1 vermindern
 +            
 +                # Wochentag (Mo=0, Di=1, ..., So=6)
 +                # Sämtliche Methoden für datetime-Objekte sind hier beschrieben: https://docs.python.org/3/library/datetime.html#datetime-objects
 +                wday = datum.weekday()
 +            
 +                # Formatierte Ausgabe des Datums, siehe https://www.w3schools.com/python/python_datetime.asp
 +                # \n heisst neue Zeile.
 +                csv += datum.strftime("%Y-%m-%d %H:%M:%S;"+os.path.splitext(file)[0]+"\n" #Das Format soll so angepasst werden, damit die Tabellenkalkulation dann damit umgehen kann.
 +            
 +            # Ausgabe in Datei schreiben
 +        f = open("resultat.csv", "w")
 +        f.write(csv)
 +        f.close()
 +
 +
 +</code>
 +<code insta_englisch.py>
 +import re        # Regular Expressions
 +import datetime  # Datum/Zeit 
 +import os        # Files suchen
 +
 +# Erklärungen zu diesem Code sind Analog dem Youtube-Extraktor.
 +
 +rootdir = "C:/pfad/zum/entpackten/instagram/ordner/"
 +mnum = {"Jan":1, "Feb":2, "Mar":3, "Apr":4, "May":5, "Jun":6, "Jul":7, "Aug":8, "Sep":9, "Oct":10,"Nov":11, "Dec":12}; 
 +
 +# Resultat, das am Schluss geschrieben werden soll
 +csv = ""   # Comma separated values
 +# Wie viele Kontrollausgaben?
 +debug = 10
 +
 +# Alle HTML-Dateien im Verzeicznis anzeigen            
 +for root, dirs, files in os.walk(rootdir):
 +    for file in files:
 +        if file.endswith(".html"):
 +            filepath = os.path.join(root, file) 
 +            # Datei oeffnen
 +            f = open(filepath, "r")
 +            html = f.read()  # Alles einlesen
 +            f.close()        # Datei schliessen
 +            
 +            
 +            # Datum der Form 30.12.2021, 22:13 einlesen
 +            # Alle nötigen Angaben werden in Klammern "ge-captured"
 +            daten = re.findall("([A-Z][a-z][a-z]) (\d{1,2}), (\d{4}), (\d{1,2}):(\d{1,2}) ([AP]M)", html)
 +
 +            
 +            if(debug>0):
 +                print(file,": ",len(daten))
 +                debug-=1
 +                   
 +         
 +            # Alle Einträge durchgehen, d enthält jeweils den nächsten Eintrag
 +            for d in daten:
 +                # Einträge in Zahlen umwandeln
 +                # Monat plus die anderen Einträge (ohne AM/PM) in Zahlen umgewandelt 
 +                #   Die Zeichenkette "42" ist nicht das gleiche wie die Zahl 42.
 +                
 +                e = [mnum[d[0]]] + [int(x) for x in d[1:-1]]
 +                if d[5]=="PM":  # Nachmittag? Plus 12 Stunden (Ausser Mitternacht = 0)
 +                   e[3]=(e[3]+12) % 24
 +                if debug>0:
 +                    # Ausgabe zur Kontrolle, sollte folgendes Format Produzieren
 +                    print(e) # [1, 6, 2021, 21, 23, 12]
 +                    debug -= 1  # Um 1 vermindern
 +            
 +                # Datum daraus generieren (macht die Datumsmanipulation einfacher).
 +                # Jahr, Monat, Tag, Stunde, Minute, Sekunde
 +                datum = datetime.datetime(e[2], e[1], e[0], e[3], e[4],0)
 +
 +                if debug>0:
 +                    # Ausgabe zur Kontrolle, produziert folgendes Format
 +                    print(datum)   # 2021-01-06 21:23:12
 +                    debug -= 1  # Um 1 vermindern
 +            
 +                # Wochentag (Mo=0, Di=1, ..., So=6)
 +                # Sämtliche Methoden für datetime-Objekte sind hier beschrieben: https://docs.python.org/3/library/datetime.html#datetime-objects
 +                wday = datum.weekday()
 +            
 +                # Formatierte Ausgabe des Datums, siehe https://www.w3schools.com/python/python_datetime.asp
 +                # \n heisst neue Zeile.
 +                csv += datum.strftime("%Y-%m-%d %H:%M:%S;"+os.path.splitext(file)[0]+"\n" #Das Format soll so angepasst werden, damit die Tabellenkalkulation dann damit umgehen kann.
 +            
 +            # Ausgabe in Datei schreiben
 +        f = open("resultat.csv", "w")
 +        f.write(csv)
 +        f.close()
 +</code>
 +==== 2. Note: Bewertete Analyse: Abgabe 24. Mai 20121 ====
 +Dokumentation der eigenen Analyse in einem PDF-Dokument, welches 
 +  - Eine Einleitung enthält, welche
 +    * Beschreibt (Screenshot; Shortcut: ''PrtScr'' oder ''Alt+PrtScr'') woher die Daten kommen und wie diese aussehen
 +    * Beschreibt, welche Daten erhoben werden.
 +  - Eine Frage formuliert, welche auf Grund von Excel-Analysen der eigenen Daten beantwortet kann.
 +  - Mindestens eine Analyse der eigenen Daten welche die Frage aus dem vorigen Punkt beantwortet. Z.B. Wann mache ich xxx am häufigsten?
 +  - Einen Abschnitt, welcher Zusammenfasst, was du in diesem Teil der Informatik gelernt hast, bzgl.
 +    * Excel
 +    * Python
 +    * BigData und sozialen Netzen im Allgemeinen.
 +
 +Bewertungskriterien:
 +   * Nachvollziehbarkeit der Ausführungen und Analysen
 +   * Dokumentation der Analysen (Erklärungen, Screenshots, etc.)
 +   * Ausführlichkeit der Analysen
 +   * Darstellung des Berichts
 +
 +=== Tipps Word ===
 +  * ''PrtScr'' erstellt ein Bildschirmfoto  des ganzen Bildschirms in der Zwischenbalge (''CTRL''+''V'' zum Einfügen)
 +  * ''Alt''+''PrtScrn'' erstellt ein Bildschirmfoto  des aktiven Fensters in der Zwischenbalge (''CTRL''+''V'' zum Einfügen)
 +  * ''Win''+''PrtScrn'' erstellt ein Bildschirmfoto und speichert es im Bilder-Ordner von Windows
 +  * ''Win''+''Shift''+''S'' öffnet einen Dialog um ein Bildschirmfoto aufzunehmen und einen Bereich auszuwählen und speichert es dann in der Zwischenbalge (''CTRL''+''V'' zum Einfügen)
 +===== Generelles Python =====
 +=== Module ====
 +Module können in diesen zwei Arten verwendet werden:
 +<code python>
 +from random import *
 +
 +random()
 +</code>
 +oder 
 +<code python>
 +import random 
 +random.random()
 +</code>
 +Beide Varianten rufen am Schluss die Funktion ''random()'' auf.
 +=== Wenn TigerJython abstürzt, hängt, sich nicht schliessen lässt... ===
 +Auf den Schulcomputern ist der Task-Manager für Sie leider gesperrt. Hier ist der Work-Around:
 +
 +Öffnen Sie die Powershell Konsole (Win+Q; PowerShell) und geben dann das folgende ein:
 +<code powershell endtigerjython.ps1>
 +stop-process -name javaw
 +</code>
 +Um TigerJython zu beenden, führen Sie obige Datei mit PowerShell aus: **Rechtsklick -> Ausführen mit PowerShell**
 +
 +Sie können aber auch einfach obige Zeile in PowerShell eingeben und ausführen (Enter).
 +
 ===== Ressourcen ===== ===== Ressourcen =====
   * [[http://www.tigerjython.ch/download/tigerjython.pdf|Lehrbuch Tigerjython]]   * [[http://www.tigerjython.ch/download/tigerjython.pdf|Lehrbuch Tigerjython]]
   * [[https://tobiaskohn.ch/files/PythonCheatSheet.pdf|CheatSheet Tigerjython]]   * [[https://tobiaskohn.ch/files/PythonCheatSheet.pdf|CheatSheet Tigerjython]]
 +  * [[https://www.w3schools.com/python/module_random.asp|Übersicht Random Modul]]
  
  • lehrkraefte/ks/informatik-glf4-20.txt
  • Last modified: 2021/05/17 10:48
  • by Simon Knaus