2013-03-06 14 views
11

Gần đây tôi đã nâng cấp phiên bản gấu trúc của mình. Tôi có phiên bản ổn định mới nhất được cài đặt tại:qtconsole không hiển thị khung dữ liệu gấu trúc dưới dạng html notebook_repr_html tùy chọn

pd.__version__ 
Out[5]: '0.10.1' 

trước khi nâng cấp này, đây là cách dataframes đã được trưng bày trong vỏ qtconsole (đây không phải là ảnh chụp màn hình của tôi, nhưng chỉ đơn giản là một tôi tìm thấy trên web).

rendering pandas dataframe as html table in qtconsole

Phiên bản mới nhất của gấu trúc cũng sử dụng một cách tiếp cận khác nhau để thiết lập các tùy chọn hiển thị.

Thay vì sử dụng pd.set_printoptions, gấu trúc muốn bạn sử dụng set_option configs như thế này:

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

Sau khi nâng cấp phiên bản gấu trúc của tôi, qtconsole không còn làm cho dataframes như bảng html.

Một ví dụ:

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) 

Khi tôi tạo ra một 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 

Đây là những gì tôi nhìn thấy trong vỏ 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 

Bạn có thể kiểm tra như thế nào cấu hình hiển thị của bạn hiện được đặt:

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 

Tôi thiếu gì để hiển thị các bảng html đã được định sẵn trong qtconsole?

Trả lời

11

Theo như tôi biết, tùy chọn notebook_repr_html chỉ áp dụng cho Máy tính xách tay IPython thực tế chứ không áp dụng cho QTConsole.

Trong QTConsole, bạn có thể làm:

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

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

Một vấn đề bạn có thể gặp là nếu HTML là quá dài cho đệm của QTConsole của bạn. Trong trường hợp đó không có gì sẽ hiển thị, theo kinh nghiệm của tôi.

+0

Cảm ơn Paul. Những công việc này! – hernamesbarbara

+0

Giao diện người dùng được sử dụng không được hiển thị cho gấu trúc. @hernamesbarbara, bạn đã thử sử dụng gấu trúc trong một sổ ghi chép IPython kể từ khi bạn nâng cấp? –

+0

Có, tôi có. Máy tính xách tay web hoạt động giống như tôi mong đợi. Quan sát vấn đề đặc biệt trong qtconsole nhưng không phải trong sổ ghi chép là một phần của những gì tôi thấy lạ. Các hành vi được sử dụng để được như nhau trong cả hai qtconsole và máy tính xách tay. Tôi đang nhìn thấy điều tương tự trong cả hai môi trường cửa sổ của tôi tại nơi làm việc và mac của tôi. – hernamesbarbara