Ich dachte an einem Punkt. Es ist auch mühsam, es nach EXCEL zu verschieben und eine Datenleiste anzuhängen. Können wir es also nicht auf Jupyter verwalten? Ich dachte, dass Pandas normalerweise eine solche Funktion haben lol Ich wusste nicht lol Ich habe es auf der folgenden Seite gefunden. https://pbpython.com/styling-pandas.html
DataFrame.style Sie können die detaillierte Funktion von DataFrame.style auf der folgenden Seite sehen. https://pandas.pydata.org/pandas-docs/version/0.18/style.html
Üben Sie mit dem in bklearn enthaltenen Datensatz Boston
#Paketimport
import pandas as pd
from sklearn import datasets
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
#Daten gelesen
boston = datasets.load_boston()
boston_df=pd.DataFrame(boston.data)
boston_df.columns = boston.feature_names #Spaltennamen einfügen
boston_df['PRICE'] = pd.DataFrame(boston.target)
display(boston_df)
Fügen Sie dazu eine Datenleiste wie EXCEL hinzu
display(boston_df.style.bar())
Oh, es ist geschafft. Aber es ist irgendwie blutig ...
Ich mag kein blutiges Blut, also kann ich eine Spalte auswählen und die Farbe ändern. Sie kann angepasst werden, indem Sie den Spaltennamen in der Teilmenge angeben oder ihn so beschreiben, dass die Leiste verbunden ist.
#Spaltenspezifikation
display(boston_df.style.bar(subset=['RM','AGE']))
#Spaltenbezeichnung und Farbcodierung für jede
display(boston_df.style\
.bar(subset=['RM'],color=['lightcoral'])\
.bar(subset=['AGE'],color=['lightgreen'])\
.bar(subset=['TAX'],color=['lightblue']))
Ich kann gehen!
Probieren wir auch die Farbskala aus.
#Erstellen einer Korrelationsmatrix
boston_corr=boston_df.corr()
display(boston_corr)
#Farbe hinzufügen
display(boston_corr.style.background_gradient(cmap='coolwarm'))
Ich kann gehen! (Zweites Mal) Ich wusste, dass Pandas mit EXCEL auch solche Tabellen verarbeiten können.
Übrigens ist es möglich, so wie es ist als EXCEL-Datei auszugeben.
#Das openpyxl-Paket ist bereits installiert
n_df=boston_corr.style.background_gradient(cmap='coolwarm')
n_df.to_excel('test.xlsx')
Inhalt von'test.xlsx '↓
Es kann auf verschiedene Arten verwendet werden, um ein einfach zu lesendes Notizbuch zu erstellen!
Sie können ein Histogramm in eine Pandas-Tabelle mit einem Paket namens Sparklines schreiben Berechnen Sie beispielsweise für jeden CHAS: Charles River (1: um den Fluss herum, 0: ansonsten) den folgenden Durchschnitt. ・ DIS: Gewichtete Entfernung von 5 Beschäftigungseinrichtungen in Boston ・ PREIS: Hauspreis
display(boston_df.groupby('CHAS')[['DIS','PRICE']].mean())
Hmmm, ich verstehe, dass die Gegend um den Charles River näher an den Arbeitsplätzen in Boston liegt und die Miete höher ist. Es gibt jedoch Ausreißer und die Tendenz ist fast gleich, aber der Durchschnitt kann höher sein. Definieren Sie also eine Funktion
from sparklines import sparklines
#Funktion definieren
def sparkline_hist(x, bin_num=10):
bins=np.histogram(x, bins=bin_num)[0]
sl = sparklines(bins)[0]
return sl
Wenn Sie die Funktion auf groupby anwenden,
display(boston_df.groupby('CHAS')[['DIS','PRICE']].agg(['mean', sparkline_hist]))
In der Tabelle erscheint ein Histogramm! Anscheinend gibt es viele Orte in der Nähe der Beschäftigungsmöglichkeiten in Boston, auch wenn es nicht um den Charles River herum liegt, und das Gebiet um den Charles River scheint eine Polarisierung von Häusern mit relativ hohen Mieten zu sein, und solchen, die es nicht sind. Sie können Dinge auf Pandas sehen.
Aus irgendeinem Grund gibt es bei meinem Jupyter jedoch einen Teil, in dem so etwas wie ein Histogramm nach unten konvex ist, und das bleibt ein Rätsel. Wenn ich den Inhalt der Funktion sparkline_hist untersuche, wird sie nicht besonders konvex. Warum?
# sparkline_Überprüfung des Inhalts der Hist-Funktion
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)
Übrigens, als ich das Histogramm tatsächlich schrieb, sah es wie folgt aus.
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 haben Spaß gemacht, aber ich kann mir keine besonders nützlichen Anwendungen vorstellen ... lol Ich zeichne normalerweise ein Histogramm. Lol
das ist alles!
Recommended Posts