ТОП просматриваемых книг сайта:
Praktische Statistik für Data Scientists. Peter Bruce
Читать онлайн.Название Praktische Statistik für Data Scientists
Год выпуска 0
isbn 9783960104681
Автор произведения Peter Bruce
Жанр Математика
Издательство Bookwire
crosstab = lc_loans.pivot_table(index='grade', columns='status',
aggfunc=lambda x: len(x), margins=True)
df = crosstab.loc['A':'G',:].copy()
df.loc[:,'Charged Off':'Late'] = df.loc[:,'Charged Off':'Late'].div(df['All'],
axis=0)
df['All'] = df['All'] / sum(df['All'])
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')