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
lehrkraefte:ks:informatik-glf4-20 [2021/03/01 10:59]
Simon Knaus
lehrkraefte:ks:informatik-glf4-20 [2021/05/17 10:48] (current)
Simon Knaus
Line 271: Line 271:
  
 </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 python 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.1614592752.txt.gz
  • Last modified: 2021/03/01 10:59
  • by Simon Knaus