J'ai pensé à un moment donné. Il est également difficile de le déplacer vers EXCEL et d'attacher une barre de données, alors ne pouvons-nous pas le gérer sur Jupyter? Je pensais que les pandas avaient généralement une telle fonction lol Je ne savais pas lol Je l'ai trouvé sur le site suivant. https://pbpython.com/styling-pandas.html
DataFrame.style Vous pouvez voir la fonction détaillée de DataFrame.style sur la page suivante. https://pandas.pydata.org/pandas-docs/version/0.18/style.html
Pratiquez avec l'ensemble de données Boston inclus dans sklearn
#Importation de package
import pandas as pd
from sklearn import datasets
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
#Lecture des données
boston = datasets.load_boston()
boston_df=pd.DataFrame(boston.data)
boston_df.columns = boston.feature_names #Insérer le nom de la colonne
boston_df['PRICE'] = pd.DataFrame(boston.target)
display(boston_df)
Ajoutez une barre de données comme EXCEL à ceci
display(boston_df.style.bar())
Oh, c'est fait. Mais c'est un peu sanglant ...
Je n'aime pas le sang sanglant, donc je peux choisir une colonne et changer la couleur. Il peut être personnalisé en spécifiant le nom de la colonne dans le sous-ensemble ou en le décrivant pour que la barre soit connectée.
#Spécification de la colonne
display(boston_df.style.bar(subset=['RM','AGE']))
#Désignation de colonne et code couleur pour chacun
display(boston_df.style\
.bar(subset=['RM'],color=['lightcoral'])\
.bar(subset=['AGE'],color=['lightgreen'])\
.bar(subset=['TAX'],color=['lightblue']))
Je peux y aller!
Essayons également l'échelle de couleurs.
#Créer une matrice de corrélation
boston_corr=boston_df.corr()
display(boston_corr)
#Ajouter de la couleur
display(boston_corr.style.background_gradient(cmap='coolwarm'))
Je peux y aller! (Deuxième fois) Je savais que les pandas pouvaient également traiter des tables avec EXCEL comme ça.
En passant, il est possible de sortir tel quel sous forme de fichier EXCEL.
#Le package openpyxl est déjà installé
n_df=boston_corr.style.background_gradient(cmap='coolwarm')
n_df.to_excel('test.xlsx')
Contenu de 'test.xlsx' ↓
Il peut être utilisé de différentes manières pour créer un cahier facile à lire!
Vous pouvez écrire un histogramme dans une table pandas avec un package appelé sparklines Par exemple, pour chaque CHAS: Charles River (1: autour de la rivière, 0: sinon), calculez la moyenne suivante. ・ DIS: distance pondérée de 5 établissements d'emploi de la ville de Boston ・ PRIX: Prix de la maison
display(boston_df.groupby('CHAS')[['DIS','PRICE']].mean())
Hmmm, je crois comprendre que la zone autour de la rivière Charles est plus proche des établissements d'emploi à Boston et que le loyer est plus élevé. Cependant, il existe des valeurs aberrantes et la tendance est presque la même, mais la moyenne peut être plus élevée. Alors, définissez une fonction
from sparklines import sparklines
#Définir la fonction
def sparkline_hist(x, bin_num=10):
bins=np.histogram(x, bins=bin_num)[0]
sl = sparklines(bins)[0]
return sl
Si vous appliquez la fonction à groupby,
display(boston_df.groupby('CHAS')[['DIS','PRICE']].agg(['mean', sparkline_hist]))
Une chose semblable à un histogramme apparaît dans le tableau! Apparemment, il y a beaucoup d'endroits qui sont à proximité des centres d'emploi à Boston même si ce n'est pas autour de la rivière Charles, et la zone autour de la rivière Charles semble être une polarisation des maisons à loyer assez élevé et celles qui ne le sont pas. Vous pouvez voir des choses sur les pandas.
Cependant, pour une raison quelconque, sur mon Jupyter, il y a une partie où quelque chose comme un histogramme est convexe vers le bas, et cela reste un mystère. Quand j'examine le contenu de la fonction sparkline_hist, elle ne devient pas particulièrement convexe, pourquoi?
# sparkline_Vérification du contenu de la fonction hist
bins=np.histogram(boston_df[boston_df['CHAS']==0]['DIS'], bins=10)[0]
sl = sparklines(bins)[0]
print(sl)
bins=np.histogram(boston_df[boston_df['CHAS']==1]['DIS'], bins=10)[0]
sl = sparklines(bins)[0]
print(sl)
Au fait, lorsque j'ai écrit l'histogramme, il ressemblait à ce qui suit.
fig=plt.figure(figsize=(10,5))
ax=plt.subplot(1,2,1)
ax.hist(boston_df[boston_df['CHAS']==0]['DIS'],bins=10, color='red', label='CHAS=0',alpha=0.5, density=True)
ax.hist(boston_df[boston_df['CHAS']==1]['DIS'],bins=10, color='blue', label='CHAS=1',alpha=0.5, density=True)
ax.legend(loc='upper right')
ax.set_ylabel('density')
ax.set_xlabel('DIS')
ax.set_title('DIS Hist')
ax2=plt.subplot(1,2,2)
ax2.hist(boston_df[boston_df['CHAS']==0]['PRICE'],bins=10, color='red', label='CHAS=0',alpha=0.5, density=True)
ax2.hist(boston_df[boston_df['CHAS']==1]['PRICE'],bins=10, color='blue', label='CHAS=1',alpha=0.5, density=True)
ax2.legend(loc='upper right')
ax2.set_ylabel('density')
ax2.set_xlabel('PRICE')
ax2.set_title('PRICE Hist')
plt.tight_layout()
plt.show()
Sparklines était amusant, mais je ne peux pas penser à des utilisations particulièrement utiles ... lol Je dessine un histogramme normalement. Lol
c'est tout!
Recommended Posts