2012-05-25 10 views
8

Я создаю интерактивные рабочие процессы в IPython, используя фантастический ноутбук для интерактивного анализа и Pandas."Zebra Tables" в ноутбуке IPython?

Некоторые из таблиц, которые я показываю, будут намного легче читать с небольшим форматированием. Мне действительно понравилось бы что-то вроде «таблиц зебры», где каждая другая строка затенена. I read here о том, как это форматирование может быть реализовано через css. Есть ли действительно прямой способ применить css к IPython Notebook, а затем таблицы, сделанные с помощью таблицы стилей?

ответ

13

Вы можете запускать произвольный javascript (с jQuery) либо в ячейках уценки внутри тегов <script>, либо через класс IPIPython. С их помощью вы можете манипулировать (или разрушать) документ до содержимого вашего сердца, включая добавление таблиц стилей.

Например, следующее Stripe соответствующим образом классифицируемые таблицы:

<script type="text/javascript"> 
    $('head').append(
     "<style type='text/css'>tr.odd{background-color: #def}</style>" 
    ); 
</script> 

Если вы просто придерживаться, что в одном из ваших уценки клеток, то она будет применяться ко всему, на этой странице.

Или, вы можете запустить тот же код (минус <script> теги) из Python в код ячейки:

from IPython.core.display import Javascript, display 
display(Javascript(""" 
    $('head').append(
     "<style type='text/css'>tr.odd{background-color: #def}</style>" 
    ); 
""")) 

Но делать это будет влиять только на ваши таблицы, которые надлежащим образом отнесены к категориям, которые до кода который пишет HTML (например, в Pandas).

+2

Было бы неплохо начать делать некоторые подобные вещи в пандах (при условии, что API несколько стабилизировался) –

+0

fyi: [этот вопрос] (http://stackoverflow.com/questions/4977008/how-to- use-table-trodd-td-in-html) имеет несколько отличных css3 для «таблиц зебры». – drevicko

7

Я только что выпустил проект под названием ipy_table, чтобы обеспечить простой механизм для создания таблиц с форматированными форматированием в ноутбуках IPython (цвета, границы, выравнивание, форматирование поплавков, затенение зебры и т. Д.). Проект находится в https://github.com/epmoyer/ipy_table, и вы можете получить представление о его возможностях от https://github.com/epmoyer/ipy_table/blob/master/ipy_table-Reference.pdf.

+0

Ваша ссылка в формате pdf сломана – denfromufa

2

Если вы заинтересованы в создании сетки/таблиц с помощью slickgrid, но в python, то вас может заинтересовать qgrid. Это работает с ipython-ноутбуками с использованием панд.

https://github.com/quantopian/qgrid

Другой вариант заключается в использовании handsontable так:

http://nbviewer.ipython.org/gist/bollwyvl/6ad208084744c60dda65

Еще один, третий вариант с использованием только панд здесь:

Pandas Dataframes to_html: Highlighting table rows

Четвертый вариант заключается в используйте шаблонный движок, такой как jinja2, как это:

Pandas Dataframe display on a webpage

http://nbviewer.ipython.org/github/pydata/pandas/blob/8c4f9571c08d5122f1d9e40c43dadab8b6f10bf5/pandas_HTML_styling.ipynb

Наконец, есть открытый вопрос в панд для рендеринга на основе шаблонов:

https://github.com/pydata/pandas/issues/3190

P.S.Python гуру от Google предлагает это минимальное решение (во избежание каких-либо третьих сторон зависимость):

https://stackoverflow.com/a/1475453/2230844

или читать его книгу:

Python в ореховой скорлупе, второе издание, Глава 23 Структурированный текст: HTML

+0

Спасибо за подсказку о пакете qgrid. – rbrito

+0

qgrid имеет открытую проблему с цветными ячейками – denfromufa

+1

https://github.com/quantopian/qgrid/issues/28 – denfromufa

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

  • Нет связанных вопросов^_^