Embellecer Pandas DataFrame, en realidad es muy simple

Hola a todos, este artículo les mostrará cómo embellecer los números en un DataFrame de Pandas y usar algunas de las opciones de visualización más avanzadas al estilo de Pandas para mejorar su capacidad de analizar datos con Pandas.

Los ejemplos comunes son:

  • Utilice símbolos de moneda cuando trate con valores monetarios. Por ejemplo, si sus datos contienen el valor 25,00, no sabrá inmediatamente si el valor es Yuan chino, USD, GBP o alguna otra moneda.

  • El porcentaje es otra indicación útil, ¿0,05 o 5%? Usar el símbolo de porcentaje da una imagen muy clara de cómo interpretar los datos.

  • Los estilos de Pandas también incluyen herramientas más avanzadas para agregar color u otros elementos visuales a la salida.

[Nota] Únase a nuestro grupo de discusión técnica al final del artículo

analisis de CASO

Este artículo utilizará datos virtuales para explicárselo. Los datos son datos de ventas de 2018 para una organización ficticia.

El enlace del conjunto de datos es el siguiente:
https://www.aliyundrive.com/s/Tu9zBN2x81c

1. Importe la biblioteca relevante y lea los datos

import numpy as np
import pandas as pd

df = pd.read_excel('2018_Sales_Total.xlsx')

El efecto es el siguiente: imagendespués de leer estos datos, podemos hacer un resumen rápido para ver cuánto nos compran los clientes y cuál es su monto promedio de compra. Para simplificar, he interceptado los primeros 5 elementos de datos aquí.

df.groupby('name')['ext price'].agg(['mean', 'sum'])

El resultado es el siguiente:imagen

2. Agregar símbolo de moneda

Cuando miras estos datos, es un poco difícil entender la escala de los números porque tienes 6 puntos decimales y algunos números más grandes. Además, no está claro si se trata del dólar estadounidense o de otra moneda. Podemos resolver este problema usando DataFrame style.format.

(df.groupby('name')['ext price']
 .agg(['mean', 'sum'])
 .style.format('${0:,.2f}'))

Aquí está el resultado: imagenal usar la función de formato, puede usar todas las capacidades de las herramientas de formato de cadenas de Python en los datos. En este caso, usamos ${0:,.2f} para colocar el signo de dólar inicial, agregar una coma y redondear el resultado a dos lugares decimales.

Por ejemplo, si quisiéramos redondear a 0 decimales, podríamos cambiar el formato a ${0:,0f}.

(df.groupby('name')['ext price']
 .agg(['mean', 'sum'])
 .style.format('${0:,.0f}'))

El resultado es el siguiente:imagen

3. Añadir porcentaje

Si queremos ver las ventas totales por mes, podemos usar grouper para agregar por mes y calcular el porcentaje de cada mes de las ventas anuales totales.

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

Aquí está el resultado: imagenPara mostrar este porcentaje más claramente, mejor lo convertimos a un porcentaje.

format_dict = {
    
    'sum':'${0:,.0f}', 'date': '{:%m-%Y}', 'pct_of_total': '{:.2%}'}
monthly_sales.style.format(format_dict).hide_index()

El resultado es el siguiente:imagen

4. Resalta números

Además de diseñar números, también podemos diseñar celdas en un DataFrame. Resaltemos los números más altos en verde y los números más altos y más bajos en color.

(monthly_sales
 .style
 .format(format_dict)
 .hide_index()
 .highlight_max(color='lightgreen')
 .highlight_min(color='#cd4f39'))

El resultado es el siguiente:imagen

5. Establecer el color del degradado

Otra función útil es background_gradient, que resalta el rango de valores en una columna.

(monthly_sales.style
 .format(format_dict)
 .background_gradient(subset=['sum'], cmap='BuGn'))

El resultado es el siguiente:imagen

6. Establecer la barra de datos

La función de estilo pandas también admite dibujar gráficos de barras dentro de las columnas.

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

El resultado es el siguiente:imagen

7. Dibujar minigráficos

Creo que esta es una característica genial.

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

El resultado es el siguiente:imagen

artículo recomendado

Intercambio de Tecnología

¡Bienvenido a reimprimir, coleccionar, dar me gusta y apoyar!

inserte la descripción de la imagen aquí

En la actualidad, se ha abierto un grupo de intercambio técnico, con más de 2000 miembros . La mejor manera de comentar al agregar es: fuente + dirección de interés, que es conveniente para encontrar amigos de ideas afines.

  • Método 1. Envíe la siguiente imagen a WeChat, mantenga presionada para identificarla y responda en segundo plano: agregar grupo;
  • Método ②, agregar microseñal: dkl88191 , nota: de CSDN
  • Método ③, cuenta pública de búsqueda de WeChat: aprendizaje de Python y extracción de datos , respuesta en segundo plano: agregar grupo

pulsación larga seguir

Supongo que te gusta

Origin blog.csdn.net/weixin_38037405/article/details/124055041
Recomendado
Clasificación