2013-03-06 2 views
11

Недавно я обновил свою версию панд. У меня есть последняя стабильная версия установлена ​​в настоящее время:qtconsole not rendering pandas dataframes as html notebook_repr_html опция

pd.__version__ 
Out[5]: '0.10.1' 

до этого обновления, это как dataframes отображались в qtconsole оболочки (это не мой скриншот, а просто один я нашел в Интернете).

rendering pandas dataframe as html table in qtconsole

Последняя версия панд также использует другой подход к настройке параметров отображения.

Вместо использования pd.set_printoptions, панды не хочет, чтобы вы использовать set_option конфиги, как это:

pd.set_option('display.notebook_repr_html', True) 

После обновления моей панд версии, qtconsole больше не делает dataframes как HTML таблиц.

Пример:

import numpy as np 
import pandas as pd 

pd.set_option('display.notebook_repr_html', True) 
pd.set_option('display.expand_frame_repr', True) 
pd.set_option('display.precision', 3) 
pd.set_option('display.line_width', 100) 
pd.set_option('display.max_rows', 50) 
pd.set_option('display.max_columns', 10) 
pd.set_option('display.max_colwidth', 15) 

Когда я создаю DataFrame ...

f = lambda x: x*np.random.rand() 
data = {"a": pd.Series(np.arange(10) ** 2), 
     "b": pd.Series(map(f, np.ones(10))) } 
df = pd.DataFrame(data) 
df 

Это то, что я вижу в qtconsole оболочки:

Out[4]: 
    a  b 
0 0 0.15 
1 1 0.74 
2 4 0.81 
3 9 0.94 
4 16 0.40 
5 25 0.03 
6 36 0.40 
7 49 0.43 
8 64 0.56 
9 81 0.14 

Вы можете проверить, как в настоящее время установлены ваши конфигурации дисплея:

opts = ["max_columns", 
     "max_rows", 
     "line_width", 
     "max_colwidth", 
     "notebook_repr_html", 
     "pprint_nest_depth", 
     "expand_frame_repr" ] 

for opt in opts: 
    print opt, pd.get_option(opt) 

Out[5] 
max_columns 10 
max_rows 50 
line_width 100 
max_colwidth 15 
notebook_repr_html True 
pprint_nest_depth 3 
expand_frame_repr True 

Что мне не хватает для рендеринга таблиц html с prettified в qtconsole?

ответ

11

Насколько я знаю, опция notebook_repr_html применима только к реальному ноутбуку IPython, а не к QTConsole.

В QTConsole, вы можете сделать:

from IPython.display import HTML 
import numpy as np 
import pandas 

df = pandas.DataFrame(np.random.normal(size=(75,5))) 
HTML(df.to_html()) 

Одна из проблем, вы можете столкнуться, если HTML-код слишком длинный для буфера вашего QTConsole в. В этом случае, по моему опыту, ничего не появится.

+0

Спасибо, Пол. Это работает! – hernamesbarbara

+0

Используемый интерфейс не должен быть видимым для панд. @hernamesbarbara, вы пытались использовать pandas в ноутбуке IPython с момента обновления? –

+0

Да, у меня есть. Веб-ноутбук работает так, как я ожидал. Наблюдение за конкретным вопросом в qtconsole, но не в ноутбуке, является частью того, что я нашел странным. Поведение было одинаковым как в qtconsole, так и в ноутбуке. Я вижу то же самое в обеих средах Windows на работе и в моем mac. – hernamesbarbara