{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n", " \n", " \n", " \n", " \n", "
Datenanalyse mit PythonManfred Hammerl
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 8) Variablen umkodieren\n", "\n", "Zu Beginn wieder der Import von **Pandas** und das Einlesen unseres Datenfiles." ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
sexagewohnortvolksmusikhardrock
015022.673.67
115711.003.33
226632.004.33
\n", "
" ], "text/plain": [ " sex age wohnort volksmusik hardrock\n", "0 1 50 2 2.67 3.67\n", "1 1 57 1 1.00 3.33\n", "2 2 66 3 2.00 4.33" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "\n", "daten = pd.read_csv(\"C:\\\\Datenfiles\\\\daten.csv\")\n", "\n", "daten.head(3).round(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 8.1) Typologie erstellen\n", "\n", "Hin und wieder benötigt man eine Variable, die aus einer Kombination mehrerer anderer Variablen gebildet wird. Ein typisches Beispiel wäre in Studien bei SchülerInnen oder StudentInnen das elterliche Bildungsniveau. Man erhebt dabei das Bildungsniveau der Mutter und jenes des Vaters und kann diese Informationen dann in einer Variable 'elterliches Bildungsniveau' kombinieren (z.B. beide Matura, eine/r mit Matura, beide ohne Matura - man erhält hier also 4 Kategorien).\n", "\n", "In unserem Datensatz haben wir die Variablen *sex* und *wohnort*, aus welchen wir eine solche Typologie (als neue Variable *typo*) bilden können. Uns interessiert, wieviele Frauen bzw. Männer in ländlicher Umgebung und wieviele in Städten wohnen. Die *wohnort* Kategorie 2 (kleinstädtische Umgebung) lassen wir außen vor. Die Codierung erinnert entfernt an die Syntax, mit der in SPSS solche Typologien gebildet werden können. Mit **loc** lassen sich Bedingungen formulieren und definierte Werte einer neuen Variable zuordnen.\n", "\n", "[5 ways to apply an IF condition in pandas DataFrame](https://datatofish.com/if-condition-in-pandas-dataframe/)" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [], "source": [ "daten.loc[(daten.sex == 1) & (daten.wohnort == 1), 'typo'] = 'frau_land' # neue Werte können natürlich auch Zahlen sein\n", "daten.loc[(daten.sex == 1) & (daten.wohnort == 3), 'typo'] = 'frau_stadt'\n", "daten.loc[(daten.sex == 2) & (daten.wohnort == 1), 'typo'] = 'mann_land'\n", "daten.loc[(daten.sex == 2) & (daten.wohnort == 3), 'typo'] = 'mann_stadt'\n", "daten.loc[(daten.wohnort==2), 'typo'] = 'ohne Zuordnung' # als Restkategorie sozusagen..." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Die neue Variable *typo* wurde dem Datensatz wie unten ersichtlich angefügt und enthält unsere definierten Zuordnungen." ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
sexagewohnortvolksmusikhardrocktypo
015022.6666673.666667ohne Zuordnung
115711.0000003.333333frau_land
226632.0000004.333333mann_stadt
315022.3333332.666667ohne Zuordnung
416032.3333333.000000frau_stadt
\n", "
" ], "text/plain": [ " sex age wohnort volksmusik hardrock typo\n", "0 1 50 2 2.666667 3.666667 ohne Zuordnung\n", "1 1 57 1 1.000000 3.333333 frau_land\n", "2 2 66 3 2.000000 4.333333 mann_stadt\n", "3 1 50 2 2.333333 2.666667 ohne Zuordnung\n", "4 1 60 3 2.333333 3.000000 frau_stadt" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten.head(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Nun könnten wir uns die Häufigkeiten dieser Typologie ansehen. Am besten gleich in Form einer Grafik." ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "grafik1 = daten['typo'].value_counts(normalize = False)\n", "\n", "# 'normalize=True' und '*100', dann hätte man Prozentwerte statt absoluter Häufigkeiten\n", "\n", "ax = grafik1.plot.bar(rot = 25) # 'rot' = Rotation der Y-Achsen Labels in Grad" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Als 'Abkürzung' bietet sich folgende direkte Methode (nur eine Codezeile) an (diesmal sind relative Häufigkeiten, also Prozentwerte, abgebildet):" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "ax = (daten['typo'].value_counts(normalize = True)*100).plot.bar(rot = 25) # relative Häufigkeiten, multipliziert mit 100 (d.h.: Prozent)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 8.2) Alterskategorien in neuer Variable erstellen\n", "\n", "Relativ oft muss man metrische Variablen mit sehr vielen Ausprägungen in wenige Kategorien umkodieren. Ein klassisches Beispiel sind Alterskategorien. Wenn wir die Variable *age* aus unserem Datensatz in ein paar Alterskategorien umkodieren möchten, sehen wir uns zuerst die Verteilung der Altersvariable an. Am besten betrachten wir die kumulierten (**cumsum()**) relativen (*normalize = True*) Häufigkeiten.\n", "\n", "[Recode Data](https://pythonfordatascience.org/recode-data/)\n", "\n", "[Creating a Cumulative Frequency Column in a Dataframe Python](https://stackoverflow.com/questions/38891974/creating-a-cumulative-frequency-column-in-a-dataframe-python)" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "15 0.34\n", "20 0.68\n", "21 3.06\n", "22 7.82\n", "23 13.27\n", "24 17.35\n", "25 23.13\n", "26 28.91\n", "27 32.65\n", "28 36.05\n", "Name: age, dtype: float64" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten['age'].value_counts(sort = False, normalize = True).cumsum().head(10).round(4)*100 # kumulierte Prozentwerte" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In der Praxis würden wir uns natürlich die gesamte Ausgabe ansehen und nicht nur - aus Platzgründen - die ersten zehn Werte wie in der Ausgabe oben. Wenn man das macht, kann man anhand der kumulierten relativen Häufigkeiten ablesen, welche Alterskategorien zu bilden sind, wenn man einigermaßen gleich große Kategorien (was die darin enthaltene Fallzahl betrifft) erhalten möchte.\n", "\n", "Mit folgender selbst zu schreibender Funktion definieren wir vier Alterskategorien, die in etwa ähnlich große Kategorien liefern. Danach rufen wir diese selbst geschriebene Funktion *altkat* mit der Funktion **apply()** auf und wenden sie auf unsere Altersvariable *age* an. Die ermittelten Alterskategorien werden sodann in die neue Variable *Altersgruppe* übernommen.\n", "\n", "[pandas.DataFrame.apply](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.apply.html)" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [], "source": [ "def altkat(age):\n", " if age <= 25:\n", " return \"15 - 25 Jahre\"\n", " elif 26 <= age <= 35:\n", " return \"26 - 35 Jahre\"\n", " elif 36 <= age <= 49:\n", " return \"36 - 49 Jahre\"\n", " elif age > 49:\n", " return \"50 Jahre plus\"\n", "\n", "daten['Altersgruppe'] = daten['age'].apply(altkat)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Eine Häufigkeitsauszählung der neu erstellten Variable *Altersgruppe* ergibt, dass jeweils rund 70 Personen in den vier Altersgruppen aufscheinen." ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "15 - 25 Jahre 68\n", "26 - 35 Jahre 71\n", "36 - 49 Jahre 78\n", "50 Jahre plus 77\n", "Name: Altersgruppe, dtype: int64" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten['Altersgruppe'].value_counts(sort = False).sort_index() # 'sort_index()' um nach den Alterskategorien zu sortieren" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Die kumulierten relativen Summen zeigen, dass die erste Altersgruppe (15 - 15 Jahre) mit knapp über 23% etwas unterrepräsentiert ist (bei vier Altersgruppen würde man sich 25% pro Altersgruppe erwarten - eine solch exakte Gruppenaufteilung ist in der Praxis jedoch kaum möglich)." ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "15 - 25 Jahre 23.13\n", "26 - 35 Jahre 47.28\n", "36 - 49 Jahre 73.81\n", "50 Jahre plus 100.00\n", "Name: Altersgruppe, dtype: float64" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten['Altersgruppe'].value_counts(sort = False, normalize = True).sort_index().cumsum().round(4)*100 # Prozentwerte" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Hier ohne **cumsum()**, d.h. wir erhalten die relativen Häufigkeiten jeder Altersgruppe." ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "15 - 25 Jahre 23.13\n", "26 - 35 Jahre 24.15\n", "36 - 49 Jahre 26.53\n", "50 Jahre plus 26.19\n", "Name: Altersgruppe, dtype: float64" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten['Altersgruppe'].value_counts(sort = False, normalize = True).sort_index().round(4)*100 # Prozentwerte" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Kontrolle der Umkodierung\n", "\n", "Wann immer man Variablen umkodiert, sollte man die Korrektheit der Umkodierung prüfen, bevor man mit den umkodierten neuen Variablen weitere Auswertungen durchführt. Die folgende (teilweise) Darstellung des Dataframes liefert schon erste Indizien dafür, dass die Umkodierung richtig sein dürfte." ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
sexagewohnortvolksmusikhardrocktypoAltersgruppe
26021513.0000003.500000mann_land15 - 25 Jahre
17622034.6666672.333333mann_stadt15 - 25 Jahre
6412134.6666671.000000frau_stadt15 - 25 Jahre
7712135.0000001.333333frau_stadt15 - 25 Jahre
25522124.6666671.000000ohne Zuordnung15 - 25 Jahre
........................
8817311.6666674.000000frau_land50 Jahre plus
1817533.0000005.000000frau_stadt50 Jahre plus
9727532.0000003.666667mann_stadt50 Jahre plus
13627712.0000005.000000mann_land50 Jahre plus
21919211.6666674.000000frau_land50 Jahre plus
\n", "

294 rows × 7 columns

\n", "
" ], "text/plain": [ " sex age wohnort volksmusik hardrock typo Altersgruppe\n", "260 2 15 1 3.000000 3.500000 mann_land 15 - 25 Jahre\n", "176 2 20 3 4.666667 2.333333 mann_stadt 15 - 25 Jahre\n", "64 1 21 3 4.666667 1.000000 frau_stadt 15 - 25 Jahre\n", "77 1 21 3 5.000000 1.333333 frau_stadt 15 - 25 Jahre\n", "255 2 21 2 4.666667 1.000000 ohne Zuordnung 15 - 25 Jahre\n", ".. ... ... ... ... ... ... ...\n", "88 1 73 1 1.666667 4.000000 frau_land 50 Jahre plus\n", "18 1 75 3 3.000000 5.000000 frau_stadt 50 Jahre plus\n", "97 2 75 3 2.000000 3.666667 mann_stadt 50 Jahre plus\n", "136 2 77 1 2.000000 5.000000 mann_land 50 Jahre plus\n", "219 1 92 1 1.666667 4.000000 frau_land 50 Jahre plus\n", "\n", "[294 rows x 7 columns]" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten.sort_values(by = 'age', ascending = True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Mit einer Kreuztabelle kann man die Umkodierung genau überprüfen, ohne dafür die 294 Zeilen des Dataframes durchsehen zu müssen. Aus Platzgründen sind unten nur die ersten zehn Zeilen der Kreuztabelle dargestellt - die Umkodierung ist jedenfalls richtig, soviel sei verraten." ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Altersgruppe15 - 25 Jahre26 - 35 Jahre36 - 49 Jahre50 Jahre plus
age
151000
201000
217000
2214000
2316000
2412000
2517000
2601700
2701100
2801000
\n", "
" ], "text/plain": [ "Altersgruppe 15 - 25 Jahre 26 - 35 Jahre 36 - 49 Jahre 50 Jahre plus\n", "age \n", "15 1 0 0 0\n", "20 1 0 0 0\n", "21 7 0 0 0\n", "22 14 0 0 0\n", "23 16 0 0 0\n", "24 12 0 0 0\n", "25 17 0 0 0\n", "26 0 17 0 0\n", "27 0 11 0 0\n", "28 0 10 0 0" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.crosstab(daten.age, daten.Altersgruppe).head(10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 8.3) Mediansplit\n", "\n", "Mit der Funktion **qcut()** kann man automatisch (ungefähr) gleich große (was die Fallzahl betrifft) Kategorien erstellen. Erstellt man 2 Kategorien, handelt es sich um einen sog. Mediansplit. Dies wird im folgenden Beispiel gezeigt. Der Parameter *retbins = True* gibt uns die Kategorieneinteilung wieder (die sog. *bins*).\n", "\n", "[pandas.qcut](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.qcut.html)" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 alt\n", "1 alt\n", "2 alt\n", "3 alt\n", "4 alt\n", " ... \n", "289 jung\n", "290 jung\n", "291 jung\n", "292 alt\n", "293 jung\n", "Name: age, Length: 294, dtype: category\n", "Categories (2, object): ['jung' < 'alt']" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "out, bins = pd.qcut(daten ['age'], 2, labels = [\"jung\", \"alt\"], retbins = True) # 'out' = output, 'bins' = klassifizierung\n", "\n", "# hier in 2 gleich große Gruppen (Mediansplit) aufgeteilt, auch 3, 4, 5, usw. Gruppen sind natürlich möglich.\n", "\n", "out" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Diese Verfahren liefert uns zwei Outputs: *out* und *bins*. *out* liefert uns eine Übersicht der zugeordneten Kategorien pro Zeile (siehe oben), *bins* liefert uns die Kategorieneinteilung (siehe unten)." ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([15., 36., 92.])" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bins" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Die Variable *Alter* wurde in 2 Gruppen aufgeteilt, Gruppe 'jung' von 15 bis 36 und Gruppe 'alt' von >36 bis 92 (d.h. von 37 bis 92).\n", "\n", "Hier zum Vergleich das Originalalter:" ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 50\n", "1 57\n", "2 66\n", "3 50\n", "4 60\n", " ..\n", "289 24\n", "290 36\n", "291 31\n", "292 37\n", "293 23\n", "Name: age, Length: 294, dtype: int64" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten['age']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Und hier zum Vergleich der **Median** des Alters, er liegt bei 36 Jahren. Somit wurde oben wie erwähnt ein Mediansplit durchgeführt." ] }, { "cell_type": "code", "execution_count": 68, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "36.0" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten['age'].median()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Einfügen der Mediansplit-Variable ins Dataframe\n", "\n", "Mit folgender Codezeile können wir den Mediansplit wie vorhin berechnen und als neue Variable gleich direkt in unser Dataframe einfügen." ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [], "source": [ "daten['age_mediansplit'] = pd.qcut(daten ['age'], 2, labels = [\"jung\", \"alt\"])" ] }, { "cell_type": "code", "execution_count": 70, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
sexagewohnortvolksmusikhardrocktypoAltersgruppeage_mediansplit
015022.6666673.666667ohne Zuordnung50 Jahre plusalt
115711.0000003.333333frau_land50 Jahre plusalt
226632.0000004.333333mann_stadt50 Jahre plusalt
\n", "
" ], "text/plain": [ " sex age wohnort volksmusik hardrock typo Altersgruppe \\\n", "0 1 50 2 2.666667 3.666667 ohne Zuordnung 50 Jahre plus \n", "1 1 57 1 1.000000 3.333333 frau_land 50 Jahre plus \n", "2 2 66 3 2.000000 4.333333 mann_stadt 50 Jahre plus \n", "\n", " age_mediansplit \n", "0 alt \n", "1 alt \n", "2 alt " ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten.head(3)" ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
sexagewohnortvolksmusikhardrocktypoAltersgruppeage_mediansplit
29123115.0000004.666667mann_land26 - 35 Jahrejung
29213735.0000001.000000frau_stadt36 - 49 Jahrealt
29312314.3333333.333333frau_land15 - 25 Jahrejung
\n", "
" ], "text/plain": [ " sex age wohnort volksmusik hardrock typo Altersgruppe \\\n", "291 2 31 1 5.000000 4.666667 mann_land 26 - 35 Jahre \n", "292 1 37 3 5.000000 1.000000 frau_stadt 36 - 49 Jahre \n", "293 1 23 1 4.333333 3.333333 frau_land 15 - 25 Jahre \n", "\n", " age_mediansplit \n", "291 jung \n", "292 alt \n", "293 jung " ] }, "execution_count": 71, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten.tail(3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 8.4) Klassifizierung nach gleich großen Intervallen\n", "\n", "Eine ähnliche, aber nicht idente, Methode liegt mit der Funktion **cut()** vor.\n", "\n", "[pandas.cut](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.cut.html#pandas.cut)\n", "\n", "Es werden hierbei nämlich keine gleich großen Gruppen (was die Fallzahl betrifft) gebildet, sondern die Funktion **cut()** richtet sich nach den Werten, d.h. z.B. von 20-40, 40-60, 60-80, usw., also jeweils 20 Abstand, egal wie viele Fälle enthalten sind." ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [], "source": [ "out1, bins1 = pd.cut(daten['age'], 3, retbins = True, labels = ['jung', 'mittel', 'alt'])" ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 mittel\n", "1 mittel\n", "2 mittel\n", "3 mittel\n", "4 mittel\n", " ... \n", "289 jung\n", "290 jung\n", "291 jung\n", "292 jung\n", "293 jung\n", "Name: age, Length: 294, dtype: category\n", "Categories (3, object): ['jung' < 'mittel' < 'alt']" ] }, "execution_count": 73, "metadata": {}, "output_type": "execute_result" } ], "source": [ "out1" ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([14.92, 40.67, 66.33, 92. ])" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bins1.round(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**cut()** hat also Alterskategorien gebildet, welche von 15-40, 41-66 und 67-92 reichen; also jeweils 26-Jahre-Intervalle." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Einfügen der Klassifizierungsvariable ins Dataframe\n", "\n", "Mit folgender Codezeile lässt sich diese Variable direkt ins Dataframe einfügen." ] }, { "cell_type": "code", "execution_count": 75, "metadata": {}, "outputs": [], "source": [ "daten['Alterskategorien'] = pd.cut(daten['age'], 3, labels = ['jung', 'mittel', 'alt'])" ] }, { "cell_type": "code", "execution_count": 76, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
sexagewohnortvolksmusikhardrocktypoAltersgruppeage_mediansplitAlterskategorien
015022.6666673.666667ohne Zuordnung50 Jahre plusaltmittel
115711.0000003.333333frau_land50 Jahre plusaltmittel
226632.0000004.333333mann_stadt50 Jahre plusaltmittel
\n", "
" ], "text/plain": [ " sex age wohnort volksmusik hardrock typo Altersgruppe \\\n", "0 1 50 2 2.666667 3.666667 ohne Zuordnung 50 Jahre plus \n", "1 1 57 1 1.000000 3.333333 frau_land 50 Jahre plus \n", "2 2 66 3 2.000000 4.333333 mann_stadt 50 Jahre plus \n", "\n", " age_mediansplit Alterskategorien \n", "0 alt mittel \n", "1 alt mittel \n", "2 alt mittel " ] }, "execution_count": 76, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten.head(3)" ] }, { "cell_type": "code", "execution_count": 77, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
sexagewohnortvolksmusikhardrocktypoAltersgruppeage_mediansplitAlterskategorien
29123115.0000004.666667mann_land26 - 35 Jahrejungjung
29213735.0000001.000000frau_stadt36 - 49 Jahrealtjung
29312314.3333333.333333frau_land15 - 25 Jahrejungjung
\n", "
" ], "text/plain": [ " sex age wohnort volksmusik hardrock typo Altersgruppe \\\n", "291 2 31 1 5.000000 4.666667 mann_land 26 - 35 Jahre \n", "292 1 37 3 5.000000 1.000000 frau_stadt 36 - 49 Jahre \n", "293 1 23 1 4.333333 3.333333 frau_land 15 - 25 Jahre \n", "\n", " age_mediansplit Alterskategorien \n", "291 jung jung \n", "292 alt jung \n", "293 jung jung " ] }, "execution_count": 77, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten.tail(3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 8.5) Dummyvariablen erstellen\n", "\n", "Pandas bietet mit der Funktion **get_dummies()** ein einfache Möglichkeit, Dummyvariablen automatisch zu erstellen. Im Folgenden sollen aus der Variable *wohnort* (drei Ausprägungen) Dummyvariablen erstellt werden. Die Variable *wohnort* ist nominal (bzw. ordinal, je nach Interpretation), aber nicht dichotom, kann also bspw. in Regressionsanalysen nicht als unabhängige Variable eingesetzt werden. Dummyvariablen, zwar im Prinzip noch nominal, aber als dichotome Variablen gleichzeitig auch als intervallskalierte Variablen zu interpretieren, jedoch schon.\n", "\n", "[pandas.get_dummies](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.get_dummies.html)" ] }, { "cell_type": "code", "execution_count": 78, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
123
0010
1100
2001
3010
4001
\n", "
" ], "text/plain": [ " 1 2 3\n", "0 0 1 0\n", "1 1 0 0\n", "2 0 0 1\n", "3 0 1 0\n", "4 0 0 1" ] }, "execution_count": 78, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dummy = pd.get_dummies(daten['wohnort'])\n", "\n", "dummy.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Die Dummyvariablen sind einstweilen im Objekt (Dataframe) *dummy* gespeichert. Wir erfahren gleich, wir die Dummyvariablen in unseren ursprünglichen Datensatz integrieren.\n", "\n", "Aber jedenfalls wurde richtig umkodiert, wenn wir obige Dummy-Tabelle mit untenstehendem Auszug aus den Originaldaten zum *wohnort* vergleichen:" ] }, { "cell_type": "code", "execution_count": 79, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 2\n", "1 1\n", "2 3\n", "3 2\n", "4 3\n", "Name: wohnort, dtype: int64" ] }, "execution_count": 79, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten['wohnort'].head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Einfügen der Dummyvariablen ins Dataframe\n", "\n", "Das Einfügen der Dummyvariablen ins Dataframe erfolgt - wie bei den beiden vorangehenden Beispielen - leicht mit einer Codezeile. Allerdings muss man dabei vorab wissen, wieviele Dummyvariablen erstellt werden - denn genau so viele neue Variablen muss man anlegen! In unserem Fall werden 3 Dummyvariablen erstellt, also legen wird 3 neue Variablen (*D1*, *D2*, *D3*) an!" ] }, { "cell_type": "code", "execution_count": 80, "metadata": {}, "outputs": [], "source": [ "daten[['D1', 'D2', 'D3']] = pd.get_dummies(daten['wohnort'])" ] }, { "cell_type": "code", "execution_count": 81, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
sexagewohnortvolksmusikhardrocktypoAltersgruppeage_mediansplitAlterskategorienD1D2D3
015022.6666673.666667ohne Zuordnung50 Jahre plusaltmittel010
115711.0000003.333333frau_land50 Jahre plusaltmittel100
226632.0000004.333333mann_stadt50 Jahre plusaltmittel001
315022.3333332.666667ohne Zuordnung50 Jahre plusaltmittel010
416032.3333333.000000frau_stadt50 Jahre plusaltmittel001
\n", "
" ], "text/plain": [ " sex age wohnort volksmusik hardrock typo Altersgruppe \\\n", "0 1 50 2 2.666667 3.666667 ohne Zuordnung 50 Jahre plus \n", "1 1 57 1 1.000000 3.333333 frau_land 50 Jahre plus \n", "2 2 66 3 2.000000 4.333333 mann_stadt 50 Jahre plus \n", "3 1 50 2 2.333333 2.666667 ohne Zuordnung 50 Jahre plus \n", "4 1 60 3 2.333333 3.000000 frau_stadt 50 Jahre plus \n", "\n", " age_mediansplit Alterskategorien D1 D2 D3 \n", "0 alt mittel 0 1 0 \n", "1 alt mittel 1 0 0 \n", "2 alt mittel 0 0 1 \n", "3 alt mittel 0 1 0 \n", "4 alt mittel 0 0 1 " ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 8.6) Variablen umpolen\n", "\n", "Dies geht nun schon in Richtung 'Variablen berechnen', was Inhalt des nächsten Kapitels ist, passt jedoch verständlicherweise noch in dieses Kapitel zum Thema 'umkodieren von Variablen'. Oft kommt es in empirischen Studien vor, dass Items unterschiedlich gepolt sind, aber für die Auswertung in eine einheitliche Richtung gebracht werden müssen. Dies erreicht man durch eine sehr einfache Berechnung. Dabei wird die Originalvariable nicht überschrieben sondern eine neue Variable erstellt und ins Dataframe eingefügt.\n", "\n", "[Deriving New Columns & Defining Python Functions](https://mode.com/python-tutorial/defining-python-functions/)" ] }, { "cell_type": "code", "execution_count": 82, "metadata": {}, "outputs": [], "source": [ "daten[\"volksmusik_umk\"] = (daten[\"volksmusik\"]*(-1))+6 # z.B. +6 (5-stufige), +7 (6-stufige Antwortskala), usw." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Unsere Originalvariable *volksmusik* hat Ausprägungen von 1 bis 5. Will man diese Variable umpolen, multipliziert man mit -1. Die Ausprägungen reichen dann von -5 bis -1. Um wieder auf eine Spannweite von 1 bis 5 zu kommen, wird die Zahl 6 addiert. Fertig, die Variable *volksmusik_umk* weist die gleiche Spannweite im positiven Bereich auf wie zuvor, wurde jedoch inhaltlich umgepolt. Was zuvor 1 (höre sehr gerne Volksmusik) war, ist nun 5 (höre sehr gerne Volksmusik)." ] }, { "cell_type": "code", "execution_count": 83, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
sexagewohnortvolksmusikhardrocktypoAltersgruppeage_mediansplitAlterskategorienD1D2D3volksmusik_umk
015022.673.67ohne Zuordnung50 Jahre plusaltmittel0103.33
115711.003.33frau_land50 Jahre plusaltmittel1005.00
226632.004.33mann_stadt50 Jahre plusaltmittel0014.00
315022.332.67ohne Zuordnung50 Jahre plusaltmittel0103.67
416032.333.00frau_stadt50 Jahre plusaltmittel0013.67
\n", "
" ], "text/plain": [ " sex age wohnort volksmusik hardrock typo Altersgruppe \\\n", "0 1 50 2 2.67 3.67 ohne Zuordnung 50 Jahre plus \n", "1 1 57 1 1.00 3.33 frau_land 50 Jahre plus \n", "2 2 66 3 2.00 4.33 mann_stadt 50 Jahre plus \n", "3 1 50 2 2.33 2.67 ohne Zuordnung 50 Jahre plus \n", "4 1 60 3 2.33 3.00 frau_stadt 50 Jahre plus \n", "\n", " age_mediansplit Alterskategorien D1 D2 D3 volksmusik_umk \n", "0 alt mittel 0 1 0 3.33 \n", "1 alt mittel 1 0 0 5.00 \n", "2 alt mittel 0 0 1 4.00 \n", "3 alt mittel 0 1 0 3.67 \n", "4 alt mittel 0 0 1 3.67 " ] }, "execution_count": 83, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten.head().round(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Kontrolle der Umkodierung mittels Kreuztabellen\n", "\n", "Visuell kann man aus obigem Ausschnitt des Dataframes schon ablesen, dass höchstwahrscheinlich korrekt umkodiert wurde. Dennoch empfiehlt es sich immer, jegliche Umkodierung zu überprüfen. Bei Umkodierungen von Items mit wenigen Ausprägungen geht das sehr übersichtlich mit Kreuztabellen. Alle Werte ausserhalb der Diagonalen müssen *0* sein! In unserem Fall haben die beiden Variablen etwas mehr Ausprägungen, sodass dies nicht ganz so übersichtlich ist." ] }, { "cell_type": "code", "execution_count": 84, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
volksmusik_umk1.001.331.501.672.002.332.673.003.333.674.004.334.675.00
volksmusik
1.00000000000000011
1.3300000000000040
1.6700000000000700
2.00000000000014000
2.33000000000110000
2.67000000001000000
3.00000000021000000
3.33000000270000000
3.67000002100000000
4.00000037000000000
4.33000310000000000
4.5000100000000000
4.67036000000000000
5.00630000000000000
\n", "
" ], "text/plain": [ "volksmusik_umk 1.00 1.33 1.50 1.67 2.00 2.33 2.67 3.00 3.33 3.67 \\\n", "volksmusik \n", "1.00 0 0 0 0 0 0 0 0 0 0 \n", "1.33 0 0 0 0 0 0 0 0 0 0 \n", "1.67 0 0 0 0 0 0 0 0 0 0 \n", "2.00 0 0 0 0 0 0 0 0 0 0 \n", "2.33 0 0 0 0 0 0 0 0 0 11 \n", "2.67 0 0 0 0 0 0 0 0 10 0 \n", "3.00 0 0 0 0 0 0 0 21 0 0 \n", "3.33 0 0 0 0 0 0 27 0 0 0 \n", "3.67 0 0 0 0 0 21 0 0 0 0 \n", "4.00 0 0 0 0 37 0 0 0 0 0 \n", "4.33 0 0 0 31 0 0 0 0 0 0 \n", "4.50 0 0 1 0 0 0 0 0 0 0 \n", "4.67 0 36 0 0 0 0 0 0 0 0 \n", "5.00 63 0 0 0 0 0 0 0 0 0 \n", "\n", "volksmusik_umk 4.00 4.33 4.67 5.00 \n", "volksmusik \n", "1.00 0 0 0 11 \n", "1.33 0 0 4 0 \n", "1.67 0 7 0 0 \n", "2.00 14 0 0 0 \n", "2.33 0 0 0 0 \n", "2.67 0 0 0 0 \n", "3.00 0 0 0 0 \n", "3.33 0 0 0 0 \n", "3.67 0 0 0 0 \n", "4.00 0 0 0 0 \n", "4.33 0 0 0 0 \n", "4.50 0 0 0 0 \n", "4.67 0 0 0 0 \n", "5.00 0 0 0 0 " ] }, "execution_count": 84, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.crosstab(round(daten.volksmusik, 2), round(daten.volksmusik_umk, 2))\n", "\n", "# die built-in Funktion 'round()' wurde verwendet, um die Spalten-/Zeilenbeschriftungen kurz und somit den Output übersichtlich zu halten!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Kontrolle der Umkodierung mittels Korrelation\n", "\n", "Bei Variablen mit vielen Ausprägungen kann man auch einfach die Korrelation zwischen Originalvariable und umkodierter Variable berechnen. Alles andere als ein Korrelationskoeffizient von '-1' würde auf Fehler bei der Umkodierung hinweisen.\n", "\n", "[pandas.DataFrame.corr](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.corr.html)" ] }, { "cell_type": "code", "execution_count": 85, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
volksmusikvolksmusik_umk
volksmusik1.0-1.0
volksmusik_umk-1.01.0
\n", "
" ], "text/plain": [ " volksmusik volksmusik_umk\n", "volksmusik 1.0 -1.0\n", "volksmusik_umk -1.0 1.0" ] }, "execution_count": 85, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten[['volksmusik', 'volksmusik_umk']].corr(method = 'pearson')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ebenso kann ein Streudiagramm mit den beiden Variablen visuell Aufschluss über den Erfolg der Umkodierung geben. Jeglicher Ausreißer von einer diagonalen Linie würde auf einen Fehler bei der Umkodierung hinweisen." ] }, { "cell_type": "code", "execution_count": 86, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "ax = daten.plot.scatter(x = 'volksmusik', y = 'volksmusik_umk')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", " \n", " \n", " \n", "
https://github.com/manfred2020/DA_mit_Python
" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.9" } }, "nbformat": 4, "nbformat_minor": 2 }