Wir werden weiterhin über Datenvisualisierung mit Matplotlib und Pandas bis [vorher] sprechen (http://qiita.com/ynakayama/items/9979258ac68cb669757a).
Verwenden wir diesmal externe Daten als praktischere Daten. Laden Sie zunächst die Daten aus dem Pydata-Buch herunter, das auch als Referenz für diesen Artikel verwendet wird.
pydata-book/ch08/tips.csv https://github.com/pydata/pydata-book/blob/master/ch08/tips.csv
import numpy as np
from pandas import *
import matplotlib.pyplot as plt
tips = read_csv('tips.csv')
#Kreuztabellen von CSV-Daten
party_counts = crosstab(tips.day, tips.size)
print( party_counts )
# =>
# size 1 2 3 4 5 6
# day
# Fri 1 16 1 1 0 0
# Sat 2 53 18 13 1 0
# Sun 0 39 15 18 3 1
# Thur 1 48 4 5 1 3
#Normalisieren Sie die Daten
party_counts = party_counts.div(party_counts.sum(1), axis=0)
print( party_counts )
# =>
# [4 rows x 6 columns]
# size 1 2 3 4 5 6
# day
# Fri 0.052632 0.842105 0.052632 0.052632 0.000000 0.000000
# Sat 0.022989 0.609195 0.206897 0.149425 0.011494 0.000000
# Sun 0.000000 0.513158 0.197368 0.236842 0.039474 0.013158
# Thur 0.016129 0.774194 0.064516 0.080645 0.016129 0.048387
#Überziehen mit einem gestapelten Balkendiagramm
party_counts.plot(kind='bar', stacked=True)
plt.show()
plt.savefig("image.png ")
Aus dieser Grafik können wir ersehen, dass die Anzahl der Personen an Wochenenden (Samstag und Sonntag) zunimmt. Am Sonntag gibt es fast keinen Kunden, und der Anteil der Gruppenkunden, von denen angenommen wird, dass sie mit einer Familie von 3 bis 4 Personen zusammen sind, nimmt deutlich zu.
Das Balkendiagramm stellt dies dar, wenn die Häufigkeit von Werten eine diskrete Variable ist. Lassen Sie uns das Verhältnis von Chips zur Gesamtmenge in einem Balkendiagramm zeigen.
Anpassen einer kontinuierlichen Wahrscheinlichkeitsverteilung an eine Wahrscheinlichkeitsverteilung wie eine Normalverteilung Ich habe dies zuvor am Beispiel der Gaußschen Anpassung erläutert. ** Schätzung der Kerneldichte ** Diagramme werden als KDE-Diagramme bezeichnet. Sie können ein Dichtediagramm mit einer gemischten Normalverteilungskerndichteschätzung erstellen, indem Sie für das Diagramm kind = 'kde' angeben.
fig = plt.figure()
ax1 = fig.add_subplot(2,1,1)
ax2 = fig.add_subplot(2,1,2)
tips['tip_pct'] = tips['tip'] / tips['total_bill']
result = tips['tip_pct']
result.plot(kind='kde')
ax1.hist(result, bins=50, alpha=0.6)
plt.show()
plt.savefig("image2.png ")
Sie können so etwas wie eine Anpassung durchführen, indem Sie die Schätzung der Kerneldichte über das normalisierte Histogramm zeichnen. Dies ist eine übliche Technik.
Versuchen wir, ein Diagramm mit zwei verschiedenen Standardnormalverteilungen N (0,1) und N (10,4) anzupassen.
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
#Normalverteilung Teil 1
comp1 = np.random.normal(0,1,size=200) # N(0,1)
#Normalverteilung Teil 2
comp2 = np.random.normal(10,2,size=200) # N(10,4)
#Kombinieren Sie zwei Normalverteilungen zu einer Reihe
values = Series(np.concatenate([comp1, comp2]))
print( values )
# =>
# [4 rows x 6 columns]
# 0 -0.305123
# 1 -1.663493
# 2 0.845320
# 3 1.217024
# 4 -0.597437
# 5 0.559524
# 6 0.849613
# 7 -0.916863
# 8 2.705579
# 9 1.397815
# 10 -1.135680
# 11 0.322982
# 12 0.568366
# 13 0.567607
# 14 0.360048
# ...
# 385 15.695692
# 386 8.868396
# 387 8.625446
# 388 5.793579
# 389 8.169981
# 390 8.434327
# 391 10.305067
# 392 11.032880
# 393 8.319812
# 394 9.026077
# 395 9.534395
# 396 4.498352
# 397 12.557349
# 398 7.365278
# 399 11.065254
# Length: 400, dtype: float64
#Zeichnen Sie ein Balkendiagramm
values.hist(bins=100, alpha=0.3, color='b', normed=True)
#Schätzung der Kerneldichte
values.plot(kind='kde', style='r--')
plt.show()
plt.savefig("image3.png ")
Einführung in die Datenanalyse mit Python-Datenverarbeitung mit NumPy und Pandas http://www.oreilly.co.jp/books/9784873116556/
Recommended Posts