Nous continuerons à parler de visualisation de données avec matplotlib et pandas jusqu'au précédent.
Utilisons des données externes comme données plus pratiques cette fois. Tout d'abord, téléchargez les données du pydata-book qui sert également de référence pour cet article.
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')
#Tableau croisé des données CSV
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
#Normaliser les données
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
#Placage avec un graphique à barres empilées
party_counts.plot(kind='bar', stacked=True)
plt.show()
plt.savefig("image.png ")
À partir de ce graphique, nous pouvons voir que le nombre de personnes augmente le week-end (samedi et dimanche). Il n'y a quasiment pas de client le dimanche et la proportion de clients de groupe que l'on pense appartenir à une famille de 3 à 4 personnes est en nette augmentation.
Le graphique à barres représente cela lorsque la fréquence des valeurs est une variable discrète. Montrons le rapport des jetons au montant total dans un graphique à barres.
Ajustement d'une distribution de probabilité continue à une distribution de probabilité telle qu'une distribution normale j'ai expliqué précédemment en utilisant l'ajustement gaussien comme exemple. ** estimation de la densité du noyau ** Les parcelles sont appelées parcelles KDE. Vous pouvez créer un graphique de densité en utilisant une estimation de densité de noyau de distribution normale mixte en spécifiant kind = 'kde' pour le graphique.
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 ")
Vous pouvez faire quelque chose comme l'ajustement en traçant l'estimation de la densité du noyau au-dessus de l'histogramme normalisé. C'est une technique courante.
Essayons d'ajuster un graphique dessiné avec deux distributions normales standard différentes N (0,1) et N (10,4).
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
#Distribution normale partie 1
comp1 = np.random.normal(0,1,size=200) # N(0,1)
#Distribution normale partie 2
comp2 = np.random.normal(10,2,size=200) # N(10,4)
#Combinez deux distributions normales en une seule série
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
#Dessinez un graphique à barres
values.hist(bins=100, alpha=0.3, color='b', normed=True)
#Estimation de la densité du noyau
values.plot(kind='kde', style='r--')
plt.show()
plt.savefig("image3.png ")
Introduction à l'analyse de données avec le traitement des données Python avec NumPy et pandas http://www.oreilly.co.jp/books/9784873116556/
Recommended Posts