{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 7) Kreuztabellierung\n",
"\n",
"Diese Kapitel beschäftigt sich mit einer in den Sozialwissenschaften sehr häufig angewandten Methode; allerdings vorerst nur rein deskriptiv, sozusagen als zweidimensionale Häufigkeitsanalyse. Die mit der Kreuztabellierung häufig verbundenen statistischen Analysen sind mit **Pandas** nicht möglich und werden später in Kapitel 14 behandelt.\n",
"\n",
"Importieren wir zuerst wieder **Pandas** und laden den bereits bekannten Datensatz."
]
},
{
"cell_type": "code",
"execution_count": 2,
"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.67
\n",
"
3.67
\n",
"
\n",
"
\n",
"
1
\n",
"
1
\n",
"
57
\n",
"
1
\n",
"
1.00
\n",
"
3.33
\n",
"
\n",
"
\n",
"
2
\n",
"
2
\n",
"
66
\n",
"
3
\n",
"
2.00
\n",
"
4.33
\n",
"
\n",
" \n",
"
\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": 2,
"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": [
"### 7.1) Kreuztabellen mit crosstab()\n",
"\n",
"**Pandas** bietet mit **crosstab()** eine Funktion zur Erstellung von zwei- und dreidimensionalen Kreuztabellen. Sehen wir uns im ersten Beispiel den Zusammenhang von *sex* und *wohnort* an.\n",
"\n",
"**crosstab()** bietet ein paar interessante Optionen, daher sollte die Dokumentation (vgl. Link) durchgesehen werden.\n",
"\n",
"[pandas.crosstab](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.crosstab.html#pandas.crosstab)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
sex
\n",
"
1
\n",
"
2
\n",
"
\n",
"
\n",
"
wohnort
\n",
"
\n",
"
\n",
"
\n",
" \n",
" \n",
"
\n",
"
1
\n",
"
58
\n",
"
37
\n",
"
\n",
"
\n",
"
2
\n",
"
35
\n",
"
25
\n",
"
\n",
"
\n",
"
3
\n",
"
73
\n",
"
66
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
"sex 1 2\n",
"wohnort \n",
"1 58 37\n",
"2 35 25\n",
"3 73 66"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"kreuztab = pd.crosstab(daten.wohnort, daten.sex) # Abbildung der absoluten Häufigkeiten\n",
"\n",
"# die Zuweisung der Kreuztabelle zum Objekt 'kreuztab' erfolgt nur, weil wir die Daten weiter unten noch für eine Grafik verwenden wollen.\n",
"\n",
"kreuztab"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### Mit Randsummen\n",
"\n",
"Unsere erste Kreuztabelle enthielt die absoluten Häufigkeiten, d.h. man weiß nun z.B., dass 58 Frauen in ländlicher Umgebung wohnen, 25 Männer in kleinstädtischer Umgebung wohnen, usw. Lassen wir uns nun noch die Randsummen ausgeben, dann wissen wir auch, wieviele Personen insgesamt auf jeden Wohnort kommen bzw. wieviele Frauen bzw. Männer in der Stichprobe sind."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
sex
\n",
"
1
\n",
"
2
\n",
"
All
\n",
"
\n",
"
\n",
"
wohnort
\n",
"
\n",
"
\n",
"
\n",
"
\n",
" \n",
" \n",
"
\n",
"
1
\n",
"
58
\n",
"
37
\n",
"
95
\n",
"
\n",
"
\n",
"
2
\n",
"
35
\n",
"
25
\n",
"
60
\n",
"
\n",
"
\n",
"
3
\n",
"
73
\n",
"
66
\n",
"
139
\n",
"
\n",
"
\n",
"
All
\n",
"
166
\n",
"
128
\n",
"
294
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
"sex 1 2 All\n",
"wohnort \n",
"1 58 37 95\n",
"2 35 25 60\n",
"3 73 66 139\n",
"All 166 128 294"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.crosstab(daten.wohnort, daten.sex, margins = True)\n",
"# 'margins=True' gibt uns die Randsummen aus ('False' ist die Standardeinstellung)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### Grafische Darstellung\n",
"\n",
"Kreuztabellen können natürlich auch grafisch dargestellt werden, insbesondere mit einem gestapelten Säulendiagramm."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"ax = kreuztab.plot.bar(rot = 0, stacked = True)\n",
"# 'stacked=True' liefert gestapelte Säulen, 'False' ist die Standardeinstellung und liefert getrennte Säulen pro Geschlecht"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### Gestapeltes (auf 100% pro Säule) Diagramm inkl. Anzeige der dazugehörigen Kreuztabelle mit Zeilenprozenten\n",
"\n",
"Absolute Häufigkeiten lassen Zusammenhänge aber nur schwer erkennen; deshalb möchte man in Kreuztabellen zumeist auch relative Häufigkeiten (Prozentwerte) abbilden - und zwar typischerweise in Richtung der unabhängigen Variable. D.h., befindet sich die UV in den Spalten der Kreuztabelle, wird spaltenweise auf 100% aufsummiert, befindet sich die UV in den Zeilen, wird zeilenweise auf 100% aufsummiert. In unserem Beispiel können wir aber nicht unbedingt davon sprechen, eine UV bzw. eine AV zu haben. Nehmen wir an, uns interessiert die Geschlechterverteilung pro Wohnort - in diesem Fall prozentuieren wir nach Wohnort.\n",
"\n",
"Im folgenden Beispiel berechnen wir - mit den Daten aus der ersten Kreuztabelle von vorhin (Objekt *a*) - mittels einer **lambda** Funktion die Zeilenprozente. Früher musste man dies so durchführen, mittlerweile exisitiert in Pandas aber schon seit längerem auch eine komfortablere Möglichkeit, wie wir weiter unten noch sehen werden.\n",
"\n",
"[Display percent of 100 in stacked bar plot from crosstab from matplotlib in pandas ](https://stackoverflow.com/questions/57981287/display-percent-of-100-in-stacked-bar-plot-from-crosstab-from-matplotlib-in-pand)\n",
"\n",
"[pandas.DataFrame.apply](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.apply.html)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"crosstab = kreuztab.apply(lambda z: z/z.sum()*100, axis = 1).round(2) # Berechnung der Zeilenprozente,\n",
"# 'axis = 0' (Spaltenprozente) / 'axis = 1' (Zeilenprozente)\n",
"\n",
"# Variablen werden aus obiger Kreuztabelle übernommen ('kreuztab' steht für obige Kreuztabelle)\n",
"\n",
"display(crosstab) # Anzeige der neuen Kreuztabelle mit Zeilenprozenten. Oder nur 'crosstab' in Jupyter...\n",
"\n",
"ax = crosstab.plot.bar(stacked = True, rot = 0) # Anzeige der Grafik"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Durch diese Darstellung, sowohl tabellarisch als auch grafisch, können nun Zusammenhänge bzw. Unterschiede leichter ausgemacht werden. So geht klar hervor, dass das Geschlechterverhältnis in der Stichprobe bei Wohnort 3 beinahe ausgewogen ist, während bei Wohnort 1 über 61% Frauen und nur knapp 39% Männer befragt werden konnten.\n",
"\n",
"Einfacher geht die Prozentuierung mit dem Parameter **normalize**. Damit hat man folgende Möglichkeiten:\n",
"\n",
"|Option||Option||\n",
"|-|-|-|-|\n",
"|'index'|Prozentuierung entlang der Zeilen|True|Prozentuierung über alle Werte|\n",
"|1|Prozentuierung entlang der Zeilen|'all'|Prozentuierung über alle Werte|\n",
"|'columns'|Prozentuierung entlang der Spalten|False|keine Prozentuierung, Standardeinstellung|\n",
"|0|Prozentuierung entlang der Spalten|"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
sex
\n",
"
1
\n",
"
2
\n",
"
\n",
"
\n",
"
wohnort
\n",
"
\n",
"
\n",
"
\n",
" \n",
" \n",
"
\n",
"
1
\n",
"
61.05
\n",
"
38.95
\n",
"
\n",
"
\n",
"
2
\n",
"
58.33
\n",
"
41.67
\n",
"
\n",
"
\n",
"
3
\n",
"
52.52
\n",
"
47.48
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
"sex 1 2\n",
"wohnort \n",
"1 61.05 38.95\n",
"2 58.33 41.67\n",
"3 52.52 47.48"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.crosstab(daten.wohnort, daten.sex, normalize = 'index').round(4)*100"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Obige Tabelle liefert natürlich das gleiche Ergebnis wie unsere eigene Berechnung mittels **lambda** Funktion - nur einfacher."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### \"Dreidimensionale\" Kreuztabelle mit crosstab()\n",
"\n",
"Auch das Hinzufügen einer dritten Variable ist mit der **crosstab()** Funktion möglich. Da unser kleiner Datensatz derzeit keine passende dritte Variable enthält, erstellen wir einfach eine. Die Variable *hardrock*, mit derzeit insgesamt 16 Ausprägungen (div. Dezimalzahlen zwischen 1 und 5) soll durch eine Division ohne Rest schließlich nur mehr 5 Ausprägungen haben (1, 2, 3, 4, 5). Da wir die Variable nicht überschreiben wollen, fügen wir eine neue Variable ins Dataframe ein."
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"daten['hardrockpräferenz'] = daten['hardrock']//1 # d.h. bspw. alle Werte von 1 bis <2 werden zu 1, von 2 bis <3 zu 2, usw."
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
sex
\n",
"
age
\n",
"
wohnort
\n",
"
volksmusik
\n",
"
hardrock
\n",
"
hardrockpräferenz
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
1
\n",
"
50
\n",
"
2
\n",
"
2.67
\n",
"
3.67
\n",
"
3.0
\n",
"
\n",
"
\n",
"
1
\n",
"
1
\n",
"
57
\n",
"
1
\n",
"
1.00
\n",
"
3.33
\n",
"
3.0
\n",
"
\n",
"
\n",
"
2
\n",
"
2
\n",
"
66
\n",
"
3
\n",
"
2.00
\n",
"
4.33
\n",
"
4.0
\n",
"
\n",
"
\n",
"
3
\n",
"
1
\n",
"
50
\n",
"
2
\n",
"
2.33
\n",
"
2.67
\n",
"
2.0
\n",
"
\n",
"
\n",
"
4
\n",
"
1
\n",
"
60
\n",
"
3
\n",
"
2.33
\n",
"
3.00
\n",
"
3.0
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" sex age wohnort volksmusik hardrock hardrockpräferenz\n",
"0 1 50 2 2.67 3.67 3.0\n",
"1 1 57 1 1.00 3.33 3.0\n",
"2 2 66 3 2.00 4.33 4.0\n",
"3 1 50 2 2.33 2.67 2.0\n",
"4 1 60 3 2.33 3.00 3.0"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"daten.head().round(2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Erstellen wir nun eine Kreuztabelle mit drei Variablen. *sex* und *wohnort* sollen in den Zeilen zu finden sein, *hardrockpräferenz* in den Spalten (innerhalb eckiger Klammern muss stets die dritte Variable stehen, egal ob sie als Zeilen- oder Spaltenvariable dienen soll). Zusätzlich prozentuieren wir im Beispiel nach Zeilen und lassen und die Randsummen (in diesem Fall: Randprozente) ausgeben."
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
hardrockpräferenz
\n",
"
1.0
\n",
"
2.0
\n",
"
3.0
\n",
"
4.0
\n",
"
5.0
\n",
"
\n",
"
\n",
"
sex
\n",
"
wohnort
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
" \n",
" \n",
"
\n",
"
1
\n",
"
1
\n",
"
8.62
\n",
"
24.14
\n",
"
36.21
\n",
"
31.03
\n",
"
0.00
\n",
"
\n",
"
\n",
"
2
\n",
"
8.57
\n",
"
25.71
\n",
"
40.00
\n",
"
17.14
\n",
"
8.57
\n",
"
\n",
"
\n",
"
3
\n",
"
17.81
\n",
"
17.81
\n",
"
35.62
\n",
"
26.03
\n",
"
2.74
\n",
"
\n",
"
\n",
"
2
\n",
"
1
\n",
"
27.03
\n",
"
29.73
\n",
"
29.73
\n",
"
10.81
\n",
"
2.70
\n",
"
\n",
"
\n",
"
2
\n",
"
20.00
\n",
"
36.00
\n",
"
28.00
\n",
"
8.00
\n",
"
8.00
\n",
"
\n",
"
\n",
"
3
\n",
"
21.21
\n",
"
28.79
\n",
"
30.30
\n",
"
15.15
\n",
"
4.55
\n",
"
\n",
"
\n",
"
All
\n",
"
\n",
"
17.01
\n",
"
25.51
\n",
"
33.67
\n",
"
20.07
\n",
"
3.74
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
"hardrockpräferenz 1.0 2.0 3.0 4.0 5.0\n",
"sex wohnort \n",
"1 1 8.62 24.14 36.21 31.03 0.00\n",
" 2 8.57 25.71 40.00 17.14 8.57\n",
" 3 17.81 17.81 35.62 26.03 2.74\n",
"2 1 27.03 29.73 29.73 10.81 2.70\n",
" 2 20.00 36.00 28.00 8.00 8.00\n",
" 3 21.21 28.79 30.30 15.15 4.55\n",
"All 17.01 25.51 33.67 20.07 3.74"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"crosstab3D = pd.crosstab([daten.sex, daten.wohnort], daten.hardrockpräferenz, normalize = 'index', margins = True).round(4)*100\n",
"# bzw. '(daten.wohnort, [daten.sex, daten.hardrockpräferenz])' wenn 'sex' als Drittvariable in den Spalten stehen soll\n",
"\n",
"crosstab3D"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Eine solche Kreuztabelle kann auch grafisch dargestellt werden, allerdings ist dies nicht mehr ganz so einfach les- bzw. interpretierbar."
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"ax = crosstab3D.plot.bar(stacked = True, rot = 0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### Weitere Möglichkeiten mit Kreuztabellen\n",
"\n",
"Darstellungen der absoluten oder relativen Häufigkeiten sind nicht alles, was mit **crosstab()** möglich ist. Mit **aggfunc** lassen sich div. Kennzahlen einer dritten Variable in der Kreuztabelle darstellen. Im Folgenden wird wieder eine einfache Kreuztabelle mit *sex* und *wohnort* erstellt. In den Zellen abgebildet werden soll aber jeweils der Mittelwert der Variable *volksmusik*. Man erhält also mit dieser Kreuztabelle Informationen über die Volksmusikpräferenz nach Geschlecht und Wohnort.\n",
"\n",
"[Pandas Crosstab Explained](https://pbpython.com/pandas-crosstab.html)"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"ax = crosstabNeu.plot.bar(rot = 0, stacked = False)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Man sieht, dass die Präferenz von Volksmusik bei beiden Geschlechtern von ländlicher Umgebung (1) über kleinstädtische Umgebung (2) bis hin zu großstädtischer Umgebung (3) jeweils leicht abnimmt."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 7.2) Kreuztabellierung mit groupby()\n",
"\n",
"**crosstab()** ist nicht die einzige Möglichkeit, mit **Pandas** Kreuztabellen zu erstellen. Auch mit der aus dem vorangegangenen Kapitel bekannten Funktion **groupby()** können im Grunde die gleichen Kreuztabellen erstellt werden. Die Schreibweise des Codes unterscheidet sich natürlich.\n",
"\n",
"[Aggregation and Grouping](https://jakevdp.github.io/PythonDataScienceHandbook/03.08-aggregation-and-grouping.html)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"