2012-05-25 14 views
8

Buduję niektóre interaktywne przepływy pracy w IPythonie za pomocą fantastycznego notatnika do interaktywnej analizy i Pand."Tabele Zebry" w Notatniku IPython?

Niektóre wyświetlane przeze mnie tabele będą znacznie łatwiejsze do odczytania z odrobiną formatowania. Naprawdę lubię "tabele zebra", gdzie każdy inny rząd jest zacieniony. I read here o tym, jak to formatowanie można zaimplementować za pomocą css. Czy istnieje naprawdę prosty sposób zastosowania css do IPython Notebook, a następnie tabele renderowane za pomocą arkusza stylów?

Odpowiedz

13

Można uruchomić dowolny javascript (z jQuery) w komórkach markdown wewnątrz znaczników <script> lub za pośrednictwem klasy IPython.core.display.Javascript IPythona. Dzięki nim możesz manipulować dokumentem (lub niszczyć go) do treści swojego serca, w tym dodawać arkusze stylów.

Na przykład, następujące paskiem odpowiednio sklasyfikowane tabele:

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

Jeśli tylko trzymać, że w jednej z komórek przecen, to będzie ona miała zastosowanie do wszystkich na stronie.

Albo, można uruchomić tego samego kodu (minus <script> znaczników) od Python w komórce kod:

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

Ale robi to wpłynie tylko tabele, które są odpowiednio sklasyfikowane, który jest gotowy do kodu to jest pisanie kodu HTML (np. w Pandach).

+2

Dobrze byłoby zacząć robić tego rodzaju rzeczy w pandach (zakładając, że API nieco się ustabilizowało) –

+0

fyi: [to pytanie] (http://stackoverflow.com/questions/4977008/how-to- use-table-trodd-td-in-html) ma trochę sprytnego css3 dla "tabel zebra". – drevicko

2

Jeśli jesteś zainteresowany budowaniem siatek/tabel przy użyciu slickgrid, ale w python, to może być zainteresowany qgrid. Działa to z notebooków ipython używających pand.

https://github.com/quantopian/qgrid

Inną opcją jest użycie handsontable tak:

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

Jeszcze inny, 3rd opcja używając tylko pandy jest tutaj:

Pandas Dataframes to_html: Highlighting table rows

Czwarta opcja jest użyj silnika szablonów, takiego jak jinja2, tak:

Pandas Dataframe display on a webpage

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

Wreszcie jest kwestią otwartą w pand uczynić na podstawie szablonów:

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

PS:Python guru od Google sugeruje to minimalne rozwiązanie (unikać jakiegokolwiek uzależnienia od osób trzecich):

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

lub przeczytać jego książkę:

Python w skrócie, 2nd Edition, rozdział 23 Structured Text: HTML

+0

Dzięki za podpowiedź na temat pakietu qgrid. – rbrito

+0

qgrid ma otwarty problem z kolorowaniem komórek – denfromufa

+1

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