Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
lehrkraefte:ks:informatik-glf4-22-4hw [2022/03/25 14:11] Simon Knaus |
lehrkraefte:ks:informatik-glf4-22-4hw [2022/05/17 13:14] Simon Knaus |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ==== KW 19 ==== | ||
+ | === 2. Note: Bewertete Analyse: Abgabe 20. Mai 2022 um 17:00 auf Teams === | ||
+ | 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 (mindestens eine Pivot-Tabelle) 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 === | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | ==== KW 18 ==== | ||
+ | === Ziele === | ||
+ | Erste Analysen mit Pivot-Tabellen in Excel deiner Daten von Youtube oder Instagram aus der letzten Lektion. | ||
+ | |||
+ | === Auftrag === | ||
+ | - 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? | ||
+ | * ... | ||
+ | |||
+ | |||
+ | |||
+ | ==== KW 17 ==== | ||
+ | === Ziele === | ||
+ | |||
+ | Du kennst deine Daten aus Instagram oder Youtube und hast sie in strukturierter Form in Excel vorliegen. | ||
+ | |||
+ | === Auftrag === | ||
+ | * Schau dir das [[https:// | ||
+ | * Navigiere zur heruntergeladenen ZIP-Datei, das heisst, geh mit dem Windows-Explorer (Win+E) zu diesem Ordner. Mit einem Rechtsklick kannst du die Datei entpacken. | ||
+ | * Untersuche die heruntergeladene Datei (das heisst, entpacke sie und öffne die enthaltenen Dateien und Ordner) | ||
+ | * Wähle unten deinen Code für Instagram (deutsch oder englisch) resp Youtube (deutsch oder englisch). Passe den Dateipfad im Code an und führe den Code aus. | ||
+ | * Überprüfe die erhaltene CSV-Datei in Excel | ||
+ | |||
+ | Hast du keine eigenen Daten kannst du {{lehrkraefte: | ||
+ | |||
+ | **Achtung: ** Entweder ins Homeverzeichnis kopieren (da habt nur ihr Leserechte) oder // | ||
+ | |||
+ | === Code === | ||
+ | === Instagram Deutsch === | ||
+ | <code python insta_detusch.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() | ||
+ | </ | ||
+ | === Instagram Englisch === | ||
+ | <code python 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() | ||
+ | </ | ||
+ | |||
+ | === Youtube Englisch === | ||
+ | <code python youtube_englisch.py> | ||
+ | import re # Regular Expressions | ||
+ | import datetime | ||
+ | |||
+ | # Erklärungen zu diesem Code gibt es auch als Video hier: | ||
+ | # https:// | ||
+ | # und für Datensparsame und solche ohne BLDSG-Account auch hier: | ||
+ | # https:// | ||
+ | |||
+ | # Daten einlesen | ||
+ | # Entweder vollständiger Pfad zur Datei oder (wie z.B. C: | ||
+ | # nur Dateiname, wenn die Datei im gleichen Verzeichnis wie das Pythonprogramm liegt. | ||
+ | f = open(" | ||
+ | html = f.read() | ||
+ | f.close() | ||
+ | |||
+ | |||
+ | # Datum der Form Jan 6, 2021, 9:23:12 PM CET | ||
+ | # Alle nötigen Angaben werden in Klammern " | ||
+ | daten = re.findall(r" | ||
+ | |||
+ | #Erste 3 Einträge zur Kontrolle ausgeben | ||
+ | print(daten[0: | ||
+ | |||
+ | # Zuordnung der Monatsnamen zu Monatsnummern, | ||
+ | mnum = {" | ||
+ | |||
+ | # Resultat, das am Schluss geschrieben werden soll | ||
+ | csv = "" | ||
+ | |||
+ | # Wie viele Kontrollausgaben? | ||
+ | debug = 10 | ||
+ | |||
+ | # 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[6]==" | ||
+ | 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], | ||
+ | |||
+ | 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() | ||
+ | </ | ||
+ | |||
+ | === Youtube Deutsch === | ||
+ | <code python youtube_deutsch.py> | ||
+ | import re # Regular Expressions | ||
+ | import datetime | ||
+ | |||
+ | # VERSION FUER DEUTSCHE EXPORTE, Datumsangabe in der Form 09.02.2012, 14:15:59 MEZ | ||
+ | |||
+ | # Erklärungen zu diesem Code gibt es auch als Video hier: | ||
+ | # https:// | ||
+ | # und für Datensparsame und solche ohne BLDSG-Account auch hier: | ||
+ | # https:// | ||
+ | |||
+ | # Daten einlesen | ||
+ | # Entweder vollständiger Pfad zur Datei oder (wie z.B. C: | ||
+ | # nur Dateiname, wenn die Datei im gleichen Verzeichnis wie das Pythonprogramm liegt. | ||
+ | f = open(" | ||
+ | html = f.read() | ||
+ | f.close() | ||
+ | |||
+ | |||
+ | # Datum der Form Jan 6, 2021, 9:23:12 PM CET | ||
+ | # Alle nötigen Angaben werden in Klammern " | ||
+ | |||
+ | # Datum der Form 09.02.2012, 14:15:59 MESZ | ||
+ | daten = re.findall(r" | ||
+ | |||
+ | |||
+ | #Erste 3 Einträge zur Kontrolle ausgeben | ||
+ | print(daten[0: | ||
+ | |||
+ | # Zuordnung der Monatsnamen zu Monatsnummern, | ||
+ | mnum = {" | ||
+ | |||
+ | # Resultat, das am Schluss geschrieben werden soll | ||
+ | csv = "" | ||
+ | |||
+ | # Wie viele Kontrollausgaben? | ||
+ | debug = 10 | ||
+ | |||
+ | # 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() | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== KW 14 ==== | ||
+ | Lade deine Daten bei Youtube, Instagram, TikTok o.ä. herunter resp. beantrage das Herunterladen. Trage dann hier ein, wo du die Daten << | ||
+ | |||
+ | === Wege zu Daten === | ||
+ | * **Instagram**: | ||
+ | * **Youtube**: | ||
+ | * Irgendeine andere Platform | ||
+ | |||
+ | Fordere die Daten an und trage im [[https:// | ||
+ | |||
+ | |||
==== KW 12 ==== | ==== KW 12 ==== | ||
=== Ziele === | === Ziele === | ||
Line 7: | Line 367: | ||
=== Auträge ==== | === Auträge ==== | ||
- | - Beende das [[https:// | + | - Beende das [[https:// |
- Bearbeite dein Problem weiter resp. starte mit einem Problem, welches du in TigerJython implementierst (Geburtstagsproblem, | - Bearbeite dein Problem weiter resp. starte mit einem Problem, welches du in TigerJython implementierst (Geburtstagsproblem, | ||
- Notiere allfällige Fragen zur Prüfung nächste Woche auf diesem [[https:// | - Notiere allfällige Fragen zur Prüfung nächste Woche auf diesem [[https:// | ||
- | === Beispiele | + | === Beispiele |
<code python bsp.py> | <code python bsp.py> | ||
from random import randint | from random import randint | ||
Line 31: | Line 391: | ||
summieren+=wuerfelGleich() | summieren+=wuerfelGleich() | ||
print(summieren/ | print(summieren/ | ||
+ | </ | ||
+ | === Beispiel 2 ==== | ||
+ | <code python geburtstag.py> | ||
+ | from random import * | ||
+ | |||
+ | |||
+ | # Erzeugensdafjsadklfjasd ölkjfsdalköf sakldfj öadlsfj | ||
+ | # Kommentare: | ||
+ | def simuliereKlasse(klassengroesse): | ||
+ | geburtstage=[] # leere Liste | ||
+ | zweiGleiche=0 | ||
+ | repeat klassengroesse: | ||
+ | geburtstage.append(randint(1, | ||
+ | summiere = 0 | ||
+ | for i in range(len(geburtstage)): | ||
+ | # | ||
+ | for j in range(len(geburtstage)): | ||
+ | if(geburtstage[i] == geburtstage[j]): | ||
+ | summiere += 1 | ||
+ | if(summiere> | ||
+ | | ||
+ | else: | ||
+ | rueckgabe = 0 | ||
+ | return(rueckgabe) | ||
+ | |||
+ | | ||
+ | |||
+ | repeat 100: | ||
+ | print(simuliereKlasse(10)) | ||
</ | </ | ||
=== Inhalte Prüfung === | === Inhalte Prüfung === | ||
Line 39: | Line 428: | ||
- Rollender Durchschnitt / Stabilisierung | - Rollender Durchschnitt / Stabilisierung | ||
- Grundkonzepte (Zellebzüge, | - Grundkonzepte (Zellebzüge, | ||
- | - Simulation in Python ([[https:// | + | - Simulation in Python ([[https:// |
- Zufallszahlen | - Zufallszahlen | ||
- Schleifen ('' | - Schleifen ('' | ||
Line 51: | Line 440: | ||
- Du weisst was Funktionen sind und kannst eigene Funktionen definieren und ausführen. | - Du weisst was Funktionen sind und kannst eigene Funktionen definieren und ausführen. | ||
- | Ziel dieser Lektion(en) wird sein, dass du die wichtigsten Pyhton-Konzepte nochmals wiederholst. Zu den wichtigsten Konzepten hat es Aufgaben und Lösungen unten, ebenfalls sind die Seiten aus der Theorie des [[https:// | + | Ziel dieser Lektion(en) wird sein, dass du die wichtigsten Pyhton-Konzepte nochmals wiederholst. Zu den wichtigsten Konzepten hat es Aufgaben und Lösungen unten, ebenfalls sind die Seiten aus der Theorie des [[https:// |
=== Aufträge === | === Aufträge === |