📝 Übung zum Data Mining mit Pandas#
Zum Lösungsnotebook
Für die folgenden Aufgaben nutzen wir einen neuen Datensatz. Es handelt sich hier um Reden der Bundesregierung. Die Textdaten f sind dem Projekt German Political Speeches Corpus entnommen. Adrien Barbaresi. (2019). German Political Speeches Corpus (Version v4.2019) [Data set]. Zenodo. https://doi.org/10.5281/zenodo.3611246.
Barbaresi, Adrien (2018). “A corpus of German political speeches from the 21st century”, Proceedings of the Eleventh International Conference on Language Resources and Evaluation (LREC 2018), European Language Resources Association (ELRA), pp. 792–797. http://purl.org/corpus/german-speeches (BibTeX entry)
Aufgabe: Pandas Basics#
Wir gehen noch mal ein paar grundlegende Befehle durch.
Importieren Sie die Bibliothek Pandas entsprechend der gängigen Konventionen.
Lesen Sie die Datei
speeches-bundesregierung_bearbeitet.jsonim Ordnerdata, der relativ zum übergeordneten Ordner liegt, als Dataframe ein.
# Daten einlesen
Lassen Sie sich die ersten und letzten Zeilen des Dataframes anzeigen
Lassen Sie sich die statistische Beschreibung aller (!) verfügbaren Spalten ausgeben.
Greifen Sie auf die Zeilen 35 bis 212 in den Spalten “person” und “title” zu.
Aufgabe: Eigene Datenabfrage gestalten#
Überlegen Sie sich für das Korpus der Reden von Angehörigen der Bundesregierung eine eigene inhaltlich-thematische Datenabfrage, die von booleschen Masken Gebrauch macht. Ihre Abfrage sollte aus mehreren Bestandteilen bestehen (“Schlagwortsuche”, Begrenzung nach Redner:in oder Jahr). Gerne können Sie verschiedene logische/boolesche Operatoren miteinander verknüpfen (&, |, ==, usw.).
# Beispielabfrage zur Orientierung
mask = (df.loc[:, "text"].str.contains("Ukraine")) \
& (df.loc[:, "text"].str.contains("Russland")) \
& (df.loc[:, "person"] == "Angela Merkel")
df_uk_ru = df.loc[mask,:]
df_uk_ru.shape
df_uk_ru
Aufgabe: Anzahl der Token pro Rede ermitteln und speichern#
Wir wollen die Anzahl der Token, also die Länge der einzelnen Reden ermitteln und die Informationen wieder im Dataframe als neue Spalte speichern.
Lesen Sie dazu die Texte aus der Spalte
textaus und speichern Sie sie in einer Liste.Sorgen Sie nun dafür, dass die einzelnen Texte in Wortlisten zerlegt werden und bestimmen Sie die Länge der einzelnen Wortlisten.
Die Länge der Texte soll als neue Spalte
ntokenszum Dataframe hinzugefügt werden.
Aufgabe: Datenabfragen gestalten#
Erkunden Sie das Korpus von Reden von Angehörigen der Bundesregierung, um ein tieferes Verständnis verschiedener thematischer Schwerpunkte und die Nutzung spezifischer Begrifflichkeiten über die Zeit zu gewinnen.
Extrahieren Sie alle Reden, die im Jahr 2001 gehalten wurden.
Ermitteln Sie die Anzahl der Reden, die das Wort “Europa” enthalten.
Identifizieren Sie Reden, die den Begriff “digital” und “Digitalisierung” enthalten.
Suchen Sie nach Reden, die zwischen 2000 und 2010 gehalten wurden, die sich auf Umweltthemen beziehen. In Frage kommen hierfür Begriffe wie “Umwelt”, “Klima”, “Nachhaltigkeit” oder ähnliches. Formulieren Sie eine Abfrage, die mehrere dieser Begriffe berücksichtigt. Achten Sie ggf. darauf, wie die Bedingungen mit runden Klammern gruppiert werden müssen.
Hinweise:
Für diese Aufgabe benötigen Sie die logischen Operatoren für UND (
&) und ODER (|) - letzteres ist je nach Tastatur auf einer anderen Taste. Wichtig: In Python hat der logische Operator&eine höhere Priorität als|. Bei Abfragen, die beide Operatoren verwenden, muss also darauf geachtet werden, wie die Abfragebestandteile mit runden Klammern gruppiert werden.Die Funktion
contains()arbeitet standardmäßig case-sensitiv. Wenn Sie eine case-insensitive Suche durchführen möchten, können Sie den Parametercase=Falseergänzen.
# Erste Aufgabe
# Zweite Aufgabe
# Dritte Aufgabe
# Vierte Aufgabe