{
"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",
"
sex
\n",
"
age
\n",
"
wohnort
\n",
"
volksmusik
\n",
"
hardrock
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
1
\n",
"
50
\n",
"
2
\n",
"
2.666667
\n",
"
3.666667
\n",
"
\n",
"
\n",
"
1
\n",
"
1
\n",
"
57
\n",
"
1
\n",
"
1.000000
\n",
"
3.333333
\n",
"
\n",
"
\n",
"
2
\n",
"
2
\n",
"
66
\n",
"
3
\n",
"
2.000000
\n",
"
4.333333
\n",
"
\n",
" \n",
"
\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",
"
sex
\n",
"
age
\n",
"
wohnort
\n",
"
volksmusik
\n",
"
hardrock
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
1
\n",
"
50
\n",
"
2
\n",
"
2.666667
\n",
"
3.666667
\n",
"
\n",
"
\n",
"
1
\n",
"
1
\n",
"
57
\n",
"
1
\n",
"
1.000000
\n",
"
3.333333
\n",
"
\n",
"
\n",
"
2
\n",
"
2
\n",
"
66
\n",
"
3
\n",
"
2.000000
\n",
"
4.333333
\n",
"
\n",
" \n",
"
\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",
"
age
\n",
"
volksmusik
\n",
"
hardrock
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0.0
\n",
"
15.0
\n",
"
1.000000
\n",
"
1.000000
\n",
"
\n",
"
\n",
"
0.1
\n",
"
23.0
\n",
"
2.000000
\n",
"
1.333333
\n",
"
\n",
"
\n",
"
0.2
\n",
"
25.0
\n",
"
3.000000
\n",
"
2.000000
\n",
"
\n",
"
\n",
"
0.3
\n",
"
27.0
\n",
"
3.333333
\n",
"
2.333333
\n",
"
\n",
"
\n",
"
0.4
\n",
"
31.0
\n",
"
3.666667
\n",
"
2.666667
\n",
"
\n",
"
\n",
"
0.5
\n",
"
36.0
\n",
"
4.000000
\n",
"
3.000000
\n",
"
\n",
"
\n",
"
0.6
\n",
"
41.0
\n",
"
4.333333
\n",
"
3.333333
\n",
"
\n",
"
\n",
"
0.7
\n",
"
48.0
\n",
"
4.666667
\n",
"
3.666667
\n",
"
\n",
"
\n",
"
0.8
\n",
"
51.4
\n",
"
5.000000
\n",
"
4.000000
\n",
"
\n",
"
\n",
"
0.9
\n",
"
57.0
\n",
"
5.000000
\n",
"
4.333333
\n",
"
\n",
"
\n",
"
1.0
\n",
"
92.0
\n",
"
5.000000
\n",
"
5.000000
\n",
"
\n",
" \n",
"
\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": [
"
"
],
"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",
"
age
\n",
"
hardrock
\n",
"
\n",
" \n",
" \n",
"
\n",
"
count
\n",
"
294.000000
\n",
"
294.000000
\n",
"
\n",
"
\n",
"
mean
\n",
"
38.517007
\n",
"
2.978458
\n",
"
\n",
"
\n",
"
std
\n",
"
13.930032
\n",
"
1.073657
\n",
"
\n",
"
\n",
"
50%
\n",
"
36.000000
\n",
"
3.000000
\n",
"
\n",
" \n",
"
\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": [
"