Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
lehrkraefte:ks:informatik-glf4-20 [2021/03/01 10:58] 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 {{https:// | + | Bearbeite das Skript {{https:// |
<hidden Lösungen> | <hidden Lösungen> | ||
<code python zufallszahl.py> | <code python zufallszahl.py> | ||
Line 271: | Line 271: | ||
</ | </ | ||
- | ===== 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, | ||
+ | - Wähle deine App und finde einen Weg, deine Daten herunterzuladen ("data request" | ||
+ | - 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:// | ||
+ | - Daten bei Youtube [[https:// | ||
+ | - CSV in Excel öffnen | ||
+ | - [[https:// | ||
+ | - Folgende Excel-Funktionen nachlesen resp. ausprobieren: | ||
+ | - [[https:// | ||
+ | - [[https:// | ||
+ | - [[https:// | ||
+ | - Spalten erstellen mit den den notwendigen Informationen, | ||
+ | - 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:// | ||
+ | - 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 | ||
+ | import os # Files suchen | ||
+ | |||
+ | # Erklärungen zu diesem Code sind Analog dem Youtube-Extraktor. | ||
+ | |||
+ | rootdir = " | ||
+ | |||
+ | # Resultat, das am Schluss geschrieben werden soll | ||
+ | csv = "" | ||
+ | # 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(" | ||
+ | filepath = os.path.join(root, | ||
+ | # Datei oeffnen | ||
+ | f = open(filepath, | ||
+ | html = f.read() | ||
+ | f.close() | ||
+ | | ||
+ | | ||
+ | # Datum der Form 30.12.2021, 22:13 einlesen | ||
+ | # Alle nötigen Angaben werden in Klammern " | ||
+ | daten = re.findall(" | ||
+ | if(debug> | ||
+ | print(file,": | ||
+ | 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 " | ||
+ | | ||
+ | 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], | ||
+ | |||
+ | if debug>0: | ||
+ | # Ausgabe zur Kontrolle, produziert folgendes Format | ||
+ | print(datum) | ||
+ | debug -= 1 # Um 1 vermindern | ||
+ | | ||
+ | # Wochentag (Mo=0, Di=1, ..., So=6) | ||
+ | # Sämtliche Methoden für datetime-Objekte sind hier beschrieben: | ||
+ | wday = datum.weekday() | ||
+ | | ||
+ | # Formatierte Ausgabe des Datums, siehe https:// | ||
+ | # \n heisst neue Zeile. | ||
+ | csv += datum.strftime(" | ||
+ | | ||
+ | # Ausgabe in Datei schreiben | ||
+ | f = open(" | ||
+ | f.write(csv) | ||
+ | f.close() | ||
+ | |||
+ | |||
+ | </ | ||
+ | <code insta_englisch.py> | ||
+ | import re # Regular Expressions | ||
+ | import datetime | ||
+ | import os # Files suchen | ||
+ | |||
+ | # Erklärungen zu diesem Code sind Analog dem Youtube-Extraktor. | ||
+ | |||
+ | rootdir = " | ||
+ | mnum = {" | ||
+ | |||
+ | # Resultat, das am Schluss geschrieben werden soll | ||
+ | csv = "" | ||
+ | # 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(" | ||
+ | filepath = os.path.join(root, | ||
+ | # Datei oeffnen | ||
+ | f = open(filepath, | ||
+ | html = f.read() | ||
+ | f.close() | ||
+ | | ||
+ | | ||
+ | # Datum der Form 30.12.2021, 22:13 einlesen | ||
+ | # Alle nötigen Angaben werden in Klammern " | ||
+ | daten = re.findall(" | ||
+ | |||
+ | | ||
+ | if(debug> | ||
+ | print(file,": | ||
+ | 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 " | ||
+ | | ||
+ | e = [mnum[d[0]]] + [int(x) for x in d[1:-1]] | ||
+ | if d[5]==" | ||
+ | | ||
+ | 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], | ||
+ | |||
+ | if debug>0: | ||
+ | # Ausgabe zur Kontrolle, produziert folgendes Format | ||
+ | print(datum) | ||
+ | debug -= 1 # Um 1 vermindern | ||
+ | | ||
+ | # Wochentag (Mo=0, Di=1, ..., So=6) | ||
+ | # Sämtliche Methoden für datetime-Objekte sind hier beschrieben: | ||
+ | wday = datum.weekday() | ||
+ | | ||
+ | # Formatierte Ausgabe des Datums, siehe https:// | ||
+ | # \n heisst neue Zeile. | ||
+ | csv += datum.strftime(" | ||
+ | | ||
+ | # Ausgabe in Datei schreiben | ||
+ | f = open(" | ||
+ | f.write(csv) | ||
+ | f.close() | ||
+ | </ | ||
+ | ==== 2. Note: Bewertete Analyse: Abgabe 24. Mai 20121 ==== | ||
+ | Dokumentation der eigenen Analyse in einem PDF-Dokument, | ||
+ | - Eine Einleitung enthält, welche | ||
+ | * Beschreibt (Screenshot; | ||
+ | * 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, | ||
+ | * Excel | ||
+ | * Python | ||
+ | * BigData und sozialen Netzen im Allgemeinen. | ||
+ | |||
+ | Bewertungskriterien: | ||
+ | * Nachvollziehbarkeit der Ausführungen und Analysen | ||
+ | * Dokumentation der Analysen (Erklärungen, | ||
+ | * Ausführlichkeit der Analysen | ||
+ | * Darstellung des Berichts | ||
+ | |||
+ | === Tipps Word === | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | ===== Generelles Python ===== | ||
+ | === Module ==== | ||
+ | Module können in diesen zwei Arten verwendet werden: | ||
+ | <code python> | ||
+ | from random import * | ||
+ | |||
+ | random() | ||
+ | </ | ||
+ | oder | ||
+ | <code python> | ||
+ | import random | ||
+ | random.random() | ||
+ | </ | ||
+ | Beide Varianten rufen am Schluss die Funktion '' | ||
+ | === 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 | ||
+ | </ | ||
+ | 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:// | * [[http:// | ||
* [[https:// | * [[https:// | ||
+ | * [[https:// | ||