DataFrame'i iPython Notebook'da tablo olarak göster


245

İPython dizüstü bilgisayar kullanıyorum. Bunu yaptığımda:

df

Hücrelerle güzel bir tablo alıyorum. Ancak, bunu yaparsanız:

df1
df2 

ilk güzel masayı yazdırmaz. Bunu denerseniz:

print df1
print df2

Tabloyu sütunları döken ve çıktıyı çok yüksek yapan farklı bir biçimde yazdırır.

Her iki veri kümesi için güzel tabloları yazdırmaya zorlamanın bir yolu var mı?


15
display(df)(ile from IPython.display import display), veyaprint df.to_html()
joris

3
@joris, yorumunuz soruyu cevaplıyor gibi görünüyor, bu yüzden soruyu cevap olarak yayınlayabilirsiniz, böylece soru cevapsız kalmaz mı?
Cristian Ciupitu

Yanıtlar:


384

IPython'un görüntü modülündeki HTML()veya display()işlevlerini kullanmanız gerekir :

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()))

Yalnızca print df1.to_html(), işlenmemiş, işlenmemiş HTML'yi alacağınızı unutmayın.

IPython.core.displayAynı efektle de içe aktarabilirsiniz


3
Python'dan tarayıcıyı otomatik olarak açmasını ve gösterilmesini istemek mümkün mü HTML(df2.to_html())?
Çin

@Cina HTML'yi bir dosyaya yazabilmeniz ve daha sonra bu dosyada en sevdiğiniz tarayıcıyı çağırabilmeniz gerekir, ancak bunun nasıl yapılacağı, bulunduğunuz sisteme, tarayıcıya
vb.Bağlıdır

2
HTML (df2.to_html ()) hiçbir şey yapmaz. Veri çerçevesini oluşturmak için display (HTML (df2.to_html ())) yapmalısınız. Cevabınızı düzenlemeye çalıştım ama bir şekilde reddedildi.
alyaxey

8
5.6.0 sürümünde şunları yapmanız gerekmezimport display
joelb

Birleştirilmiş dizelerle nasıl başa çıkılır? Örneğin, metin sütunlarından tüm metni almak için.
Peter.k

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

5
@Emunsing tarafından belirtildiği gibi, .to_html () işe yaramaz, oluşturulmamış html tablosu verir.
Maya

44

Bu yanıt, bu blog gönderisinin 2. ipucuna dayanmaktadır : 28 Jupyter Notebook ipuçları, püf noktaları ve kısayollar

Dizüstü bilgisayarınızın üstüne aşağıdaki kodu ekleyebilirsiniz

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

Bu, Jupyter'a herhangi bir değişken veya ifadenin sonuçlarını kendi satırına yazdırmasını söyler. Böylece, yalnızca aşağıdakileri içeren bir hücreyi yürütebilirsiniz:

df1
df2

ve "her iki veri kümesi için de güzel tabloları yazdırır".


3
Bu çözüm güzel çalışıyor ve sorulan orijinal sorunu çözüyor. Teşekkürler!
Zertrin

16

HTML ile uğraşmamayı ve mümkün olduğunca yerel altyapıyı kullanmayı tercih ediyorum. Çıktı widget'ını Hbox veya VBox ile kullanabilirsiniz:

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

Bu çıktılar:

resim açıklamasını buraya girin


5

Görünüşe göre her iki dfs'yi de arada bir virgül kullanarak görüntüleyebilirsiniz. Bunu github'daki bazı not defterlerinde fark ettim. Bu kod Jake VanderPlas'ın not defterinden.

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

DataFrame'i Jupyter Notebook'da göstermek için şunu yazın:

   Ekran (Name_of_the_DataFrame)

Örneğin:

  Ekran (DF)

0

Listede bulunan veri çerçevelerini görüntülemek için:

display(*dfs)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.