jupyter中的交互式表
itables的Python项目详细描述
pandas数据帧和序列作为jupyter中的交互表
在笔记本和它们的HTML表示中,只需一个额外的导入即可将Pandas数据帧和系列转换为交互式datatables:
importitables.interactiveimportworld_bank_dataaswbdf=wb.get_countries()df
你没看到上面的桌子吗?请打开此笔记本的HTML export,或在上运行此自述文件!
快速启动
使用安装软件包
pip install itables
使用
importitables.interactive
只显示一个序列或数据帧作为带show
函数的交互式表。
fromitablesimportshowx=wb.get_series("SP.POP.TOTL",mrv=1,simplify_index=True)show(x)
高级用法
分页
每页有多少行
selecthow many entries应该立即出现在表中,并带有show
函数的lengthMenu
参数,或者通过更改itables.options.default
:
importitables.optionsasoptopt.lengthMenu=[2,5,10,20,50,100,200,500]df
完整显示表格
在show
方法中或在选项中使用^{
show(df.head(),paging=False)
滚动
如果您希望用vertical scroll替换分页,请使用例如
show(df,scrollY="200px",scrollCollapse=True,paging=False)
表格和单元格样式
使用show
函数的classes
参数或通过更改itables.options.classes
来选择表的外观。有关可能值的列表,请参见datatables' default style和the style examples。
opt.classes=["display","nowrap"]df
opt.classes=["display","cell-border"]df
浮点精度
浮点数使用pd.options.display.float_format
舍入。请根据您的喜好更改格式。
importmathimportpandasaspdwithpd.option_context("display.float_format","{:,.2f}".format):show(pd.Series([i*math.piforiinrange(1,6)]))
您也可以选择将浮点数转换为字符串:
withpd.option_context("display.float_format","${:,.2f}".format):show(pd.Series([i*math.piforiinrange(1,6)]))
高级单元格格式
datatables允许根据单元格内容设置单元格或行的样式,可以使用createdRow回调或createdCell回调。例如,如果我们希望带负数的单元格以红色显示,可以使用columnDefs.createdCell
参数,如下所示:
show(pd.DataFrame([[-1,2,-3,4,-5],[6,-7,8,-9,10]],columns=list("abcde")),columnDefs=[{"targets":"_all","createdCell":"""function (td, cellData, rowData, row, col) { if ( cellData < 0 ) { $(td).css('color', 'red') } }""",}],)
列宽
Fixme:这似乎不起作用…
show(df,columnsDefs=[{"width":"200px","target":3}])
但是在某些情况下-一个包含许多列的表,比如下面的一个,我们可以使用width
参数…
show(x.to_frame().T,columnDefs=[{"width":"80px","targets":"_all"}])
单元格中的HTML
importpandasaspdshow(pd.Series(["<b>bold</b>","<i>italic</i>",'<a href="https://github.com/mwouts/itables">link</a>',],name="HTML",),paging=False,)
选择行
目前尚未实施。可以在稍后阶段使用数据表的select扩展名提供。
“复制”、“csv”、“pdf”和“excel”按钮
目前尚未实施。由于datatable的buttons扩展,可以在稍后阶段提供。
大桌子支架
itables
不会显示大于maxBytes
(默认等于1MB)的数据帧。使用df.head()
截断数据帧,或将maxBytes
参数或选项设置为其他值以显示数据帧。或者用maxBytes=0
取消限制。
注意,数据表支持server-side processing。在稍后阶段,我们可能会使用此功能实现对较大表的支持。
df=wb.get_indicators()df.values.nbytes
opt.maxBytes=1000000df
参考资料
数据表
- datatables是jquery javascript库的插件。它有一个很大的documentation,和一个很大的examples集合。
- r包DT使用datatables.net作为r笔记本和闪亮应用程序的底层库。除了库的标准功能(显示、排序、筛选和行选择)之外,rstudio似乎还实现了cell edition。
- 关于如何在jupyter中使用数据表,marek cermak有一个有趣的tutorial。他还出版了jupyter-datatables,重点是数字数据和分布图。
备选方案
itables不是jupyter小部件,这意味着它不允许您编辑数据帧的内容。 如果您正在查找jupyter小部件,请查看
如果您正在寻找适合dash应用程序的表组件,请参见datatable by Dash。
贡献
我认为使用相同的表组件r jupyter和Dash。如果您对基于现有的JavaScript库绘制新的表组件感兴趣,请^ ^ a29 }。
另外,如果您碰巧喜欢另一个javascript表库(比如ag-grid),并且希望在itables
中看到它受支持,请打开问题或pr,并让我们知道使用库在jupyter中显示表的最小代码是什么。