Скачать книгу

Häufigkeiten zu ermitteln. Die Berechnung der relativen Häufigkeiten gestaltet sich etwas aufwendiger:

      crosstab = lc_loans.pivot_table(index='grade', columns='status',

      aggfunc=lambda x: len(x), margins=True) image

      df = crosstab.loc['A':'G',:].copy() image

      df.loc[:,'Charged Off':'Late'] = df.loc[:,'Charged Off':'Late'].div(df['All'],

      axis=0) image

      df['All'] = df['All'] / sum(df['All']) image

      perc_crosstab = df

      1 Mit dem Schlüsselwortargument margins werden die Werte spalten- und zeilenweise summiert.

      2 Wir erstellen eine Kopie der Pivot-Tabelle und lassen die ermittelten Gesamtsummen der Spalten außen vor.

      3 Wir teilen die Werte der einzelnen Zeilen durch die Gesamtsumme der jeweiligen Zeile.

      4 Wir dividieren die Spalte 'All' durch die Gesamtsumme.

       Kategoriale und numerische Variablen

      Mit Box-Plots (siehe »Perzentile und Box-Plots« auf Seite 21) lassen sich Verteilungen numerischer Variablen, die anhand einer kategorialen Variablen gruppiert wurden, auf einfache Weise visuell vergleichen. Beispielsweise könnten wir vergleichen, wie der prozentuale Anteil der Flugverspätungen für die einzelnen Fluggesellschaften variiert. Abbildung 1-10 zeigt den prozentualen Anteil der Flüge der verschiedenen Fluggesellschaften, die innerhalb eines Monats verspätet waren und bei denen die Verspätung auf die Fluggesellschaft selbst zurückzuführen ist:

      boxplot(pct_carrier_delay ~ airline, data=airline_stats, ylim=c(0, 50))

      Die pandas-boxplot-Methode nimmt das Argument by entgegen, wodurch der Datensatz in verschiedene Gruppen aufgeteilt wird und sich die einzelnen Box-Plots erstellen lassen:

      ax = airline_stats.boxplot(by='airline', column='pct_carrier_delay')

      ax.set_xlabel('')

      ax.set_ylabel('Tägliche Flugverspätungen (in %)')

      plt.suptitle('')

       Abbildung 1-10: Ein Box-Plot des prozentualen Anteils der Flüge, die verspätet waren und bei denen die Verspätung auf die Fluggesellschaft zurückzuführen ist

      Die Fluggesellschaft Alaska Airlines hat die geringsten Verspätungen, bei American Airlines gab es die größten: Das untere Quartil für American Airlines ist höher als das obere Quartil für Alaska Airlines.

      Der Violin-Plot, eingeführt von [Hintze-Nelson-1998], ist eine Erweiterung des Box-Plots und bildet die geschätzte Dichtefunktion ab, wobei die Wahrscheinlichkeitsdichte auf der y-Achse abgetragen wird. Die Dichtefunktion wird zusätzlich gespiegelt und die resultierende Silhouette ausgefüllt. Dadurch entsteht eine Grafik, die einer Violine ähnelt. Der Vorteil des Violin-Plots ist, dass er besser als der Box-Plot in der Lage ist, Nuancen in der Verteilung aufzuzeigen. Andererseits werden im Box-Plot die Ausreißer in den Daten deutlicher hervorgehoben. Im Paket ggplot2 steht die Funktion geom_violin bereit, um einen Violin-Plot zu erstellen:

      ggplot(data=airline_stats, aes(airline, pct_carrier_delay)) +

      ylim(0, 50) +

      geom_violin() +

      labs(x='', y='Tägliche Flugverspätungen (in %)')

      Im seaborn-Paket können Violin-Plots durch Nutzung der violinplot-Methode erstellt werden:

      ax = sns.violinplot(airline_stats.airline, airline_stats.pct_carrier_delay,

      inner='quartile', color='white')

      ax.set_xlabel('')

      ax.set_ylabel('Tägliche Flugverspätungen (in %)')

      Das entsprechende Diagramm wird in Abbildung 1-11 dargestellt. Der Violin-Plot zeigt eine Ballung in der Verteilung nahe null für Alaska Airlines und, in geringerem Ausmaß, für Delta Airlines. Dieses Merkmal ist im Box-Plot nicht so offensichtlich. Sie können auch einen Violin-Plot mit einem Box-Plot kombinieren, indem Sie die Funktion geom_boxplot (in R) als zusätzliche Komponente dem Diagramm hinzufügen (obwohl dies am besten funktioniert, wenn Farben verwendet werden).

       Abbildung 1-11: Ein Violin-Plot des prozentualen Anteils der Flüge, die verspätet waren und bei denen die Verspätung auf die Fluggesellschaft selbst zurückzuführen ist

       Mehrere Variablen visualisieren

      Die Diagrammtypen, die für den Vergleich zweier Variablen verwendet werden – Streu-, Hexagonal-Binning-Diagramme und Box-Plots –, lassen sich allesamt mithilfe des Ansatzes der Konditionierung leicht auf weitere Variablen erweitern. Ein Beispiel hierfür war in Abbildung 1-8 zu sehen, hier wurde die Beziehung zwischen der fertiggestellten Wohnfläche von Immobilien (in Quadratfuß) und ihrem steuerlich geschätzten Wert aufgezeigt. Wir hatten festgestellt, dass es eine Häufung von Immobilien zu geben scheint, die einen höheren steuerlich geschätzten Wert pro Quadratfuß haben. Wenn wir die Daten weiter unterteilen und wie in Abbildung 1-12 zusätzlich die Postleitzahl der jeweiligen Immobilie als Drittvariable berücksichtigen, können wir den Effekt der Lage der Immobilie aufdecken. Jetzt ist das Bild viel klarer: Der steuerlich geschätzte Wert ist bei einigen Postleitzahlen (98105, 98126) viel höher als bei anderen (98108, 98188). Diese Diskrepanz erklärt auch die in Abbildung 1-8 beobachtete Clusterbildung.

       Abbildung 1-12: Steuerlich geschätzter Immobilienwert in Abhängigkeit von der fertiggestellten Wohnfläche (in Quadratfuß), nach Postleitzahlen unterteilt

      Abbildung 1-12 haben wir mithilfe des ggplot2-Pakets unter Verwendung von facets, d.h. mit einer Drittvariablen (in diesem Fall der Postleitzahl), erstellt:

      ggplot(subset(kc_tax0, ZipCode %in% c(98188, 98105, 98108, 98126)),

      aes(x=SqFtTotLiving, y=TaxAssessedValue)) +

      stat_binhex(color='white') +

      theme_bw() +

      scale_fill_gradient(low='white', high='blue') +

      labs(x='Fertiggestellte Wohnfläche (in Quadratfuß)',

      y='Steuerlich geschätzter Wert') +

      facet_wrap('ZipCode') Скачать книгу