2014-10-08 18 views
11

Quindi ho i dati che sto trasmettendo in un file Excel usando ExcelWriter dei panda. Dopo che l'intero dato è stato emesso nel file Excel, qual è il modo più semplice per applicare la formattazione condizionale ad esso in modo programmatico usando Python?Il modo più semplice per creare un gradiente di colore su excel usando python/panda?

Voglio essere in grado di fare l'equivalente (tramite Python) di selezionare (in Excel) tutte le celle riempite nel foglio Excel e fare clic su "Formattazione condizionale"> Scale di colori. Il risultato finale è un gradiente di colori basato sui valori, una "mappa di calore", se vuoi.

Questo è quello che sto facendo per generare i dati:

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

Dopo che i dati è scritto, ho bisogno di un modo per applicare la formattazione condizionale utilizzando python. Per renderlo più semplice, voglio che i colori siano più scuri di blu più positivi (> 0) i valori sono e per essere più scuri di rosso più i valori sono negativi (< 0) e la cella deve essere bianca se il il valore è 0.

Ho provato a cercare xlsxwriter (nella speranza di poter modificare il file excel dopo averlo creato) ma nella documentazione dice che "[XLSXwriter] non può leggere o modificare i file Excel XLSX esistenti."

Per favore fatemi sapere se potete pensare a una soluzione o indicarmi la giusta direzione.

risposta

14

Ecco un esempio di come applicare un formato condizionale al file XlsxWriter Excel creato da Panda:

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

L'output è simile al seguente:

enter image description here

Vedere la documentazione XlsxWriter su Conditional Formatting per vedere come è possibile modificare i colori o altre proprietà.

Vedere anche Working with Python Pandas and XlsxWriter.

+0

Grazie signore/signora per i suoi servizi. – jenny

+0

Come specificarei i colori che volevo? – jenny

+0

@jenny. L'impostazione di colori e altre proprietà è spiegata nei documenti collegati sopra. – jmcnamara

Problemi correlati