[PYTHON] La barre de données EXCEL et l'échelle de couleurs peuvent également être faites avec des pandas

La table des pandas est un peu difficile à voir ... je veux une couleur ...

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)

image.png

Ajoutez une barre de données comme EXCEL à ceci

display(boston_df.style.bar())

image.png 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']))

image.png image.png 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'))

image.png image.png 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' ↓ image.png

Il peut être utilisé de différentes manières pour créer un cahier facile à lire!

Bonus (sparklines)

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())

image.png 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]))

image.png 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)

image.png

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()

image.png

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

La barre de données EXCEL et l'échelle de couleurs peuvent également être faites avec des pandas
Implémentez "Data Visualization Design # 3" avec pandas et matplotlib
Visualisez de manière interactive les données avec Treasure Data, Pandas et Jupyter.
Analyse morphologique et tfidf (avec code de test) pouvant être effectuée en 1 minute environ
Soyez prudent lors de la lecture de données avec des pandas (spécifiez dtype)
Liste des couleurs pouvant être définies avec tkinter (mémorial)
Visualisation des données avec les pandas
Manipulation des données avec les Pandas!
Mélangez les données avec les pandas
Il semble que le suivi des squelettes puisse être effectué avec RealSense
J'ai étudié le prétraitement qui peut être fait avec PyCaret
[Python] Dessinez des données d'altitude sur une surface sphérique avec Plotly et dessinez un globe qui peut être tourné en rond et en rond
Graphique des données Excel avec matplotlib (1)
Graphique des données Excel avec matplotlib (2)
Conseils de traitement des données avec Pandas