lehrkraefte:blc:informatik:glf4-23:socialmedia-data:start

This is an old revision of the document!


Datenschutz und Datenanalyse

Wenn möglich, exportieren Sie die Daten im JSON-Format. Das ist zwar «einfach so» nicht so schön anzuschauen wie eine HTML-Datei, dafür sind die Daten sehr einfach von einem Programm lesbar und bearbeitbar.

  • YouTube: «Account-Symbol» → Meine Daten auf Youtube (eigene Videos nicht exportieren, Format als JSON wählen)
  • Instagram: «Kopf» → Profil → Privatsphäre und Sicherheit. Format JSON wählen.
  • Twitter: More → Settings and Support → Settings and Privacy → Download an Archive of your Data
  • TikTok? Facebook? Snapchat?

Text-Dateien enthalten nur Text (als Folge von Buchstaben) aber keine Formatierung. Beispiele dafür sind:

  • Python-Dateien (die werden erst in einem Editor farbig dargestellt)
  • HTML-Dateien (Aufbau von Webseiten, drücken Sie mal Ctrl-U, um den Seitenquelltext anzuzeigen)
  • CSV (Comma separated values). Durch Kommas (oder für deutsches Excel durch Strichpunkte) getrennte Werte, zeilenweise. Kann mit einer Tabellekalkulation gelesen und geschrieben werden.
  • JSON (JavaScript Object Notation). Maschinenlesbares Datenformat, das auch Menschen lesen können.
  • Markup-Language (z.B. diese Seite wurde damit geschrieben, siehe Knopf «Seitenquelltext» rechts)
  • Legen Sie ein Verzeichnis jsontest an, in dem Sie die beiden folgenden Dateien mini.json und einlesen.py speichern.
mini.json
[
 {"name":"test",
  "inhalt": [5,42,23,4321]
 },
 {"name":"bla",
  "inhalt": [7,8,9]
 }
]
einlesen.py
import json
 
with open("mini.json") as f:
    mydata = json.load(f)
 
print('mydata[1]["name"] =', mydata[1]["name"])
print('mydata[0]["test"] =', mydata[0]["test"])

Die Datei mini.json wird vom Python-Programm einlesen.py eingelesen und in die Variable mydata gespeichert. Mit Hilfe vom Programm (oder durch «logisches Schlussfolgern») beantworten Sie folgende Fragen. Dafür soll der Python-Code auch entsprechend verändert und erweitert werden.

  • Welchen Wert hat mydata[1]["name"]
  • Welchen Wert hat mydata[0]["test"]
  • Welcher Code ergibt den Wert 42?
  • Was enthält mydata[1]["inhalt"]

    nach dem Befehl

    mydata[1]["inhalt"][2]=1234

Lösungen

Lösungen

  • "bla"

    Achtung! Arrays werden mit Null beginnend indiziert.

  • Fehler, das erste Object hat keinen Schlüssel "test"
  • mydata[0]["inhalt"][1]
  • [7,8,1234]
einlesen-loesung.py
import json
 
with open("mini.json") as f:
    mydata = json.load(f)
 
print('mydata[1]["name"] =', mydata[1]["name"])
# print('mydata[0]["test"] =', mydata[0]["test"])  # Produziert einen Fehler
print('mydata[0]["inhalt"][1] =', mydata[0]["inhalt"][1])
 
print("Vorher")
print(mydata[1]["inhalt"])
mydata[1]["inhalt"][2]=1234
 
print('Nachher mydata[1]["inhalt"]')
print(mydata[1]["inhalt"])

Wir werden die Daten vor allem in einer Tabellenkalkulation (z.B. Excel) analysieren. Dazu müssen die Daten aber erst in ein Format konvertiert werden, das von Excel auch gelesen werden kann.

  • Speichern Sie folgendes Python-Script im gleichen Verzeichnis wie Ihre YouTube-Daten: youtube-json-to-csv-convert.py
  • In der git-bash, navigieren Sie in das Verzeichnis, in dem die Datei watch-history.csv und führen Sie das Python-Script aus.
  • Öffnen Sie die generierte CSV-Datei in Excel

Dazu gibt einen Screencast: Direktlink oder auf SharePoint.

Falls Sie keine eigenen Daten im CSV-Format haben, können Sie folgende Daten analysieren (Auszug meiner YouTube-Daten): old-data.csv.zip

Erzeugen Sie eine Pivot-Tabelle dieser Daten, aggregiert nach Wochentag und Stunde. Schauen Sie sich dazu folgendes Video:

Screencast: Direktlink und auf SharePoint.

  • Überprüfen Sie, ob Sonntag oder Montag der erste Wochentag in Excel ist (in LibreOffice ist Sonntag der Tag 1)
  • Filtern Sie die Daten nach Datum. Vergleichen Sie dazu z.B. den September (Schulbetrieb) mit Juli (Sommerferien).
  • lehrkraefte/blc/informatik/glf4-23/socialmedia-data/start.1677155472.txt.gz
  • Last modified: 2023/02/23 13:31
  • by Ivo Blöchliger