Coloreando Celdas En Pandas

Puedo importar datos de un archivo de Excel usando Pandas usando:

xl = read_excel('path_to_file.xls', 'Sheet1', index_col=None, na_values=['NA']) 

Ahora que tengo todos los datos en xl como DataFrame. Me gustaría colorear algunas celdas en esos datos según las condiciones definidas en otra función y exportarlas (con código de color) a un archivo de Excel.

¿Alguien puede decirme cómo debo hacer esto?

Gracias.

Pandas tiene una función Styler relativamente nueva en la que puedes aplicar manipulaciones de tipo de formato condicional a los marcos de datos. http://pandas.pydata.org/pandas-docs/stable/style.html

Puede usar algunas de sus funciones integradas, como background_gradient o bar para replicar características similares a Excel, como el formato condicional y las barras de datos. También puede formatear celdas para mostrar porcentajes, flotantes, ints, etc. sin cambiar el dataframe original.

Este es un ejemplo del tipo de gráfico que puede hacer usando Styler (este es un gráfico sin sentido pero que solo pretende demostrar características):

introduzca la descripción de la imagen aquí

Para aprovechar la funcionalidad completa de Styler , debe sentirse cómodo con las Styler.apply() y Styler.applymap() . Estos le permiten crear funciones personalizadas y aplicarlas a las columnas, filas o elementos de la tabla. Por ejemplo, si quisiera colorear a + iive cell green y a -ive cell red, crearía una función

 def _color_red_or_green(val): color = 'red' if val < 0 else 'green' return 'color: %s' % color 

y df.style.applymap(_color_red_or_green) a mi objeto Styler , es decir, df.style.applymap(_color_red_or_green) .

Con respecto a la exportación a Excel, que yo sepa, esto no es compatible con Styler por lo que probablemente optaría por la ruta xlsxwriter si NECESITA Excel por alguna razón. Sin embargo, en mi experiencia, esta es una gran alternativa pura de Python, por ejemplo, junto con los gráficos matplotlib y en correos electrónicos / informes.

prueba algo como esto:

 with pandas.io.excel.ExcelWriter(path=Path, engine="xlsxwriter") as writer: sheet = writer.book.worksheets()[0] sheet.write(x, y, value, format) #format is what determines the color etc. 

Más información aquí: https://xlsxwriter.readthedocs.org/format.html

Hay bastantes ideas sobre el estilo de las celdas en el sitio web de Pandas . Sin embargo, se menciona: esta es una característica nueva y aún está en desarrollo. Agregaremos funciones y posiblemente haremos cambios importantes en futuras versiones.