iPython Notebook에서 DataFrame을 표로 표시


245

iPython 노트북을 사용하고 있습니다. 내가 이것을 할 때 :

df

나는 세포가있는 아름다운 테이블을 얻습니다. 그러나 내가 이것을하면 :

df1
df2 

첫 번째 아름다운 테이블을 인쇄하지 않습니다. 내가 이것을 시도하면 :

print df1
print df2

테이블을 다른 형식으로 인쇄하여 열을 쏟아 내고 출력을 매우 크게 만듭니다.

두 데이터 세트 모두에 대해 아름다운 테이블을 인쇄하도록 강제하는 방법이 있습니까?


15
display(df)(with from IPython.display import display) 또는print df.to_html()
joris

3
@ joris, 귀하의 의견은 질문에 대답하는 것 같으므로 질문에 답변으로 게시하여 질문에 대한 답변이 남아 있지 않습니까?
Cristian Ciupitu

답변:


384

IPython의 디스플레이 모듈에서 HTML()또는 display()기능 을 사용해야합니다 .

from IPython.display import display, HTML

# Assuming that dataframes df1 and df2 are already defined:
print "Dataframe 1:"
display(df1)
print "Dataframe 2:"
display(HTML(df2.to_html()))

그냥 print df1.to_html()렌더링하지 않으면 원시 HTML을 얻을 수 있습니다.

IPython.core.display같은 효과로 가져올 수도 있습니다


3
파이썬에게 자동으로 브라우저를 열고 표시하도록 요청할 수 HTML(df2.to_html())있습니까?
Cina

@Cina 파일에 HTML을 작성한 다음 해당 파일에서 즐겨 찾는 브라우저를 호출 할 수 있어야하지만 그렇게하는 방법은 사용중인 시스템, 브라우저 등에 따라 다릅니다.
nealmcb

2
HTML (df2.to_html ())은 아무것도하지 않습니다. 데이터 프레임을 렌더링하려면 display (HTML (df2.to_html ()))를 수행해야합니다. 답변을 수정하려고했지만 어떻게 든 거부되었습니다.
alyaxey

8
버전 5.6.0에서는 필요하지 않습니다import display
joelb

연결된 문자열을 처리하는 방법? 예를 들어 텍스트 열에서 모든 텍스트를 가져옵니다.
Peter.k 2019

51
from IPython.display import display
display(df)  # OR
print df.to_html()

5
@emunsing에서 언급했듯이 .to_html ()이 작동하지 않으면 렌더링되지 않은 html 테이블이 제공됩니다.
mayank

44

이 답변은이 블로그 게시물의 두 번째 팁을 기반으로합니다. 28 Jupyter Notebook 팁, 요령 및 바로 가기

노트북 상단에 다음 코드를 추가 할 수 있습니다

from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"

이것은 Jupyter에게 변수 나 문장에 대한 결과를 자체 줄에 출력하도록 지시합니다. 따라서 다음을 포함하는 셀만 실행할 수 있습니다.

df1
df2

"두 데이터 세트 모두에 대해 아름다운 테이블을 인쇄합니다".


3
이 솔루션은 아름답게 작동하며 원래의 문제를 해결합니다. 감사!
Zertrin

16

HTML을 엉망으로 만들지 않고 가능한 한 기본 인프라를 많이 사용합니다. Hbox 또는 VBox와 함께 출력 위젯을 사용할 수 있습니다.

import ipywidgets as widgets
from IPython import display
import pandas as pd
import numpy as np

# sample data
df1 = pd.DataFrame(np.random.randn(8, 3))
df2 = pd.DataFrame(np.random.randn(8, 3))

# create output widgets
widget1 = widgets.Output()
widget2 = widgets.Output()

# render in output widgets
with widget1:
    display.display(df1)
with widget2:
    display.display(df2)

# create HBox
hbox = widgets.HBox([widget1, widget2])

# render hbox
hbox

이 결과는 다음과 같습니다.

여기에 이미지 설명을 입력하십시오


5

표시 사이에 쉼표를 사용하여 두 df를 모두 표시 할 수있는 것 같습니다. 나는 github의 일부 노트북에서 이것을 발견했습니다. 이 코드는 Jake VanderPlas의 노트북에서 가져온 것입니다.

class display(object):
    """Display HTML representation of multiple objects"""
    template = """<div style="float: left; padding: 10px;">
    <p style='font-family:"Courier New", Courier, monospace'>{0}</p>{1}
    </div>"""
    def __init__(self, *args):
        self.args = args

    def _repr_html_(self):
        return '\n'.join(self.template.format(a, eval(a)._repr_html_())
                     for a in self.args)

    def __repr__(self):
        return '\n\n'.join(a + '\n' + repr(eval(a))
                       for a in self.args)

display('df', "df2")


1

Jupyter Notebook에서 DataFrame을 표시하려면 다음을 입력하십시오.

   디스플레이 (Name_of_the_DataFrame)

예를 들면 다음과 같습니다.

  디스플레이 (df)

0

목록에 포함 된 데이터 프레임을 표시하려면

display(*dfs)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.