In diesem Artikel erfahren Sie, wie Sie die Zahlen in einem Pandas DataFrame verschönern und einige erweiterte Visualisierungsoptionen im Pandas-Stil verwenden, um Ihre Fähigkeit zur Datenanalyse mit Pandas zu verbessern.
Häufige Beispiele sind:
In diesem Artikel werden virtuelle Daten verwendet, um es allen zu erklären. Bei den Daten handelt es sich um Verkaufsdaten einer fiktiven Organisation aus dem Jahr 2018.
Der Link zum Datensatz lautet wie folgt:
https://www.aliyundrive.com/s/Tu9zBN2x81c
import numpy as np import pandas as pd df = pd.read_excel('2018_Sales_Total.xlsx')
Der Effekt ist wie folgt folgt: Lesen Sie diese Nach den Daten können wir eine kurze Zusammenfassung erstellen, um zu sehen, wie viel unsere Kunden bei uns gekauft haben und wie hoch ihr durchschnittlicher Einkaufsbetrag ist. Der Einfachheit halber habe ich hier die ersten 5 Daten abgefangen.
df.groupby('name')['ext price'].agg(['mean', 'sum'])
Die Ergebnisse sind wie folgt:
Wenn Sie sich diese Daten ansehen, ist es etwas schwierig, die Skala der Zahlen zu verstehen, da Sie 6 Dezimalstellen haben und einige größere Zahlen. Darüber hinaus ist unklar, ob es sich um USD oder eine andere Währung handelt. Wir können dieses Problem mit DataFrame style.format lösen.
(df.groupby('name')['ext price'] .agg(['mean', 'sum']) .style.format('${0:,.2f}'))
Die Ergebnisse sind wie folgt: Mit der Formatfunktion können Sie alle Funktionen der String-Formatierungstools von Python für Ihre Daten nutzen. In diesem Fall verwenden wir ${0:,.2f}, um das führende Dollarzeichen einzufügen, ein Komma hinzuzufügen und das Ergebnis auf zwei Dezimalstellen zu runden.
Wenn wir beispielsweise auf 0 Dezimalstellen runden möchten, können wir das Format in ${0:,.0f} ändern.
(df.groupby('name')['ext price'] .agg(['mean', 'sum']) .style.format('${0:,.0f}'))
Die Ergebnisse sind wie folgt:
Wenn wir den Gesamtumsatz pro Monat sehen möchten, können wir den Grouper verwenden, um ihn nach Monat zusammenzufassen und den Anteil jedes Monats zu berechnen Gesamtjahresumsatzprozentsatz.
monthly_sales = df.groupby([pd.Grouper(key='date', freq='M')])['ext price'].agg(['sum']).reset_index() monthly_sales['pct_of_total'] = monthly_sales['sum'] / df['ext price'].sum()
Die Ergebnisse sind wie folgt: Um diesen Prozentsatz übersichtlicher darzustellen, wandeln wir ihn besser in einen Prozentsatz um.
format_dict = {'sum':'${0:,.0f}', 'date': '{:%m-%Y}', 'pct_of_total': '{:.2%}'} monthly_sales.style.format(format_dict).hide_index()
结果如下:
除了样式化数字,我们还可以设置 DataFrame 中的单元格样式。让我们用绿色突出显示最高的数字,用彩色突出显示最高、最低的数字。
(monthly_sales .style .format(format_dict) .hide_index() .highlight_max(color='lightgreen') .highlight_min(color='#cd4f39'))
结果如下:
另一个有用的函数是 background_gradient,它可以突出显示列中的值范围。
(monthly_sales.style .format(format_dict) .background_gradient(subset=['sum'], cmap='BuGn'))
结果如下:
pandas样式功能还支持在列内绘制条形图。
(monthly_sales .style .format(format_dict) .hide_index() .bar(color='#FFA07A', vmin=100_000, subset=['sum'], align='zero') .bar(color='lightgreen', vmin=0, subset=['pct_of_total'], align='zero') .set_caption('2018 Sales Performance'))
结果如下:
我认为这是一个很酷的功能。
import sparklines def sparkline_str(x): bins=np.histogram(x)[0] sl = ''.join(sparklines(bins)) return sl sparkline_str.__name__ = "sparkline" df.groupby('name')['quantity', 'ext price'].agg(['mean', sparkline_str])
结果如下:
Das obige ist der detaillierte Inhalt von3000 Wörter langer Artikel, Pandas verschönert Ihre Excel-Tabelle!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!