{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Musterlösung zu Projektaufgabe Deskriptive Statistik und offene Fragen\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Grundlage: Datensatz der San Francisco Public Library, s.a. https://zbmed.github.io/2020-2021-ZK_Data_Librarian_Modul_3/organisation/dataset/" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Frage 1: Wie viele Senioren und Kinder sind Kunden der San Francisco Public Library?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Frage 2: Wie viele Nutzer möchten per Mail informiert werden?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Frage 3: Wie alt sind diese Nutzer durchschnittlich im Vergleich zu Nutzern, die per Post informiert werden möchten?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Frage 4: Wie viele Ausleihen werden im Mittel pro Altersgruppe und pro Jahr getätigt? Ist die Streuung zwischen den Gruppen gleich?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Frage 5: Welche Altersgruppe verlängert im Mittel wie oft?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Frage 6: Wie ist die Verteilung der Altersgruppen im Mission District" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Frage 7: Erklärung von Normalisierung von Kreuztabellen (Kapitel 3 im Skript)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "import numpy as np\n", "%matplotlib inline\n", "sns.set()\n", "# das was wir brauchen in abgekürzter Form" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "df = pd.read_csv(\n", " \"../data/Library_Usage.csv\",\n", " na_values=\"none\"\n", ")\n", "# Einlesen des Datensatzes in das neu definierte DataFrame df mit Überschreibung \n", "#fehlender Werte" ] }, { "cell_type": "code", "execution_count": 3, "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", "
Patron Type CodePatron Type DefinitionTotal CheckoutsTotal RenewalsAge RangeHome Library CodeHome Library DefinitionCirculation Active MonthCirculation Active YearNotice Preference CodeNotice Preference DefinitionProvided Email AddressYear Patron RegisteredOutside of CountySupervisor District
00ADULT0020 to 24 yearsP1ParkNoneNonezemailTrue2014False5.0
10ADULT312225 to 34 yearsS7SunsetApril2016zemailTrue2010False4.0
20ADULT0045 to 54 yearsP1ParkNoneNoneaprintFalse2016TrueNaN
30ADULT0025 to 34 yearsXMain LibraryNoneNonezemailTrue2015False3.0
40ADULT1261145 to 54 yearsM2MarinaJanuary2016zemailTrue2003False2.0
\n", "
" ], "text/plain": [ " Patron Type Code Patron Type Definition Total Checkouts Total Renewals \\\n", "0 0 ADULT 0 0 \n", "1 0 ADULT 31 22 \n", "2 0 ADULT 0 0 \n", "3 0 ADULT 0 0 \n", "4 0 ADULT 126 11 \n", "\n", " Age Range Home Library Code Home Library Definition \\\n", "0 20 to 24 years P1 Park \n", "1 25 to 34 years S7 Sunset \n", "2 45 to 54 years P1 Park \n", "3 25 to 34 years X Main Library \n", "4 45 to 54 years M2 Marina \n", "\n", " Circulation Active Month Circulation Active Year Notice Preference Code \\\n", "0 None None z \n", "1 April 2016 z \n", "2 None None a \n", "3 None None z \n", "4 January 2016 z \n", "\n", " Notice Preference Definition Provided Email Address \\\n", "0 email True \n", "1 email True \n", "2 print False \n", "3 email True \n", "4 email True \n", "\n", " Year Patron Registered Outside of County Supervisor District \n", "0 2014 False 5.0 \n", "1 2010 False 4.0 \n", "2 2016 True NaN \n", "3 2015 False 3.0 \n", "4 2003 False 2.0 " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#df\n", "df.head()\n", "#Überblick über das DataFrame" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Frage 1: Wie viele Senioren und Kinder sind Kunden der San Francisco Public Library?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Um diese Frage zu beantworten, kommen die Spalten \"Patron Type Definition\" oder \"Age Range\" in Frage, also schauen wir uns die Einträge (Merkmalsausprägungen) an: " ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "ADULT 272251\n", "JUVENILE 59208\n", "SENIOR 41619\n", "YOUNG ADULT 28816\n", "WELCOME 14931\n", "TEACHER CARD 1782\n", "DIGITAL ACCESS CARD 1744\n", "SPECIAL 977\n", "STAFF 862\n", "VISITOR 415\n", "AT USER ADULT 349\n", "RETIRED STAFF 157\n", "BOOKS BY MAIL 95\n", "AT USER SENIOR 66\n", "AT USER JUVENILE 47\n", "AT USER WELCOME 45\n", "AT USER TEEN 44\n", "FRIENDS FOR LIFE 40\n", "Name: Patron Type Definition, dtype: int64" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['Patron Type Definition'].value_counts()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Man sieht, dass es sich um nominale Werte handelt." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "25 to 34 years 91083\n", "35 to 44 years 67390\n", "10 to 19 years 58944\n", "45 to 54 years 52492\n", "0 to 9 years 38242\n", "65 to 74 years 30141\n", "20 to 24 years 29761\n", "55 to 59 years 21230\n", "60 to 64 years 19800\n", "75 years and over 14150\n", "Name: Age Range, dtype: int64" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['Age Range'].value_counts()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Man sieht, dass es sich um ordinale Werte handelt." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In der Beschreibung des Datensatzes steht, dass sich die Spalte 'Age Range' nach dem Geburtsdatum richtet. D.h. es ist davon auszugehen, dass die Nutzer der Bibliothek zum Zeitpunkt der Bereitstellung des Datensatzes (2016) in die Kategorien von 'Age Range' einsortiert werden. In der Spalte 'Patron Type Definition' sind verschiedene Merkmalsausprägungen zu finden, die nicht unbedingt etwas mit dem Alter zu tun haben (z.B. VISITOR oder SPECIAL). Daher ist davon auszugehen, dass wir mit 'Age Range' am nähesten Fragestellungen zu Alter beantworten zu können. Richtige Angaben zu tatsächlichem Alter der Nutzer liegen bei diesem Datensatz nicht vor." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "An dieser Stelle ist also zu definieren, was Senioren und Kinder sind. Eine Möglichkeit ist, Senioren als Age Range = 65 to 74 years und Age Range = 75 years and over zu definieren, man könnte aber auch Age Range = 60 to 64 years dazunehmen. Für das weitere Vorgehen, definieren wir Senioren als über 65-jährige und Kinder als bis 19-jährige. Um die Frage 1 zu beantworten, reicht es also, die entsprechenden Einträge zu summieren." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "kinder=df.loc[df['Age Range'] == \"0 to 9 years\"] #Hilfsvariable" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "38242" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(kinder) " ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "senioren=df.loc[\n", " (df['Age Range'] == \"65 to 74 years\") | \n", " (df['Age Range'] == \"75 years and over\")\n", "] \n", "#Hilfsvariable\n" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "44291" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(senioren)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Antwort auf Frage 1:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Es sind 38242 Kinder (bis 19 Jahre) und 44291 Senioren (ab 65 Jahren) registriert.\n" ] } ], "source": [ "print('Es sind ' + str(len(kinder)) + ' Kinder (bis 19 Jahre) und ' + str(len(senioren)) + ' Senioren (ab 65 Jahren) registriert.' )\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "-----" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Frage 2: Wie viele Nutzer möchten per Mail informiert werden?" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "323937" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(df.loc[(df['Notice Preference Definition'] == \"email\")])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Antwort auf Frage 2:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "323937 Nutzer möchten per Mail informiert werden.\n" ] } ], "source": [ "print(str(len(df.loc[(df['Notice Preference Definition'] == \"email\")])) + ' Nutzer möchten per Mail informiert werden.')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Frage 3: Wie alt sind diese Nutzer durchschnittlich im Vergleich zu Nutzern, die per Post informiert werden möchten?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Die relevante Spalte über die gewünschte Benachrichtigungsart schauen wir uns genauer an:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "email 323937\n", "phone 68172\n", "print 31336\n", "Name: Notice Preference Definition, dtype: int64" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['Notice Preference Definition'].value_counts()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Es handelt sich um ein nominales Merkmal." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Auch hier stoßen wir auf eine Interpretationsfrage. Da der Datensatz kein Alter ausgibt, sondern nur Altersstufen (Age Range) bzw. Kategorien, die nicht immer etwas mit dem Alter zu tun haben sondern eher mit dem Nutzerstatus (Patron Type Definition), müssen wir überlegen, was ein Durchschnitt bedeuten kann. Age Range ist ein ordinales Merkmal, d.h. wir können keinen Erwartungswert berechnen, aber uns dennoch Häufigkeitstabellen anschauen." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Um diese beiden Merkmale (nominal und ordinal) zu verbinden, können wir uns einen Plot angucken, dafür definieren wir eine neue Variable indem wir nach den Merkmalen filtern, die uns interessieren:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "benachrichtigung=df.loc[\n", " (df['Notice Preference Definition'] == \"email\") | \n", " (df['Notice Preference Definition'] == \"print\")\n", "] #Hilfsvariable für den Plot, damit nur die Merkmale 'email' und 'print' angezeigt werden" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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f//730LPl/f3SVH1cMV7JCIiwrG9kJAQ3X///UpPT3c8f6vXY9GiRY7xd+jQQU2aNNHrr78uqXj7uyzaunXrdX92Bco1AzfM77//brRs2dI4e/askZ2dbVgsFuPAgQOFlvvHP/5R7G3a7XYjODjY2Lx5s2EYhvHll18azz333A3r861k586dRrt27YwGDRoYR48eNQzDMC5evGgEBwcbR44cMaxWq/H0008b69atK7Ruy5YtHesUR05OjjFt2jSjcePGxssvv+xoHzFihDFz5kzDMAzjyJEjRuvWrY2LFy86ObKy59tvvzW6d+9u5ObmGnl5eUbfvn2Nr776ymX16NGjh/H1118bhmEYmzZtMiwWS4HnR44caTz88MPGli1bnBpXWVZUTQzDMNq1a2ekpqZec/3rrUnv3r2N9evXG4ZhGJ988onx73//u8Dz1MQwtm7davTo0cOwWq3GxYsXjZYtWxq//vqrYRiuqYlhGIbNZjOefvppo3HjxoXWpSaXbNq0yWjatGmBn+2uqMd7771nzJkzp8jnqcel34FatGhhWK3WQs/dzJpwbP+fI0eOGC1atDBOnjxp5OXlGT179jTWrVvnsuN7TEyMMW3aNMMwDGP9+vVGly5dCjxf3t8nRdXDMFx3HLksKirKmD17doG28lSP/fv3G0899ZRx+vRpwzCKt7/Loi1bthi9e/cu6W4AZQYz2G6gTZs26dFHH1WVKlVUqVIlhYSEKCUlpcAyl79Z6tq1qyTp66+/VocOHWSxWPT8888X+BZIks6ePaucnBw9+uijkqSWLVtq48aNysvLcyxz+PBhPfHEE7Lb7ZIufdPwzDPPSJLmzp2rTp06qX379oqNjZVhGJKk+Ph4devWTSEhIerTp4/jdR999FE988wz6tChg06ePKnevXsrIiJCXbp00c6dO2/wHruxFi5cqLFjx8rf39/Rtnv3btWpU0e1a9eW2WyWxWIpVJO5c+fq1KlTGjhwoM6ePaudO3eqa9euat++vfr166fDhw8Xeq1t27bJbrcrKiqqQPvevXsVFhYmSapdu7aqVKlS4Jtuu92uVq1a6eDBg5KkCxcuKDg4WLm5udqwYYO6dOmijh07asiQITp79qwkaeXKlerWrZvat2+v0NBQff/995Iufas/ZMgQhYSEaPfu3YqKinJ8w7tw4cIbsEf/Oj8/P0VH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fH191aVLF61fv/6m14Rj+//YbDZt3rxZkyZN0ueff67du3dr6dKlLjm+22w2paeny8fHR59//rmee+45vfDCC/zcukJR9XDlsf3AgQM6e/asWrZsKal8Hkc+++wzDRgwwPG4OPv7tttuU3BwsFavXq3t27erdu3aql69ujZt2qTPPvtMHTp0UGRkpC5cuKADBw6oXbt2euyxx/TBBx9owoQJOnfunOPz2l133SUfHx9JUuvWrTVkyBC9/vrruv/++9WiRYsCr/tnn/sunwFSt25dnT9/Xj///LP8/f11zz33SJI6depUaPzZ2dk6cuSI4+dl48aN9be//U2//fab2rdvry+//FLSpVmIFotFW7du1eHDh9WtWzd16NBBa9asccxQlv732RO4FZhLugO3koCAAG3fvt3xOC0trcDpin/0x6nDhmEoPz+/0HJms1nz58+XJJ0+fVoJCQmqUqVKgWVCQ0MVHx+vVatWKSgoSJ6enrLZbOrXr5/jAJCRkSF3d3ft2bNHI0aMUP/+/RUSEiI3NzfHqaOSHAfHJk2a6Msvv9S6deuUnJyspUuXFrgId1kQEBBQ4KYQ11sT6VJdbDZbsV7vwoULGj9+vLy9vSVJ4eHhuuOOOwosU6tWLd1+++366quvdPr0aTVq1Ej/+c9/9NBDD2nOnDmSpNzcXGVnZys7O1tdunRR+/bt9fDDD6tevXoFbp5xuVZVq1bVl19+qW+//Vbr169Xp06d9OWXXxY4Le9m27Fjh4YNG6aYmBiFh4dLcl098vPz9fLLLys1NVUfffSRfHx89Msvv+i3337TqFGjJElHjhzR6NGjNX78eMcp11L5qYd09Zr8/PPPOnTokEJCQiRd2r9mc9GHhuLWJDk5WWFhYTKZTAoKClJOTo6+//57anKFX3/9VXl5ebrvvvtUsWJFtWnTRj///LNLarJ9+3adPn1agwcPliTHaUHTp0+nJv8nOTlZaWlp6tChg86fP68LFy5o0qRJ6ty58w2vh91u19tvv62BAwfK3d3d0f77779Tjyts375dVqvVEXpe3veueI8UVRN3d3edP3+eY/v/+fvf/65mzZrJ19dXkvTkk09q9+7datu27Q0/vletWlVms1nt2rWTJD322GO6cOGCduzYwfvk/xRVjwYNGrjk2C5J//nPf9S2bVvH499++61c1SMvL0/btm3T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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.catplot(x='Age Range', kind='count', hue='Notice Preference Definition', data=benachrichtigung, aspect=3, order=[\"0 to 9 years\",\"10 to 19 years\",\"20 to 24 years\",\"25 to 34 years\",\"35 to 44 years\",\"45 to 54 years\",\"55 to 59 years\",\"60 to 64 years\",\"65 to 74 years\",\"75 years and over\"])\n", "#wenn data=df gewählt wird, würden wir auch die Werte für 'print' sehen" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Um besser die Zahlen zu verstehen, hilft uns eine Kreuztabelle:" ] }, { "cell_type": "code", "execution_count": 16, "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", "
Age Range0 to 9 years10 to 19 years20 to 24 years25 to 34 years35 to 44 years45 to 54 years55 to 59 years60 to 64 years65 to 74 years75 years and overAll
Notice Preference Definition
email2747538055238097935157698414501532813805202996508323778
print413558312128469731933285163516912698202331316
All3161043886259378404860891447351696315496229978531355094
\n", "
" ], "text/plain": [ "Age Range 0 to 9 years 10 to 19 years 20 to 24 years \\\n", "Notice Preference Definition \n", "email 27475 38055 23809 \n", "print 4135 5831 2128 \n", "All 31610 43886 25937 \n", "\n", "Age Range 25 to 34 years 35 to 44 years 45 to 54 years \\\n", "Notice Preference Definition \n", "email 79351 57698 41450 \n", "print 4697 3193 3285 \n", "All 84048 60891 44735 \n", "\n", "Age Range 55 to 59 years 60 to 64 years 65 to 74 years \\\n", "Notice Preference Definition \n", "email 15328 13805 20299 \n", "print 1635 1691 2698 \n", "All 16963 15496 22997 \n", "\n", "Age Range 75 years and over All \n", "Notice Preference Definition \n", "email 6508 323778 \n", "print 2023 31316 \n", "All 8531 355094 " ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.crosstab(\n", " benachrichtigung['Notice Preference Definition'],\n", " benachrichtigung['Age Range'],\n", " margins=True\n", ")\n", "# Beachte, dass wir hier eine Teilmenge des Datensatzes betrachten über die Variable \"benachrichitigung\". \n", "# D.h. wir blenden die Ereignisse aus, wo in der Spalte 'Notice Preference Definition' nicht \n", "# 'email' oder 'print' steht." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "----\n", "###### WICHTIG:\n", "Beachte, dass die Summe der Nutzer, die per Mail informiert werden hier 323778 ergibt. Wir haben aber bei Frage 2 festgestellt, dass eigentlich 323937 Nutzer per Mail informiert werden möchten.\n", "Dies liegt daran, dass offensichtlich in einigen Einträgen (Zeilen des Datensatzes) zwar im Feld \"Notice Preference Definition\" der Wert \"email\" steht, aber offensichtlich im Feld \"Age Range\" kein Eintrag steht. In der Kreuztabelle werden die beiden Merkmale 'Age Range' und 'Notice Preference Definition' betrachtet und somit nur die Einträge, wo entsprechednd beide Felder ausgefüllt sind.\n", "\n", "(Das ist übrigens unabhängig ob man die Kreuztabelle über die \"große\" Variable \"df\" oder \"benachrichtigung\" berechnet, probiere es gerne aus!)\n", "\n", "----" ] }, { "cell_type": "code", "execution_count": 17, "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", "
Age Range0 to 9 years10 to 19 years20 to 24 years25 to 34 years35 to 44 years45 to 54 years55 to 59 years60 to 64 years65 to 74 years75 years and over
Notice Preference Definition
email0.0848580.1175340.0735350.2450780.1782020.1280200.0473410.0426370.0626940.020100
print0.1320410.1861990.0679520.1499870.1019610.1048980.0522100.0539980.0861540.064600
All0.0890190.1235900.0730430.2366920.1714790.1259810.0477700.0436390.0647630.024025
\n", "
" ], "text/plain": [ "Age Range 0 to 9 years 10 to 19 years 20 to 24 years \\\n", "Notice Preference Definition \n", "email 0.084858 0.117534 0.073535 \n", "print 0.132041 0.186199 0.067952 \n", "All 0.089019 0.123590 0.073043 \n", "\n", "Age Range 25 to 34 years 35 to 44 years 45 to 54 years \\\n", "Notice Preference Definition \n", "email 0.245078 0.178202 0.128020 \n", "print 0.149987 0.101961 0.104898 \n", "All 0.236692 0.171479 0.125981 \n", "\n", "Age Range 55 to 59 years 60 to 64 years 65 to 74 years \\\n", "Notice Preference Definition \n", "email 0.047341 0.042637 0.062694 \n", "print 0.052210 0.053998 0.086154 \n", "All 0.047770 0.043639 0.064763 \n", "\n", "Age Range 75 years and over \n", "Notice Preference Definition \n", "email 0.020100 \n", "print 0.064600 \n", "All 0.024025 " ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Nun möchten wir das prozentual betrachten:\n", "pd.crosstab(\n", " benachrichtigung['Notice Preference Definition'],\n", " benachrichtigung['Age Range'],\n", " margins=True, normalize=0\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Antwort auf Frage 3:\n", "\n", " Die Frage können wir wie folgt beantworten. \n", " Von allen Nutzern, die per Mail informiert werden möchten, sind\n", " - ca. 9% in der Alterklasse 0 bis 9 Jahre,\n", " - ca. 12% in der Altersklasse 10 bis 19 Jahre,\n", " \n", " ...\n", " \n", " - ca. 6% in der Altersklasse 65 bis 74 Jahre,\n", " - ca. 2% in der Altersklasse 75 Jahre und älter.\n", "\n", "Im Vergleich dazu, sind von allen Nutzern, die per Post informiert werden möchten\n", "- ca. 13% in der Altersklasse 0 bis 9 Jahre,\n", "- ca. 17% in der Altersklasse 10 bis 19 Jahre,\n", "\n", "...\n", "\n", "- ca. 86% in der Altersklasse 65 bis 74 Jahre,\n", "- ca. 65% in der Altersklasse 75 Jahre und älter.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Frage 4: Wie viele Ausleihen werden im Mittel pro Altersgruppe und pro Jahr getätigt? Ist die Streuung zwischen den Gruppen gleich?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Für diese Fragestellung sind die Spalten 'Total Checkouts' und 'Age Range' relevant. Bei der ersten handelt es sich um ein metrisches Merkmal, die zweite ist ordinal.\n", "Wir definieren eine neue Spalte, die die durchschnittliche jährliche Ausleihe eines Nutzers ausgibt.\n" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "df['Circulation Active Year'] = pd.to_numeric(df['Circulation Active Year'], errors='coerce')\n", "df['Membership Duration Years'] = (df['Circulation Active Year'] - df['Year Patron Registered'])+1 \n", "# hier werden der Einfachheit ganze Jahre angenommen\n", "df[\"Average Checkouts per Year\"] =(df['Total Checkouts']/df['Membership Duration Years'])\n" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7UAAAF2CAYAAACxur8GAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAABuZklEQVR4nO3dd3iUVd4+8Du9N0IKvUhHCQJKCwRUOqGEpgvYVpFdwfd1EQuigrqA5WdWUXRR17YIgoIgIoIizQACAgFCCYQktPRMeibJzPP7Y/JMmBdDMHmeOTMn9+e6vI6ZJDN3juPMfJ/TXBRFUUBERERERETkhFxFByAiIiIiIiKqLxa1RERERERE5LRY1BIREREREZHTYlFLRERERERETotFLRERERERETktFrVERERERETktFjUEhERERERkdNyFx1AK/n5JTCbeeQuERERERGRTFxdXRAS4lfr96Upas1mhUUtERERERFRI8Ppx0REREREROS0WNQSERERERGR02JRS0RERERERE6LRS0RERERERE5LRa1RERERERE5LRY1BIREREREZHTYlFLRERERERETotFLRERERERETktFrVERERERETktFjUEhERERERkdNiUUtEREREREROi0WtINu3/yA6gvTWrPmv6AjSy8/PEx2hUUhI2CM6gvT4eqG/1NQU0RGINMHnsv7+/e93RUeQXmLiUdERNMWiVoCtWzfjv//9FD/+uEV0FGmtWvUJfvjhO3z55eeio0grLy8X//u/f0NeHgtbPe3ZsxP//ve72Lt3t+go0uLrhf5SUs7hpZeeQ0oKiwE9sRDQH5/L+luxIh4JCXvw/vvviI4iraNHD+P//b+lOHr0iOgommFRK8Avv/wEANi582fBSeR16NBBAMDhwwcFJ5HXhg1rAQDffvu14CRyS0+/UN2mig0isQsXLB9OOfqinxUr3gYAfPABP6TqhYWAfWzd+h0A4McfNwtOIq/MzEwAQFZWpuAk8srIuAoAyMy8KjiJdljUCmAw5APg1E09+fr62rSkvU6dula3XQQnkZuPj2916yM4CVH9BQcH27SkvaCgYJuW9OHl5W3TkvaqqqpsWtKe+tmtY0d5PsOxqBUgMrIZAKBZs+aCk8jr0qWLADi6pacWLVoCAJo3byk4idzat+8AAGjXroPgJPLq06cvAKB37zsFJ5FX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gA0bNuDgwYNYsmQJAOC9996DoiiYM2fOTf1+bm4xzGZ9/5S9e3dhz56dDb4f67RNDaYTDho0BNHRMQ2+H0fBPtYf+9g+HK2f2ce143O5duxj+9Cin9nHN8bnsv7Yx/przH3s6uqC0FD/Wr/vMCO1WVlZCAsLs34dHh6OxMTEm/79G/2RWgkM9IGHBscRhIZajmrQ4r4CA30QFqbNlvmOgH2sP/axfThaP7OPa8fncu3Yx/ahRT+zj2+Mz2X9sY/1xz6uncOM1L7//vswGo343//9XwDA2rVrceLECbz88ss39fv2GKklIiIiIiIi+6prpFb8GRHVIiMjkZ2dbf06Ozsb4eHhAhMRERERERGRo3OYonbAgAHYt28f8vLyUFZWhm3btmHw4MGiYxEREREREZEDc5g1tREREXjyySdx//33o7KyEpMnT0aPHj1ExyIiIiIiIiIH5jBrahuKa2qJiIiIiIjk4zRraomIiIiIiIj+LBa1RERERERE5LRY1BIREREREZHTYlFLRERERERETotFLRERERERETktFrVERERERETktFjUEhERERERkdNiUUtEREREREROy110AK24urqIjkBEREREREQaq6vWc1EURbFTFiIiIiIiIiJNcfoxEREREREROS0WtUREREREROS0WNQSERERERGR02JRS0RERERERE6LRS0RERERERE5LRa1RERERERE5LRY1BIREREREZHTYlFLRERERERETotFLRERERERETktFrXVvvvuO4wePRrDhw/HqlWr/vBnZs6c+afuMzExEZMmTUJsbCwee+wxZGdnaxHVKRQXF2Ps2LG4dOmS9baEhATExsZi+PDhiI+P/8Pfe+6553D58uU//Xjr1q3Ds88+a/06JycHs2fPxtixYzFt2jQcOXLkz/8RDu7dd9/FmDFjMGbMGLz++uvW2/Xo5/Pnz2P69OkYP348pk2bhlOnTtl8v7i4GPfccw8OHDhQvz/GQdXWx8899xyGDx+O8ePHY/z48di+fft1v/tn+/jcuXO49957MW7cOMycOfO635W1j99++22MHj0aY8aMwSeffGK9XY8+VmVkZODOO++0eX0C5O1j1WuvvWbzOqlHH//222/o27ev9T6fe+45m+/L3MczZ87EmDFjrH/7sWPHANi3n2V/79uxYwfi4uIwatQovPrqq9bb9Xjf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U/nqq6+u+5369HFBQYEycOBApXfv3kpSUpKiKI2jj99++20lKipKeeaZZxSz2axbHx8/flx56KGHFJPJZPP6JHsfz507V0lISLB5ndSrj1944QXlxx9/VBTFMuNg2rRpiqLI38e///67Mn/+fKWwsFDJzc1VxowZo+zdu9fu/Szze9+LL76ovPLKK8pjjz2mjBs3TnnrrbcUs9msy/tedna2MmDAAOX9999Xpk6dqsycOVM5deqUoihyP5dr62M93/cUxTIbbMeOHdavnb2Pf/31V5u/92b6r7i4WOnfv79SVFSkKIqiDB8+XMnIyFDeeOMN5bPPPlMURVGKioqUMWPGKOnp6cp3332nrFixQlEURTEajco999yjHD9+XNm/f7/Su3dvpbCw0Pr3qf8dVq5caa1LVHXVFtu3b1cURVGWLl2qLF26VDEajcrAgQOVc+fOKYpimdHwRyO1kyZNsr5GHTlyRBkyZIhiNBqV2bNnW/9bv/XWW8qHH36onD17VrnvvvuU8vJyRVEU5c0331Tee+89a4abHannSC0sV3xcXFysXyuKYvP1/5WYmIgePXqgZcuWAIBp06Zh//79Nj/j4uKCd955B//+978xYcIEFBUVITg4GB4eHjY/N2nSJGzatAllZWXYv38/7r77buzbtw+JiYmIi4vDxIkTceLECZw7dw5t2rTBM888g3Xr1mHZsmU4evQoSktLrfcVFRUFAOjfvz/+85//YN68eTAYDJgxY0aD+6ih/mwfp6amIjAwED169AAAjBo1Cunp6SgqKrqpx3vuueeQlpaG2NhYfP755+jbt+91fR8XF2e94rVhwwbExcXh2LFjuHr1Ku6//36MHz8eq1atQlpaGlxdXfHee+9h7969ePvtt7FhwwaUlJRY70vN2bFjR1y4cAF//etfsXXrVjz99NM310H1lJycjIcffhhPP/002rZtq2s/K4qC1157DceOHcOCBQtgNpvx/PPP44UXXoC3t3etj+Hs/fx/+7hVq1Z47733EB4eDh8fH8ycORO7du2q9ff/TB8HBgZi7969eOutt/C3v/0NJpOpUfTxE088gX379uHq1atYu3atLn1cVlaGxYsX49VXX4Wra81bn+zP43Xr1qFZs2bo37+/ze16PY9ffvllDB8+HABw33334dy5cygqKpK6jwHg9ttvx+uvv46AgAA0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a+vvRUdHY9WqVaioqIDZbMYLL7yAt95666Ye86mnnsLVq1exatUqFBYW4vjx43jqqacwfPhwZGRkID09HWaz+Yb3ERMTg2+++QZmsxllZWXYvHkzXFxc4O/vj549e+KTTz4BABQWFuK+++7Dzz//XM8eIiIi0heLWiIiogZYvXo1HnroIZtR2MDAQMycOROffvoppk6dimnTpiEuLg5FRUXW0c+///3vaNGiBSZOnIjRo0dDURQ8++yzN/WYgYGBeOqpp7B8+XJUVFRg1qxZmDhxIsaOHYuVK1eiV69eSEtLu+F9PPbYY/Dy8kJsbCweeughhIaGwtvbGwDw5ptv4tixY4iNjcWUKVMwduxYjBs3rp49REREpC8X5dq5R0RERKSZ48eP48iRI7j//vsBAJ988gmOHTuGf/3rX2KDAfj+++/h7++PmJgYmM1mzJ07FwMHDsRf/vIX0dGIiIj+FBa1REREOikuLsaCBQuQkpICFxcXNGvWDK+88goiIiJER8PZs2fx4osvoqysDJWVlejbty8WLFhg3XyKiIjIWbCoJSIiIiIiIqfFNbVERERERETktFjUEhERERERkdNiUUtEREREREROi0UtEREREREROS0WtUREREREROS0WNQSERERERGR0/r/dmxGNY55eKgAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "%matplotlib inline\n", "sns.set()\n", "plt.figure(figsize=(16, 6))\n", "my_order =['0 to 9 years', '10 to 19 years', '20 to 24 years', '25 to 34 years', '35 to 44 years', '45 to 54 years', '55 to 59 years', '60 to 64 years', '65 to 74 years', '75 years and over']\n", "\n", "plt = sns.boxplot(y='Average Checkouts per Year', x='Age Range', data=df[df['Average Checkouts per Year']" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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U/fu3dWzZ08dPHhQkrR582aFhIQoIiListt13759Gjx4sEJDQ9W3b1+lp6crJydHHTt2VHFxsSTpxx9/VFhYmCRp5cqV6tGjh8LDwxUTEyO73S6p5OfU88tdtQoOWqqsN954w8THx7umlyxZYmJjY0vNd/6MjuPHj5tOnTq5EtK33nrLjBkzpsS8TqfTdO7c2Xz55ZfGGGOWLl1q/vCHP5ijR4+WmG/gwIEmNTXVGGNMdHS0WbNmjdm0aZMZM2aMOXv2rHE4HObZZ581K1euNPv37zejR482DofDGHMuaX3nnXdctZ1PV1977TXz1ltvGWPOpeRvv/329W2gG+TC1PnTTz8148ePdz321VdfmWHDhl12Gbvdbjp37mzS0tKMMcYkJyebiIiIyz7XJ598UuKve88995xJSEgwxhjzww8/mFatWplVq1aVWGbOnDnmr3/9qzHGmBUrVphJkyaZ7OxsExYWZk6ePGmMMWbx4sUmJibGOBwOExkZ6UqAly5d6jqjZ9CgQWbu3LnGmHN/CX7qqaeMMefOLIqKiirj1rpx9u3bZx588EGzb98+t/fFGGMmT55soqOjjTHGHDp0yPTp08cUFhaaQYMGXfIvCPRlnzlw4IB5+umnTWZmpikoKDCDBw82H3/8callrqUvp06dMh07djRt2rQx//nPf4wx9OVy5syZY1q1amWef/5543Q63daX7777zgwbNsw4HI4S75v0pbQxY8aY1NTUEu/57urLiy++aNauXWuMOXcGVN++fY0x9OVi33zzjYmKijKnT5822dnZJiQkxGzevPmG94XjfkmTJk0y06ZNMyNGjDBhYWEmPj7eOJ1Otxz3s7KyTIcOHcz8+fNNnz59zODBg83u3buNMewvF7tcX9x53Dfm3Jm2GzdudE3fjH356quvSmyjsmzzvLw80759e5Obm2uMMSYwMNAcPXrUzJ492/ztb38zxhiTm5trQkJCzIEDB8ynn35qEhMTjTHG2O1289hjj5nvvvvObN261bRp08acPn3aGHNum5zv3YIFC1yfL8/7tc+I69evN8YYM2PGDDNjxgxjt9tNx44dzZ49e4wx586wutQZHT179nS9f3777bfm4YcfNna73YwcOdL17yM+Pt689dZb5scffzT9+/c3Z86cMcYYExcXZ+bNm+eq4XrPAuKMjmvkdDrl4eHhmjbG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09NTgYGBriDKHX25XjdLXy6nefPmbunLq6++6tpf6tWrV+Lrn8viZulL586dlZaWpu7du8vpdGrAgAG6//77Jblnf7lcXzjul9SqVSs9+eSTGjBggIqLi9WxY0f17NlT1apVc8vvY6+88oomTZqkv//977LZbEpISLjk9r8c+lLNbceXgwcPqkGDBtdUr1X6cvDgQTVs2LDEWFmPHZL0+OOP6+TJk6pevbokafTo0XrppZfUrVs3ORwORUVF6Y477tCQIUP00ksvacGCBfLx8dH999+vX375pdTZZc8++6yio6Nls9lUs2bNEl8zLEldu3Yt02fE87y8vBQfH6+oqCjZbDbdd999l5xv9uzZeumll/Taa6/Jy8tLr732mus1hYeHa9WqVa4zXJo3b67Ro0dryJAhcjqduvfee103HC4PHuZS55igUnM4HEpISFD9+vVLXAeGyscYoy+++EKLFy92nYKHikdfKif6UjnRl8qJvlRO9KVyoi+VE305tw2Ki4s1bNgwxcTEuC5VwfXjjI4qqGfPnqpbt67mz59f0aXgV0yfPl2fffaZ3nrrrYouBRegL5UTfamc6EvlRF8qJ/pSOdGXyom+nLuHTUhIiHr37k3IUc44owMAAAAAAFgGNyMFAAAAAACWQdABAAAAAAAsg6ADAAAAAABYBjcjBQAAblNcXKzOnTurefPmevvtt8ttvdu2bdNTTz2lO++80zWWn5+vu+++WzNmzFDdunXL7bkAAEDVwhkdAADAbdavX6/mzZtr165d+vnnn8t13XfccYeSkpJc/61du1bVqlXTu+++W67PAwAAqhbO6AAAAG6zePFide3aVXfccYf+9re/aerUqZKkBQsWaNmyZbr11lvVtm1bbdiwQRs3blRRUZHi4uK0fft2ORwO3XfffYqNjZWPj8+vPldeXp5OnDihP/3pT5KknTt3avbs2SoqKlJWVpY6dOig6dOn65dfftHQoUMVEBCgtLQ0nT59WlFRUXr88cdVWFioyZMnKy0tTbVq1dLdd98tSZo5c6YyMzM1depUHTlyRMXFxQoJCdHIkSPdt/EAAMA14YwOAADgFnv27NG3336r4OBgde/eXUlJScrJydGXX36p5cuXa9myZVq+fLny8/NdyyxYsECenp5avny5Vq1aJT8/P8XFxV1y/QcOHFB4eLhCQkLUvn17DR06VI888oiGDBkiSXr//fc1duxYLV26VGvWrNHGjRu1a9cuSdLBgwfVqVMnLVu2TOPHj9f06dMlSYmJiXI4HPrHP/6h9957T//5z39czxcVFaWePXu6ak9NTVVycrK7Nh8AALhGnNEBAADcYvHixercubPq1q2runXr6vbbb9eSJUuUlZWl4OBg1a5dW5I0cOBAbd26VZL0+eefKzc3V6mpqZLO3eOjfv36l1z/+UtXJOmTTz5RQkKCunTpIi8vL0nnzsL44osv9MYbb2jv3r2y2+0qKChQnTp15OXlpYCAAEnSfffdp5MnT0qSNm3apBdeeEHVqlWTj4+PevTooR9++EEFBQXavn27Tp06pTlz5kiSCgoK9P3336tr167u2YAAAOCaEHQAAIByV1BQoKSkJFWvXl2PPPKIpHOXlnzwwQcKCQmRMcY1r6enp+v/nU6nYmJiXCFEfn6+7Hb7rz5fz549lZaWpv/5n//RkiVLZLPZNGjQIDVr1kwPPfSQunTporS0NNfzenl5qVq1cye2enh4uNZjs9lK1HZ+HqfTKWOMPvroI9WoUUOSdOLECXl7e1/T9gEAAO7DpSsAAKDcffrpp6pTp46+/PJLbdy4URs3btQ///lPFRQUqEWLFlq3bp1yc3MlScuWLXMt16lTJ3344YcqKiqS0+nUiy++qPj4+DI953PPPacjR47oww8/1OnTp/Xdd9/pueeeU2BgoI4ePaoDBw7I6XRecR0BAQH65JNP5HQ6VVhYqNWrV8vDw0M+Pj5q3bq1Fi5cKEk6ffq0+vfvrw0bNlzjFgIAAO5C0AEAAMrd4sWLNWzYsBJna9SuXVuDBw/We++9pz59+qhv376KiIhQbm6u6yyJp59+Wo0bN1aPHj3UtWtXGWMUHR1dpuesXbu2nnvuOb322msqKirS8OHD1aNHD3Xr1k0LFizQn/70J2VkZFxxHSNGjJC3t7dCQ0M1bNgw1a9fX7fccoskKS4uTmlpaQoNDVXv3r3VrVs3hYWFXeMWAgAA7uJhLjw/EwAAwM2+++47ffvtt4qMjJQkLVy4UGlpafrrX/9asYVJWrNmjXx8fBQQECCn06kxY8aoY8eOGjBgQEWXBgAAyoigAwAA3FB5eXmKiYnR3r175eHhoUaNGmnatGlq0KBBRZemH3/8UZMmTVJhYaGKi4vVrl07xcTEuG5wCgAAKj+CDgAAAAAAYBncowMAAAAAAFgGQQcAAAAAALAMgg4AAAAAAGAZBB0AAAAAAMAyCDoAAAAAAIBlEHQAAAAAAADL+H8tmhHJIRHhoQAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "my_order =['0 to 9 years', '10 to 19 years', '20 to 24 years', '25 to 34 years', '35 to 44 years', '45 to 54 years', '55 to 59 years', '60 to 64 years', '65 to 74 years', '75 years and over']\n", "sns.catplot(x='Age Range', kind=\"count\", data=mission_district, order=my_order, aspect=3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Die obere Grafik beantwortet die Frage schon ganz gut, dennoch können wir uns auch die genauen Werte über eine Kreuztabelle ausgeben lassen:" ] }, { "cell_type": "code", "execution_count": 23, "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", "
Age Range0 to 9 years10 to 19 years20 to 24 years25 to 34 years35 to 44 years45 to 54 years55 to 59 years60 to 64 years65 to 74 years75 years and over
Home Library Definition
Mission0.1085680.1581140.0659820.2387240.1853250.1169050.0395190.0317330.0406590.014471
All0.1085680.1581140.0659820.2387240.1853250.1169050.0395190.0317330.0406590.014471
\n", "
" ], "text/plain": [ "Age Range 0 to 9 years 10 to 19 years 20 to 24 years \\\n", "Home Library Definition \n", "Mission 0.108568 0.158114 0.065982 \n", "All 0.108568 0.158114 0.065982 \n", "\n", "Age Range 25 to 34 years 35 to 44 years 45 to 54 years \\\n", "Home Library Definition \n", "Mission 0.238724 0.185325 0.116905 \n", "All 0.238724 0.185325 0.116905 \n", "\n", "Age Range 55 to 59 years 60 to 64 years 65 to 74 years \\\n", "Home Library Definition \n", "Mission 0.039519 0.031733 0.040659 \n", "All 0.039519 0.031733 0.040659 \n", "\n", "Age Range 75 years and over \n", "Home Library Definition \n", "Mission 0.014471 \n", "All 0.014471 " ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.crosstab(\n", " mission_district['Home Library Definition'],\n", " mission_district['Age Range'],\n", " margins=True, normalize=0\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Antwort auf Frage 6\n", "Die Verteilung der Altersgruppen im Mission District ist wie folgt:\n", "- ca. 11% der Nutzer sind zwischen 0 und 9 Jahren,\n", "- ca. 16% der Nutzer sind zwischen 10 und 19 Jahren,\n", " \n", "...\n", "\n", "- ca. 4% der Nutzer sind zwischen 65 und 74 Jahren,\n", "- ca. 1% der Nutzer sind 75 Jahre und älter.\n", "\n", "\n", "----" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Frage 7: Erklärung von Normalisierung von Kreuztabellen (Kapitel 3 im Skript)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Wir nutzen das Beispiel von oben (Alterskategorien und Benachrichtigungsart aus Frage 3).\n", "Zuerst einmal eine nicht normalisierte Kreuztabelle:" ] }, { "cell_type": "code", "execution_count": 24, "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", "
Age Range0 to 9 years10 to 19 years20 to 24 years25 to 34 years35 to 44 years45 to 54 years55 to 59 years60 to 64 years65 to 74 years75 years and overAll
Notice Preference Definition
email2747538055238097935157698414501532813805202996508323778
print413558312128469731933285163516912698202331316
All3161043886259378404860891447351696315496229978531355094
\n", "
" ], "text/plain": [ "Age Range 0 to 9 years 10 to 19 years 20 to 24 years \\\n", "Notice Preference Definition \n", "email 27475 38055 23809 \n", "print 4135 5831 2128 \n", "All 31610 43886 25937 \n", "\n", "Age Range 25 to 34 years 35 to 44 years 45 to 54 years \\\n", "Notice Preference Definition \n", "email 79351 57698 41450 \n", "print 4697 3193 3285 \n", "All 84048 60891 44735 \n", "\n", "Age Range 55 to 59 years 60 to 64 years 65 to 74 years \\\n", "Notice Preference Definition \n", "email 15328 13805 20299 \n", "print 1635 1691 2698 \n", "All 16963 15496 22997 \n", "\n", "Age Range 75 years and over All \n", "Notice Preference Definition \n", "email 6508 323778 \n", "print 2023 31316 \n", "All 8531 355094 " ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Nun möchten wir das prozentual betrachten:\n", "pd.crosstab(\n", " benachrichtigung['Notice Preference Definition'],\n", " benachrichtigung['Age Range'],\n", " margins=True\n", ")\n", "# die Reihenfolge der betrachteten Spalten 'Notice Preference Definition' und 'Age Range' spielt keine Rolle, \n", "# probiere es ruhig aus\"" ] }, { "cell_type": "code", "execution_count": 25, "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", "
Age Range0 to 9 years10 to 19 years20 to 24 years25 to 34 years35 to 44 years45 to 54 years55 to 59 years60 to 64 years65 to 74 years75 years and over
Notice Preference Definition
email0.0848580.1175340.0735350.2450780.1782020.1280200.0473410.0426370.0626940.020100
print0.1320410.1861990.0679520.1499870.1019610.1048980.0522100.0539980.0861540.064600
All0.0890190.1235900.0730430.2366920.1714790.1259810.0477700.0436390.0647630.024025
\n", "
" ], "text/plain": [ "Age Range 0 to 9 years 10 to 19 years 20 to 24 years \\\n", "Notice Preference Definition \n", "email 0.084858 0.117534 0.073535 \n", "print 0.132041 0.186199 0.067952 \n", "All 0.089019 0.123590 0.073043 \n", "\n", "Age Range 25 to 34 years 35 to 44 years 45 to 54 years \\\n", "Notice Preference Definition \n", "email 0.245078 0.178202 0.128020 \n", "print 0.149987 0.101961 0.104898 \n", "All 0.236692 0.171479 0.125981 \n", "\n", "Age Range 55 to 59 years 60 to 64 years 65 to 74 years \\\n", "Notice Preference Definition \n", "email 0.047341 0.042637 0.062694 \n", "print 0.052210 0.053998 0.086154 \n", "All 0.047770 0.043639 0.064763 \n", "\n", "Age Range 75 years and over \n", "Notice Preference Definition \n", "email 0.020100 \n", "print 0.064600 \n", "All 0.024025 " ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Nun normalisieren wir nach Zeilen (normalize=0)\n", "pd.crosstab(\n", " benachrichtigung['Notice Preference Definition'],\n", " benachrichtigung['Age Range'],\n", " margins=True, normalize=0\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Hier sehen wir, dass jede Zeile in der Summe 1 ergibt. D.h. wir können die Tabelle prozentual nach Zeilen interpretieren.\n", "Also z.B. erste Zeile: Von allen Nutzern, die per Mail informiert werden möchten, befinden sich ca. 13% (0.128020 von 1) in der Altersgruppe 45 bis 54 Jahre.\n" ] }, { "cell_type": "code", "execution_count": 26, "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", "
Age Range0 to 9 years10 to 19 years20 to 24 years25 to 34 years35 to 44 years45 to 54 years55 to 59 years60 to 64 years65 to 74 years75 years and overAll
Notice Preference Definition
email0.8691870.8671330.9179550.9441150.9475620.9265680.9036140.8908750.882680.7628650.911809
print0.1308130.1328670.0820450.0558850.0524380.0734320.0963860.1091250.117320.2371350.088191
\n", "
" ], "text/plain": [ "Age Range 0 to 9 years 10 to 19 years 20 to 24 years \\\n", "Notice Preference Definition \n", "email 0.869187 0.867133 0.917955 \n", "print 0.130813 0.132867 0.082045 \n", "\n", "Age Range 25 to 34 years 35 to 44 years 45 to 54 years \\\n", "Notice Preference Definition \n", "email 0.944115 0.947562 0.926568 \n", "print 0.055885 0.052438 0.073432 \n", "\n", "Age Range 55 to 59 years 60 to 64 years 65 to 74 years \\\n", "Notice Preference Definition \n", "email 0.903614 0.890875 0.88268 \n", "print 0.096386 0.109125 0.11732 \n", "\n", "Age Range 75 years and over All \n", "Notice Preference Definition \n", "email 0.762865 0.911809 \n", "print 0.237135 0.088191 " ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Als Vergleich normalisieren wir nach Spalten (normalize=1)\n", "pd.crosstab(\n", " benachrichtigung['Notice Preference Definition'],\n", " benachrichtigung['Age Range'],\n", " margins=True, normalize=1\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Hier sehen wir, dass jede Spalte in der Summe 1 ergibt. D.h. wir können die Tabelle prozentual nach Spalten interpretieren.\n", "Also z.B. erste Spalte: Von allen Nutzern, die zwischen 0 und Jahren sind, möchten sich ca. 13% (0.130813 von 1) per Post informieren lassen.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "----" ] } ], "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.8.5" } }, "nbformat": 4, "nbformat_minor": 4 }