jupyter中的交互式表

itables的Python项目详细描述


pandas数据帧和序列作为jupyter中的交互表

PypiBuild Statuscodecov.ioBinder

在笔记本和它们的HTML表示中,只需一个额外的导入即可将Pandas数据帧和系列转换为交互式datatables

importitables.interactiveimportworld_bank_dataaswbdf=wb.get_countries()df

你没看到上面的桌子吗?请打开此笔记本的HTML export,或在Binder上运行此自述文件!

快速启动

使用安装软件包

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方法中或在选项中使用^{} argument完整显示表:

show(df.head(),paging=False)

滚动

如果您希望用vertical scroll替换分页,请使用例如

show(df,scrollY="200px",scrollCollapse=True,paging=False)

表格和单元格样式

使用show函数的classes参数或通过更改itables.options.classes来选择表的外观。有关可能值的列表,请参见datatables' default stylethe 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小部件,请查看

  • QGrid按量子数
  • IPyaggrid作者:路易斯·莱森和奥利维尔·博迪尔斯
  • IPySheet作者:quantstack。

如果您正在寻找适合dash应用程序的表组件,请参见datatable by Dash

贡献

我认为使用相同的表组件r jupyter和Dash。如果您对基于现有的JavaScript库绘制新的表组件感兴趣,请^ ^ a29 }。

另外,如果您碰巧喜欢另一个javascript表库(比如ag-grid),并且希望在itables中看到它受支持,请打开问题或pr,并让我们知道使用库在jupyter中显示表的最小代码是什么。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何计算以下代码片段的复杂性?   java他们怎样才能使“瓶子”和“瓶子”这样的词被认为是同一个词呢?这就是我目前所拥有的   用于在不同编码之间转换字符的Java库   Java为什么我输入的每个输入都会忽略我的While循环?   (Java)通过socket发送和映像时出错:Java。木卫一。StreamCorruptedException:无效类型代码:3B   java错误:在camel XML文件中,解组对象是不受支持的类型   springboot+kafka应用程序中的java错误管理   java如何从地图中的值中获取一组值?   二维向量Java   java如果我从未使用ThreadSafeClientConnManager调用closeExpiredConnections,会发生什么   if语句如何在if-else循环中对同一数据使用多个条件?java/安卓   java我如何在安卓中放慢速度?   javaee:需要更好的部署系统   如何使用java将XML文件加载到Oracle18c上的XMLType列   用于连接两个表的java Hibernate查询   在更新数据库之前,java JSP需要使用用户给定的值检查数据库中的值   java无法使用Jersey从rest服务获取数据字段