2015-01-21 3 views
2

Я могу импортировать данные из файла Excel с помощью панд с помощью:красящие клетки в пандах

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

Теперь у меня есть все данные в качестве й DataFrame. Я хотел бы покрасить некоторые ячейки в эти данные на основе условий, определенных в другой функции, и экспортировать их (с цветовым кодированием) в файл Excel.

Может ли кто-нибудь сказать мне, как мне это сделать?

спасибо.

+0

Вы используете неправильную библиотеку, это не можете сделать в пандах. – elyase

+0

Какую библиотеку я должен использовать для этого? –

+0

[xlwt] (http://www.python-excel.org) или [xlutils] (http://pythonhosted.org/xlutils/index.html). Может быть также http://xlwings.org (бесплатно) или https://datanitro.com (оплачивается) для прямого управления excel. Pandas не предназначен для управления файлами excel, он просто читает их и позволяет легко производить вычисления. – elyase

ответ

1

попробовать что-то вроде этого:

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. 

Больше информации здесь: https://xlsxwriter.readthedocs.org/format.html

+0

Спасибо. Понял. –

1

Есть довольно много идей о стилизации клеток на Pandas website. Однако он упоминается: Это новая функция и все еще находится в разработке. Мы добавим функции и, возможно, вносим изменения в будущие выпуски

3

У Pandas есть относительно новая функция Styler, где вы можете применять манипуляции с условным форматированием в dataframes. http://pandas.pydata.org/pandas-docs/stable/style.html

Вы можете использовать некоторые из своих встроенных функций, таких как background_gradient или bar повторить первенствует-подобные функции, как условное форматирование и данных баров. Вы также можете форматировать ячейки, чтобы отображать проценты, float, ints и т. Д. Без изменения исходного фрейма.

Вот пример типа диаграммы можно сделать с помощью Styler (это нонсенс график, а просто имел в виду, чтобы продемонстрировать особенности):

enter image description here

Чтобы использовать полную функциональность Styler вы должны получить удобно с API-интерфейсами Styler.apply() и Styler.applymap(). Они позволяют создавать пользовательские функции и применять их к столбцам, строкам или элементам таблицы. Например, если бы я хотел, чтобы окрасить + IVE клетки зеленой и -ive клетку красной, я бы создать функцию

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

и вызвать его на моем Styler объекта, т.е. df.style.applymap(_color_red_or_green).

Что касается экспорта обратно в Excel, насколько я знаю, это не поддерживается в Styler, но я бы, вероятно, пошел по пути xlsxwriter, если вам НЕОБХОДИМСЯ по какой-либо причине Excel. Однако, по моему опыту, это отличная чистая альтернатива Python, например, наряду с графиками matplotlib и электронными сообщениями/отчетами.

Смежные вопросы