Tampilkan DataFrame sebagai tabel di iPython Notebook


245

Saya menggunakan notebook iPython. Ketika saya melakukan ini:

df

Saya mendapatkan meja yang indah dengan sel. Namun, jika saya melakukan ini:

df1
df2 

itu tidak mencetak tabel cantik pertama. Jika saya coba ini:

print df1
print df2

Ini mencetak tabel dalam format berbeda yang menumpahkan kolom dan membuat output sangat tinggi.

Apakah ada cara untuk memaksanya mencetak tabel yang indah untuk kedua set data?


15
display(df)(with from IPython.display import display), atauprint df.to_html()
joris

3
@ joris, komentar Anda sepertinya menjawab pertanyaan, jadi bisakah Anda mempostingnya sebagai jawaban, sehingga pertanyaan itu tidak tetap tidak terjawab?
Cristian Ciupitu

Jawaban:


384

Anda harus menggunakan fungsi HTML()atau display()dari modul tampilan IPython:

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

Perhatikan bahwa jika Anda baru saja print df1.to_html()mendapatkan HTML mentah yang tidak dirender.

Anda juga dapat mengimpor dari IPython.core.displaydengan efek yang sama


3
Apakah mungkin untuk meminta python untuk membuka dan menampilkan browser secara otomatis HTML(df2.to_html())?
Cina

@Cina Anda harus dapat menulis HTML ke file, dan kemudian memanggil browser favorit Anda pada file itu, tetapi cara melakukannya sangat tergantung pada sistem yang Anda gunakan, browser, dll.
nealmcb

2
HTML (df2.to_html ()) tidak melakukan apa pun. Anda harus menampilkan (HTML (df2.to_html ()))) untuk merender bingkai data. Saya mencoba mengedit jawaban Anda tetapi entah bagaimana ditolak.
alyaxey

8
pada versi 5.6.0 Anda tidak perluimport display
joelb

Bagaimana cara menangani string yang digabungkan? Misalnya untuk mendapatkan semua teks dari kolom teks.
Peter.k

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

5
Seperti yang dinyatakan oleh @emunsing, .to_html () tidak berfungsi, ia memberikan tabel html yang tidak dirender.
mayank

44

Jawaban ini didasarkan pada tip ke-2 dari posting blog ini: 28 Tips, trik, dan cara pintas Notebook Jupyter

Anda dapat menambahkan kode berikut ke bagian atas buku catatan Anda

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

Ini memberitahu Jupyter untuk mencetak hasil untuk variabel atau pernyataan apa pun pada barisnya sendiri. Jadi Anda bisa menjalankan sel yang hanya berisi

df1
df2

dan itu akan "mencetak tabel yang indah untuk kedua set data".


3
Solusi ini berfungsi dengan baik dan menyelesaikan masalah awal yang diajukan. Terima kasih!
Zertrin

16

Saya lebih suka tidak main-main dengan HTML dan menggunakan sebanyak mungkin infrastruktur asli. Anda dapat menggunakan widget Output dengan Hbox atau 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

Output ini:

masukkan deskripsi gambar di sini


5

Tampaknya Anda hanya dapat menampilkan kedua dfs menggunakan koma di antara layar. Saya perhatikan ini pada beberapa notebook di github. Kode ini dari notebook 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

Untuk menampilkan DataFrame di Jupyter Notebook, cukup ketik:

   display (Name_of_the_DataFrame)

sebagai contoh:

  tampilan (df)

0

Untuk menampilkan kerangka data yang ada dalam daftar:

display(*dfs)
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.