{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 5) Deskriptive Datenanalyse\n", "\n", "Beginnen wir wieder mit dem Import von **Pandas** und laden wir den uns bereits bekannten Datensatz." ] }, { "cell_type": "code", "execution_count": 1, "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.6666673.666667
115711.0000003.333333
226632.0000004.333333
\n", "
" ], "text/plain": [ " sex age wohnort volksmusik hardrock\n", "0 1 50 2 2.666667 3.666667\n", "1 1 57 1 1.000000 3.333333\n", "2 2 66 3 2.000000 4.333333" ] }, "execution_count": 1, "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)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 5.1) Häufigkeitsanalyse\n", "\n", "Anhand dieser Daten werden wir in diesem Kapitel nun erste deskriptive/explorative Auswertungen vornehmen. Beginnen wir zuerst mit Häufigkeitsanalysen.\n", "\n", "Die Funktion **value_counts()** liefert uns die Häufigkeiten für die Ausprägungen der angegebenen Spalte (Variable).\n", "\n", "[pandas.Series.value_counts](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.value_counts.html)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3 139\n", "1 95\n", "2 60\n", "Name: wohnort, dtype: int64" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten['wohnort'].value_counts()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Damit die Sortierung aufsteigend nach den Ausprägungen der Variable (und nicht nach Häufigkeiten) erfolgt, fügen wir noch **sort_index()** an." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1 95\n", "2 60\n", "3 139\n", "Name: wohnort, dtype: int64" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten['wohnort'].value_counts().sort_index() # 'sort_index()' sortiert nach den Kategorien, nicht nach den Häufigkeiten" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Möchten wir nach Häufigkeiten sortieren, fügen wir **sort_values()** an. Je nachdem, ob wir nach Häufigkeiten auf- oder absteigend sortieren möchten, schreiben wir *ascending = True* oder *ascending = False* in die Klammer (wobei *True* die Standardeinstellung ist, man dies also nicht explizit hinschreiben muss)." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3 139\n", "1 95\n", "2 60\n", "Name: wohnort, dtype: int64" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten['wohnort'].value_counts().sort_values(ascending = False)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2 60\n", "1 95\n", "3 139\n", "Name: wohnort, dtype: int64" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten['wohnort'].value_counts().sort_values() # True ist standard" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Wir können auch den relativen Anteil (d.h. Prozent) jeder einzelnen Merkmalsausprägung ermitteln. Dazu fügen wir *normalize = True* hinzu. Für die Umrechnung in Prozent wurde hier noch mit 100 multipliziert, die Zahlen wurden dabei zuvor aus Gründen der Übersichtlichkeit auf 4 Dezimalstellen reduziert. Außerdem werden nur die ersten 5 Zeilen angezeigt, da die Variable Alter viele Ausprägungen hat und der Output sonst zu lang wird." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "15 0.34\n", "20 0.34\n", "21 2.38\n", "22 4.76\n", "23 5.44\n", "Name: age, dtype: float64" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten['age'].value_counts(sort = False, normalize = True).head().round(4)*100\n", "# Nach Kategoriennummer sortiert und in Prozent (relative Häufigkeiten) angegeben" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Man kann erkennen, dass bspw. nur jeweils 0,34% 15 bzw. 20 Jahre alt sind.\n", "\n", "Interessant ist ebenfalls, die kumulierten Summen zu ermitteln. Durch hinzufügen von **cumsum()** erhalten wir diese. Hier sieht man, dass insgesamt 0,68% bis inkl. 20 Jahre alt sind.\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": 7, "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", "Name: age, dtype: float64" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten['age'].value_counts(sort = False, normalize = True).cumsum().head().round(4)*100 # kumulative Prozentwerte" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Exkurs: Variablennamen als Attribute des Dataframes\n", "\n", "Variablen(Spalten)namen können in neueren Versionen von **Pandas** nicht mehr nur in der Form *dataframename['variablenname']* geschrieben werden, sondern auch als Attribut des Dataframes in der Form *dataframename.variablenname*. Im Folgenden als Beispiel dieser Schreibweise nochmals der Befehl von vorhin, diesmal in Attributschreibweise." ] }, { "cell_type": "code", "execution_count": 8, "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", "Name: age, dtype: float64" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten.age.value_counts(sort = False, normalize = True).cumsum().head().round(4)*100" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Grafische Darstellung der Häufigkeiten\n", "\n", "Aus den Häufigkeitsdaten können wir eine informative Grafik erstellen. Sollen die relativen und die kumulierten relativen Häufigkeiten in einem Diagramm abgebildet werden, weisen wir beides jeweils einem Objekt (unten mit *grafik1* und *grafik2* bezeichnet zu. Dann erstellen wir ein neues Dataframe (*grafik*), fügen diesem Dataframe die beiden vorhin erstellten Objekte hinzu und vergeben gleichzeitig informative Spaltennamen." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "grafik1 = daten['age'].value_counts(sort = False, normalize = True).cumsum()*100\n", "grafik2 = daten['age'].value_counts(sort = False, normalize = True)*100\n", "grafik = pd.DataFrame()\n", "grafik ['kumulierte Häufigkeiten'] = grafik1\n", "grafik ['Häufigkeiten'] = grafik2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Den Inhalt des Dataframes veranschaulichen wir nun mit **plot.line()** als Liniendiagramm. Wie im Output ersichtlich, werden beide Häufigkeiten in der Grafik abgebildet." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "ax = grafik.plot.line(rot = 0)\n", "# 'rot' würde eine Drehung (in Grad) der X-Achsen Beschriftung ermöglichen; in diesem Fall erfolgt keine Drehung" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\"Einfacher\" (d.h. mit nur einer Codezeile, welche dafür aber etwas länger ist...) geht es mit folgender direkten Methode:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "grafikneu = pd.DataFrame({'kum. H.' : daten['age'].value_counts(sort = False, normalize = True).cumsum()*100,\n", " 'H.' : daten['age'].value_counts(sort = False, normalize = True)*100})" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Wir erhalten das gleiche Ergebnis wie vorhin." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "ax = grafikneu.plot.line(rot = 0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Grafiken können natürlich auch gespeichert werden (mehr dazu in Kapitel 11 bzw. unter untenstehendem Link). Dazu müssen wir die Grafik mit **ax.get_figure()** zuerst einem neuen Objekt (*fig*) zuweisen.\n", "\n", "[savefig()](https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.figure.Figure.html?highlight=savefig#matplotlib.figure.Figure.savefig)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "fig = ax.get_figure()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fig" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Nun können wir die Grafik mit **savefig()** an einem selbst einzugebenden Pfad speichern (**ax.savefig** hätte nicht funktioniert), z.B. als PNG Datei mit einer Auflösung von 150 dpi - dies kann frei bestimmt werden, je größer der Wert, desto besser die Auflösung/Qualität, desto höher allerdings auch der Speicherplatzbedarf)." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "fig.savefig('C:\\\\Datenfiles\\\\test.png', dpi=150)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Durch *subplots = True* kann erreicht werden, dass die beiden Linien jeweils in eigenen Digrammen angezeigt werden. Die Legendenbeschriftung wird dabei von **Pandas** jeweils dort platziert, wo am ehesten Platz dafür vorhanden ist.\n", "\n", "[pandas.DataFrame.plot.line](https://pandas.pydata.org/pandas-docs/version/0.23/generated/pandas.DataFrame.plot.line.html)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "ax = grafik.plot.line(rot = 0, subplots = True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 5.2) Weitere deskriptive / explorative Analysen\n", "\n", "Nach den Ausführungen zur Häufigkeitsanalyse geht es nun mit div. Lage- und Streuungsmaßen weiter. Den Anfang macht der arithmetische Mittelwert, den wir mit der Funktion **mean()** erhalten. Wie alle in weiterer Folge vorgestellten Maße lässt sich auch diese Funktion sowohl auf das ganze Dataframe (also alle Variablen) wie auch auf einzelne Spalten anwenden." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[pandas.DataFrame.mean](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.mean.html#pandas.DataFrame.mean)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "sex 1.435374\n", "age 38.517007\n", "wohnort 2.149660\n", "volksmusik 3.769274\n", "hardrock 2.978458\n", "dtype: float64" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten.mean() # Mittelwert für alle Variablen im Dataframe, nicht gerundet" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Wir können uns die Mittelwerte mit der Funktion **round()** auch gerundet - bspw. auf 2 Dezimalstellen - ausgeben lassen.\n", "\n", "[pandas.DataFrame.round](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.round.html)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "sex 1.44\n", "age 38.52\n", "wohnort 2.15\n", "volksmusik 3.77\n", "hardrock 2.98\n", "dtype: float64" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten.mean().round(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In obiger Ausgabe sind auch nominale und ordinale Variblen enthalten. Sinn macht, den arithmetischen Mittelwert für metrische Variablen zu berechnen. Wie können wir uns den Mittelwert einer Variable (Spalte) ausgeben lassen, bspw. des Alters? Einfach..." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "38.51700680272109" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten.age.mean() # oder: daten['age'].mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Schöner - bzw. für manche Zwecke der Darstellung in Texten brauchbarer - wäre aber ein gerundeter Wert." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "ename": "AttributeError", "evalue": "'float' object has no attribute 'round'", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mdaten\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mage\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmean\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mround\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[1;31mAttributeError\u001b[0m: 'float' object has no attribute 'round'" ] } ], "source": [ "daten.age.mean().round(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Offenbar funktioniert die Funktion **round()** für einzelne Variablen nicht; zumindest nicht in dieser Schreibweise. Vgl. dazu auch so manche Diskussionen im Internet, bspw.: [AttributeError: 'float' object has no attribute 'round'](https://stackoverflow.com/questions/48732158/int-object-has-no-attribute-round)\n", "\n", "Möglich ist folgende Schreibweise:" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "age 38.52\n", "dtype: float64" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten[['age']].mean().round(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Allerdings bekommen wird dann nicht nur den Mittelwert, sondern auch den *dtype* ausgegeben. Das ist für Texte nicht zu gebrauchen, vgl. folgendes Beispiel:" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Der Mittelwert des Alters beträgt: age 38.52\n", "dtype: float64 Jahre\n" ] } ], "source": [ "print(\"Der Mittelwert des Alters beträgt:\", daten[['age']].mean().round(2), \"Jahre\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Folgende Schreibweise führt zum Erfolg:" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "38.52" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "round(daten.age.mean(), 2)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Der Mittelwert des Alters beträgt: 38.52 Jahre\n" ] } ], "source": [ "print(\"Der Mittelwert des Alters beträgt:\", round(daten['age'].mean(), 2), \"Jahre\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Es handelt sich dabei um die **round()** Funktion von Python ('built-in' Funktion [round](https://docs.python.org/3/library/functions.html#round)), nicht um die **round()** Funktion aus Pandas [pandas.DataFrame.round](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.round.html)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Dieses Problem der Rundung beschäftigt uns auch bei der Ausgabe der Standardabweichung, wie wir gleich sehen werden.\n", "\n", "Die Standardabweichung erhalten wir mit **std()**, sie ist in der selben Einheit wie der Mittelwert, nämlich in Jahren. Fügen wir dies gleich mit einer **print()** Funktion ein.\n", "\n", "[pandas.DataFrame.std](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.std.html#pandas.DataFrame.std)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "13.93 Jahre\n" ] } ], "source": [ "print(round(daten.age.std(), 2),\"Jahre\") # Standardabweichung" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Wenn wir schon dabei sind, geben wir gleich den Mittelwert und die Standardabweichung (welche ohnehin zumeist gemeinsam interpretiert werden) in einer leicht lesbaren Form aus." ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Durchschnittsalter: 38.52 Jahre (Standardabweichung: 13.93 Jahre)\n" ] } ], "source": [ "print(\"Durchschnittsalter:\", round(daten.age.mean(), 2),\n", " \"Jahre (Standardabweichung:\", round(daten.age.std(), 2),\"Jahre)\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Für die Rundung von Mittelwert und Standardabweichung (wenn wir uns die Werte einer einzelnen Variable (Spalte) ausgeben lassen möchten) benötigen wir also die 'built-in' Funktion **round()** von Python, und nicht jene von **Pandas**." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Eine übliche Kennzahl zum Vergleich der Streuung von verschiedenen Variablen ist der Variationskoeffizient. Er berechnet sich aus (Standardabweichung/Mittelwert)*100 (und kann somit als Prozentzahl interpretiert werden).\n", "\n", "Sehen wir uns nachfolgend an, welche der beiden Variablen *volksmusik* und *hardrock* eine breitere Streuung der Antworten aufweist." ] }, { "cell_type": "code", "execution_count": 27, "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.6666673.666667
115711.0000003.333333
226632.0000004.333333
\n", "
" ], "text/plain": [ " sex age wohnort volksmusik hardrock\n", "0 1 50 2 2.666667 3.666667\n", "1 1 57 1 1.000000 3.333333\n", "2 2 66 3 2.000000 4.333333" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten.head(3)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "vk_vm, vk_hr = ((daten.volksmusik.std())/(daten.volksmusik.mean())*100,\n", " (daten.hardrock.std())/(daten.hardrock.mean())*100)" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Die Variable 'Volksmusik' weist einen Variationskoeffizienten von 29.904393232025267 auf, die Variable 'Hardrock' einen Variationskoeffizienten von 36.047401216687\n" ] } ], "source": [ "print(\"Die Variable 'Volksmusik' weist einen Variationskoeffizienten von\", vk_vm,\n", " \"auf, die Variable 'Hardrock' einen Variationskoeffizienten von\", vk_hr)\n", "\n", "# Man könnte die Variationskoeffizienten auch noch runden (vgl. Python 'built-in' Funktion 'round()',\n", "# aber dann wäre die Formel noch länger und unübersichtlicher" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Die breitere Streuung um den Mittelwert weist also die Variable *hardrock* auf.\n", "\n", "Sehen wir uns in weiterer Folge nun noch andere Lage- und Streuunsmaße an.\n", "\n", "Den Standardfehler des Mittelwerts erhalten wir mit der Funktion **sem()**. Ab hier funktioniert übrigens die **round()** Funktion aus **Pandas** wieder. Diese ist in der Handhabung einfacher und wird daher von mir bevorzugt, wann immer möglich.\n", "\n", "[pandas.DataFrame.sem](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.sem.html#pandas.DataFrame.sem)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.812" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten['age'].sem().round(3) # Standardfehler des Mittelwerts" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Den Median, ein gegenüber Ausreißern robustes Lagemaß (der mittlere Wert einer geordneten Zahlenreihe), erhalten wir mit **median()**. Er liegt in diesem Fall um rund 2,5 Jahre unter dem Mittelwert, was auf eine leicht rechtsschiefe Verteilung des Alters schließen lässt." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[pandas.DataFrame.median](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.median.html#pandas.DataFrame.median)" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "36.0" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten['age'].median() # Median" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Testen wir die Schiefe nach dieser Behauptung gleich mit **skew()**.\n", "\n", "[pandas.DataFrame.skew](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.skew.html#pandas.DataFrame.skew)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.661" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten['age'].skew().round(3) # Schiefe (in diesem Fall leicht rechtsschief)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Der Modalwert (bzw. Modus) ist der häufigste Wert einer Variable; es können auch mehrere Werte gleich häufig vorkommen, dann gibt es mehrere Modalwerte. In diesem Beispiel erhalten wir nach Anwendung der Funktion **mode()** das Ergebnis, dass ein Alter von 25 sowie von 26 Jahren jeweils am häufigsten vorkommt - es gibt 2 Modalwerte.\n", "\n", "[pandas.DataFrame.mode](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.mode.html#pandas.DataFrame.mode)" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 25\n", "1 26\n", "dtype: int64" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten['age'].mode() # Modalwert (2 in diesem Fall)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Überprüfen wir dieses Ergebnis mit bereits bekannter Methode, nämlich der Funktion **value_counts()**, so sehen wir, das tatsächlich 25 Jahre und 26 Jahre jeweils gleich oft am häufigsten vorkommt, nämlich je 17 Mal." ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "25 17\n", "26 17\n", "23 16\n", "22 14\n", "24 12\n", "55 11\n", "36 11\n", "27 11\n", "50 10\n", "35 10\n", "Name: age, dtype: int64" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten['age'].value_counts().sort_values(ascending = False).head(10) # output mit 'head()' eingeschränkt, da sonst zu lang" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Den kleinsten bzw. den größten Wert einer Variable liefern uns **min()** bzw. **max()**.\n", "\n", "[pandas.DataFrame.min](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.min.html#pandas.DataFrame.min)" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "15" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten['age'].min() # Minimaler Wert" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[pandas.DataFrame.max](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.max.html#pandas.DataFrame.max)" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "92" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten['age'].max() # Maximaler Wert" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Mit **quantile()** können wir uns beliebige, also selbst definierbare, Quantile einer Variable ausgeben lassen. In folgenden Beispiel sehen wir uns die Dezile für die 3 metrischen Variablen im Datensatz an. Man beachte: Wird mehr als eine Variable des Dataframes ausgewählt, müssen die Variablen in doppelter eckiger Klammer angeführt werden!\n", "\n", "[pandas.DataFrame.quantile](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.quantile.html#pandas.DataFrame.quantile)\n", "\n", "[Spezielle Quantile](https://de.wikipedia.org/wiki/Empirisches_Quantil#Spezielle_Quantile)" ] }, { "cell_type": "code", "execution_count": 37, "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", "
agevolksmusikhardrock
0.015.01.0000001.000000
0.123.02.0000001.333333
0.225.03.0000002.000000
0.327.03.3333332.333333
0.431.03.6666672.666667
0.536.04.0000003.000000
0.641.04.3333333.333333
0.748.04.6666673.666667
0.851.45.0000004.000000
0.957.05.0000004.333333
1.092.05.0000005.000000
\n", "
" ], "text/plain": [ " age volksmusik hardrock\n", "0.0 15.0 1.000000 1.000000\n", "0.1 23.0 2.000000 1.333333\n", "0.2 25.0 3.000000 2.000000\n", "0.3 27.0 3.333333 2.333333\n", "0.4 31.0 3.666667 2.666667\n", "0.5 36.0 4.000000 3.000000\n", "0.6 41.0 4.333333 3.333333\n", "0.7 48.0 4.666667 3.666667\n", "0.8 51.4 5.000000 4.000000\n", "0.9 57.0 5.000000 4.333333\n", "1.0 92.0 5.000000 5.000000" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten[['age', 'volksmusik', 'hardrock']].quantile([0, .1, .2, .3, .4, .5, .6, .7, .8, .9, 1]) # Quantile, beliebige einstellbar\n", "# Durch die Angabe von '0' und '1' erhält man den Minimal- bzw. Maximalwert" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Die Funktion **describe()** schließlich liefert uns auf einen Schlag gleich mehrere gebräuchliche Kennzahlen, entweder für alle Variablen im Datensatz oder für ausgewählte Variablen.\n", "\n", "[pandas.DataFrame.describe](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.describe.html#pandas.DataFrame.describe)" ] }, { "cell_type": "code", "execution_count": 38, "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", "
sexagewohnortvolksmusikhardrock
count294.000000294.000000294.00000294.000000294.000000
mean1.43537438.5170072.149663.7692742.978458
std0.49665113.9300320.881001.1271791.073657
min1.00000015.0000001.000001.0000001.000000
25%1.00000026.0000001.000003.0000002.333333
50%1.00000036.0000002.000004.0000003.000000
75%2.00000050.0000003.000004.6666673.666667
max2.00000092.0000003.000005.0000005.000000
\n", "
" ], "text/plain": [ " sex age wohnort volksmusik hardrock\n", "count 294.000000 294.000000 294.00000 294.000000 294.000000\n", "mean 1.435374 38.517007 2.14966 3.769274 2.978458\n", "std 0.496651 13.930032 0.88100 1.127179 1.073657\n", "min 1.000000 15.000000 1.00000 1.000000 1.000000\n", "25% 1.000000 26.000000 1.00000 3.000000 2.333333\n", "50% 1.000000 36.000000 2.00000 4.000000 3.000000\n", "75% 2.000000 50.000000 3.00000 4.666667 3.666667\n", "max 2.000000 92.000000 3.00000 5.000000 5.000000" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten.describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Solche tabellarischen Übersichten können wir uns auch gerundet ausgeben lassen; das ist ev. übersichtlicher." ] }, { "cell_type": "code", "execution_count": 41, "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", "
sexagewohnortvolksmusikhardrock
count294.00294.00294.00294.00294.00
mean1.4438.522.153.772.98
std0.5013.930.881.131.07
min1.0015.001.001.001.00
25%1.0026.001.003.002.33
50%1.0036.002.004.003.00
75%2.0050.003.004.673.67
max2.0092.003.005.005.00
\n", "
" ], "text/plain": [ " sex age wohnort volksmusik hardrock\n", "count 294.00 294.00 294.00 294.00 294.00\n", "mean 1.44 38.52 2.15 3.77 2.98\n", "std 0.50 13.93 0.88 1.13 1.07\n", "min 1.00 15.00 1.00 1.00 1.00\n", "25% 1.00 26.00 1.00 3.00 2.33\n", "50% 1.00 36.00 2.00 4.00 3.00\n", "75% 2.00 50.00 3.00 4.67 3.67\n", "max 2.00 92.00 3.00 5.00 5.00" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten.describe().round(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Im folgenden Beispiel wählen wir nur zwei metrische Variablen aus. Ausserdem wollen wir nicht alle standardmäßig ausgegebenen Kennzahlen, sondern nur die Anzahl (*count*), den Mittelwert (*mean*), die Standardabweichung (*std*) sowie den Median (*50%*). Diese Auswahl übergeben wir mit **loc** (wieder in doppelter eckiger Klammer, da wir mehrere Zeilen auswählen).\n", "\n", "[pandas.DataFrame.loc](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.loc.html)" ] }, { "cell_type": "code", "execution_count": 42, "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", "
agehardrock
count294.000000294.000000
mean38.5170072.978458
std13.9300321.073657
50%36.0000003.000000
\n", "
" ], "text/plain": [ " age hardrock\n", "count 294.000000 294.000000\n", "mean 38.517007 2.978458\n", "std 13.930032 1.073657\n", "50% 36.000000 3.000000" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten[['age', 'hardrock']].describe().loc[['count', 'mean', 'std', '50%']] # 50% Quantil = Median" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Die Art der Darstellung kann mit **unstack()** auch geändert werden. Die Variablen sind nun nicht mehr horizontal nebeneinander sondern vertikal untereinander gelistet." ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "sex mean 1.44\n", " std 0.50\n", "age mean 38.52\n", " std 13.93\n", "wohnort mean 2.15\n", " std 0.88\n", "volksmusik mean 3.77\n", " std 1.13\n", "hardrock mean 2.98\n", " std 1.07\n", "dtype: float64" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten.describe().loc[['mean', 'std']].unstack().round(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### M-Estimator nach Huber\n", "\n", "Bei den M-Schätzern handelt es sich um eine etwas fortgeschrittenere Methode; da sie aber gut zum Thema dieses Kapitels passen sei hier kurz gezeigt, wie man den M-Schätzer nach Huber erhalten kann.\n", "\n", "M-Schätzer sind im Vergleich zum arithmetischen Mittelwert robuster gegenüber Ausreißern, weil sie diese bei Berechnung des Mittelwerts geringer gewichten. Ein bekannter M-Schätzer ist jener von Huber, bei dem man einen Bereich definieren kann, innerhalb dessen sämtliche Werte voll gewichtet werden. Außerhalb dieses Bereichs werden Werte mit zunehmender Entfernung immer geringer gewichtet (im Gegensatz zu manchen anderen M-Schätzern aber nie mit 0).\n", "\n", "Die Berechnung von M-Schätzern ist mit **Pandas** nicht möglich, wir greifen dazu auf eine Funktion des Pakets **Statsmodels** zurück.\n", "\n", "[statsmodels.robust.scale.Huber](https://www.statsmodels.org/stable/generated/statsmodels.robust.scale.Huber.html#statsmodels.robust.scale.Huber)\n", "\n", "[M-Schätzer](https://de.wikipedia.org/wiki/M-Sch%C3%A4tzer)\n", "\n", "[Weight Functions](https://www.statsmodels.org/stable/rlm_techn1.html)\n", "\n", "\n", "Für (einigermaßen) normalverteilte Daten zeigt folgende Tabelle eine Übersicht gebräuchlicher Tuningkonstanten k (bzw. c auf Englisch) sowie den Bereich der Daten, der voll gewichtet wird. Kleinere Tuningkonstanten gewichten somit mehr Daten geringer als größere Tuningkonstanten. In der dritten Spalten stehen die üblichen Bezeichnungen (Hubers Proposal 2).\n", "\n", "|Tuningkonstante c|voll gewichteter Bereich|Bezeichnung|\n", "|-|-|-|\n", "|1.960|~95%|H19|\n", "|1.645|~90%|H16|\n", "|1.282|~80%|H12|\n", "|0.842|~60%|H8|" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(array(37.68428874), array(15.33869259))" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import statsmodels.api as sm\n", "\n", "sm.robust.scale.Huber(c = 1.2)(daten['age']) # c = die Tuningkonstante, vgl. obige Tabelle" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Die Ausgabe oben zeigt als erste Zahl den geschätzten Mittelwert nach Huber und als zweite Zahl die dazugehörige Streuung. Diese beiden Werte dienen als robuste Alternative zum arithmetischen Mittelwert und dessen Standardabweichung. Die Grafik unten dient nur dazu, die div. Mittelwerte (Mittelwert, Median, M-Schätzer) und deren Streuungen zu verorten." ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "ax = daten.age.plot.hist(bins = 20) # Histogramm mit (max.) 20 Balken" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Wenn wir schon bei robusten Lage- und Streuungsmaßen sind, rufen wir uns nochmal den Median in Erinnerung. Auch dieser ist ein robustes Lagemaß." ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "36.0" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten.age.median() " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Dazu liegt mit der 'median absolute deviation' auch ein entsprechendes Streuungsmaß vor, welches auch mit der Funktion **mad()** ausgegben werden kann.\n", "\n", "[pandas.DataFrame.mad](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.mad.html)" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "11.80832060715442" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daten.age.mad()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Analog zum Variationskoeffizienten, welcher den arithmetischen Mittelwert und die dazugehörige Standardabweichung verwendet, kann man als robustes Äquivalent auch (median absolute deviation)/(median)*100 berechnen." ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [], "source": [ "robuster_vk = ((daten.age.mad())/(daten.age.median()))*100" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [], "source": [ "normaler_vk = ((daten.age.std())/(daten.age.mean()))*100" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Robuster Variationskoeffizient: 32.8 % vs. normaler Variationskoeffizient: 36.17 %\n" ] } ], "source": [ "print(\"Robuster Variationskoeffizient:\", round(robuster_vk, 2), \"% vs. normaler Variationskoeffizient:\", round(normaler_vk, 2), \"%\")" ] } ], "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 }