La façon la plus facile de créer un gradient de couleur sur excel en utilisant python/pandas?

J'ai donc des données que j'envoie dans un fichier excel en utilisant L'ExcelWriter de pandas. Une fois que toutes les données sont sorties dans le fichier Excel, Quelle est la façon la plus facile d'appliquer le formatage conditionnel à Python?

je veux être capable de faire l'équivalent (par Python) de sélectionner (en Excel) toutes les cellules remplies dans la feuille Excel et de cliquer sur "formatage conditionnel" > échelles de couleurs. Le résultat final est un gradient de couleurs basé sur les valeurs, "carte de chaleur" si vous voulez.

C'est ce que je fais pour générer les données:

writer = ExcelWriter('Data' + today +'.xls')
... processing data ... 
df.to_excel(writer, sheet_name = 'Models', startrow = start_row, index=False)

après que les données sont écrites, j'ai besoin d'un moyen d'appliquer le formatage conditionnel en utilisant python. Pour faire simple, je veux que les couleurs soient plus foncées teintes de bleu le plus positif (>0) les valeurs sont et d'être des teintes de rouge plus foncées les valeurs sont (<0) et la cellule d'être blanc si la valeur est 0.

j'ai essayé de regarder dans xlsxwriter (dans l'espoir d'être en mesure de modifier le fichier excel après l'avoir créé) mais dans la documentation il est dit que "il [XLSXwriter] ne peut pas lire ou modifier les fichiers Excel XLSX existants."

s'il vous plaît, faites-moi savoir si vous pouvez penser à une solution ou m'indiquer la bonne direction.

14
demandé sur jenny 2014-10-09 00:00:14

1 réponses

voici un exemple d'application d'un format conditionnel au fichier Excel Xlsxwriter créé par Pandas:

import pandas as pd

# Some sample data to plot.
list_data = [30, 40, 50, 40, 20, 10, 5]

# Create a Pandas dataframe from the data.
df = pd.DataFrame(list_data)

# Create a Pandas Excel writer using XlsxWriter as the engine.
excel_file = 'testfile.xlsx'
sheet_name = 'Sheet1'

writer = pd.ExcelWriter(excel_file, engine='xlsxwriter')
df.to_excel(writer, sheet_name=sheet_name)

# Access the XlsxWriter workbook and worksheet objects from the dataframe.
# This is equivalent to the following using XlsxWriter on its own:
#
#    workbook = xlsxwriter.Workbook('filename.xlsx')
#    worksheet = workbook.add_worksheet()
#
workbook = writer.book
worksheet = writer.sheets[sheet_name]

# Apply a conditional format to the cell range.
worksheet.conditional_format('B2:B8', {'type': '3_color_scale'})

# Close the Pandas Excel writer and output the Excel file.
writer.save()

La sortie ressemble à ceci:

enter image description here

Voir la XlsxWriter docs sur Formatage Conditionnel pour voir comment vous pouvez changer les couleurs ou d'autres propriétés.

Voir aussi travailler avec Python Pandas et XlsxWriter.

16
répondu jmcnamara 2015-05-08 08:30:04