Resalte los valores negativos en rojo y los valores positivos en negro en Pandas Dataframe

Veamos varios métodos para resaltar los valores positivos en rojo y los valores negativos en negro en Pandas Dataframe .
Primero, hagamos un marco de datos:

Python3

# Import Required Libraries
import pandas as pd
import numpy as np
  
  
# Create a dictionary for the dataframe
dict = {
  'Name': ['Sukritin', 'Sumit Tyagi', 
           'Akriti Goel', 'Sanskriti',
           'Abhishek Jain'],
   'Age': [22, 20, 45, 21, 22],
  'Marks': [90, 84, -33, -87, 82]
}
  
# Converting Dictionary to
# Pandas Dataframe
df = pd.DataFrame(dict)
  
# Print Dataframe
print(df)

Producción: 

Ahora, ven a la parte resaltada. Nuestro objetivo es resaltar los valores negativos en rojo y los valores positivos en negro.

Método 1: Usar Dataframe.style.apply() .

Sintaxis: DataFrame.style.apply(self, func, axis=0, subset=None, **kwargs)
Parámetros: 

  • func: debería tomar un pandas.Series o pandas.DataFrame basado en el eje y debería devolver un objeto con la misma forma. 
  • eje: {0 o ‘índice’, 1 o ‘columnas’, Ninguno}, por defecto 0. Aplicar a cada columna (eje=0 o ‘índice’), a cada fila (eje=1 o ‘columnas’), o a todo el DataFrame a la vez con axis=None. 
  • subconjunto: Conjunto de columnas o filas sobre las que se quiere llamar a la func. 
  • **kwargs: Pase junto a func.

Devuelve: objeto Styler.

Ejemplo 1: Resaltar texto.

Python3

# Define a function for colouring 
# negative values red and 
# positive values black
def highlight_max(s):
    if s.dtype == np.object:
        is_neg = [False for _ in range(s.shape[0])]
    else:
        is_neg = s < 0
    return ['color: red;' if cell else 'color:black' 
            for cell in is_neg]
  
# Using apply method of style 
# attribute of Pandas DataFrame
df.style.apply(highlight_max)

Producción: 

Ejemplo 2: Resaltar celdas en lugar de texto.

Python3

# Define a function which 
# returns the list for 
# df.style.apply() method
def highlight_max(s):
    if s.dtype == np.object:
        is_neg = [False for _ in range(s.shape[0])]
    else:
        is_neg = s < 0
    return ['background: red; color:white' 
            if cell else 'background:black; color:white' 
            for cell in is_neg]
  
# Using apply method of style 
# attribute of Pandas DataFrame
df.style.apply(highlight_max)

Producción: 

Método 2: Usar el método dataframe.style.applymap() .

Sintaxis: DataFrame.style.applymap(self, func, subset=Ninguno, **kwargs)
Parámetros: 

  • func: toma un valor escalar y devuelve los valores escalares 
  • subconjunto: Conjunto de columnas o filas sobre las que se quiere llamar a la func. 
  • **kwargs: Pase junto a func.

Devuelve: objeto Styler.

Ejemplo 1: Resaltar texto.

Python3

# Define a function for 
# colouring negative values 
# red and positive values black
def highlight_max(cell):
    if type(cell) != str and cell < 0 :
        return 'color: red'
    else:
        return 'color: black'
  
df.style.applymap(highlight_max)

Producción: 

Ejemplo 2: Resaltar celdas en lugar de texto.

Python3

# Define a function which 
# returns string for 
# applymap() method
def highlight_max(cell):
    if type(cell) != str and cell < 0 :
        return 'background: red; color:black'
    else:
        return 'background: black; color: white'
  
df.style.applymap(highlight_max)

Producción: 

 Nota: el método pandas.DataFrame.applymap() pasa solo una celda a la función invocable, mientras que pandas.DataFrame.apply() pasa pandas.Series a la función invocable.

Referencia: Estilismo en Pandas
 

Publicación traducida automáticamente

Artículo escrito por sukritinpal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *