Maison > Article > développement back-end > Article de 3000 mots, Pandas embellit votre tableau Excel !
Cet article vous montrera comment embellir les nombres dans un Pandas DataFrame et utiliser des options de visualisation de style Pandas plus avancées pour améliorer votre capacité à analyser des données à l'aide de Pandas.
Exemples courants :
Cet article utilisera des données virtuelles pour l'expliquer à tout le monde. Les données sont des données de ventes de 2018 pour une organisation fictive.
Le lien de l'ensemble de données est le suivant :
https://www.aliyundrive.com/s/Tu9zBN2x81c
import numpy as np import pandas as pd df = pd.read_excel('2018_Sales_Total.xlsx')
L'effet est le suivant. suit : Lisez-les Après les données, nous pouvons faire un résumé rapide pour voir combien nos clients ont acheté chez nous et quel est leur montant moyen d'achat. Par souci de simplicité, j'ai intercepté ici les 5 premières données.
df.groupby('name')['ext price'].agg(['mean', 'sum'])
Les résultats sont les suivants :
Quand vous regardez ces données, il est un peu difficile de comprendre l'échelle des nombres car vous avez 6 décimales et quelques nombres plus grands. De plus, il n’est pas clair s’il s’agit de dollars américains ou d’une autre devise. Nous pouvons résoudre ce problème en utilisant DataFrame style.format.
(df.groupby('name')['ext price'] .agg(['mean', 'sum']) .style.format('${0:,.2f}'))
Les résultats sont les suivants : En utilisant la fonction format, vous pouvez utiliser toutes les capacités des outils de formatage de chaîne de python sur vos données. Dans ce cas, nous utilisons ${0:,.2f} pour mettre le premier signe dollar, ajouter une virgule et arrondir le résultat à deux décimales.
Par exemple, si nous voulons arrondir à 0 décimale, nous pouvons changer le format en ${0:,.0f}.
(df.groupby('name')['ext price'] .agg(['mean', 'sum']) .style.format('${0:,.0f}'))
Les résultats sont les suivants :
Si nous voulons voir les ventes totales par mois, nous pouvons utiliser le grouper pour résumer par mois et calculer la part mensuelle des ventes. pourcentage total des ventes annuelles.
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()
Les résultats sont les suivants : Afin d'afficher plus clairement ce pourcentage, mieux vaut le convertir en pourcentage.
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])
结果如下:
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!