Подтвердить что ты не робот

Qtconsole не отображает pandas dataframes как html notebook_repr_html option

Недавно я обновил версию pandas. Теперь у меня установлена ​​последняя стабильная версия:

pd.__version__
Out[5]: '0.10.1'

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

rendering pandas dataframe as html table in qtconsole

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

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

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

После обновления моей версии pandas 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

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

4b9b3361

Ответ 1

Насколько я знаю, параметр 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. В этом случае по моему опыту ничего не появится.