跳转到主要内容

数据可视化和报告构建

项目描述

CircleCI PyPI ReadTheDocs Coverage Status

PyBloqs是一个灵活的框架,用于数据可视化和报告的自动创建。

pybloqs in use in ipython notebook

在ipython笔记本中使用pybloqs

它与Pandasmatplotlibhighcharts一起工作。PyBloqs创建包含文本、表格(来自Pandas DataFrame)、图表(matplotlib或highcharts)或图像的原子块。所有块都可以使用CSS进行样式设置。每个块都可以单独创建和显示,以实现快速开发周转。可以将块列表堆叠在一起形成报告。报告可以以HTML格式在浏览器中显示或以多种格式(包括HTML、PDF、SVG、PNG)导出。

快速入门

安装PyBloqs

要执行不包含HighCharts支持的最低安装,请运行

pip install pybloqs

或者当以开发模式安装时

python setup.py develop

这将允许您运行下面的示例代码。

外部依赖

为了实现全部功能,PyBloqs需要以下第三方程序和库。对于某些库,在安装时必须指定文件位置

pip install --install-option="INSTALL OPTIONS" git+https://github.com/manahl/pybloqs.git

例如:

pip install --install-option="--highcharts=~/node_modules/highcharts/,~/node_modules/highcharts-heatmap/" git+https://github.com/manahl/pybloqs.git

wkhtmltopdf未包含在PyBloqs中。您需要从您的发行版的仓库(Linux)中安装它,或者从项目页面(https://wkhtmltopdf.org)下载。wkhtmltopdf和wkhtmltoimage二进制文件用于除HTML之外的其他文件输出。PyBloqs将在系统路径上搜索这些二进制文件。如果您想使用本地二进制文件的副本,请使用以下选项进行安装

--wkhtmltopdf=/path/to/binary

在开发模式下安装时,您可以显式加载wkhtmltopdf

python setup.py load_wkhtmltopdf --wkhtmltopdf=/path/to/binary
  • Node.js和comander以及puppeteer(可选;用于具有'chrome_headless'后端的PDF输出)。请确保它们是全局可用的。在开发模式下,您可以在主PyBloqs目录中运行

    npm install

  • Bokeh(可选)。要安装Bokeh依赖项,您可以使用

    pip install pybloqs[bokeh]
  • Plotly(可选)。要安装Plotly依赖项,您可以使用

    pip install pybloqs[plotly]
  • HighCharts(可选;专有许可证,请参阅https://shop.highsoft.com/highcharts-t2

HighCharts未包含在PyBloqs中。要创建具有Highcharts图表的块,您需要单独下载HighCharts(例如,使用npm install highchartsnpm install highcharts-heatmap等),并提供您的highcharts安装路径。请确保您拥有HighCharts的正确许可证。为了实现完整功能,您将需要以下highcharts包:highcharts,highcharts-heatmap,highcharts-funnel,highcharts-exporting,highcharts-export-csv(此示例假定,npm安装文件到目录 ~/node_modules)。

--highcharts=~/node_modules/highcharts/,
~/node_modules/highcharts-heatmap/,~/node_modules/highcharts-funnel,~/node_modules/highcharts-exporting,
~/node_modules/highcharts-export-csv

在开发模式下安装时,您可以显式加载highcharts(此示例假定,npm安装文件到目录 ~/node_modules)

python setup.py load_highcharts --highcharts=~/node_modules/highcharts/,~/node_modules/highcharts-heatmap/,\
~/node_modules/highcharts-funnel,~/node_modules/highcharts-exporting,~/node_modules/highcharts-export-csv

使用PyBloqs

from pybloqs import Block, HStack, VStack
import pandas as pd
from matplotlib import pyplot as plt

text_block = Block('This is a text block', styles={'text-align':'center', 'color':'blue'})
text_block.show()

df = pd.DataFrame([[1., 2.],[3.,4.]], columns =['a', 'b'])
table_block = Block(df)
table_block.show()

plot_block = Block(plt.plot(df['a'], df['b']))
plot_block.show()

plot_and_table = HStack([plot_block, table_block])
report = VStack([text_block, plot_and_table])
report.show()
report.save('report.pdf')

配置

您可以在以yaml格式编写的文件 ~/.pybloqs.cfg 中指定每个用户的默认参数。此配置文件允许您设置针对smtplib.SMTP(https://docs.pythonlang.cn/2/library/smtplib.html#smtplib.SMTP)对象的调用设置和登录序列。以下适用于Google Gmail - 更多详细信息请参阅此处(https://support.google.com/a/answer/176600?hl=en

smtp_kwargs:
  host: smtp.gmail.com
  port: 587
smtp_pre_login_calls:
- !!python/tuple
  - ehlo
  - {}
- !!python/tuple
  - starttls
  - {}
- !!python/tuple
  - ehlo
  - {}
smtp_login:
  user: me@gmail.com
  password: a_secret
public_dir: /tmp
tmp_html_dir: /tmp
user_email_address: me@gmail.com

文档

请参阅详细文档

要求

PyBloqs与以下内容兼容

  • matplotlib

  • Pandas

  • html5lib

  • lxml

  • jinja2

  • markdown

  • beautifulsoup4

  • docutils

鸣谢

PyBloqs自2013年以来一直在Man AHL积极开发。

原始概念和实现: Tom Farnbauer

贡献者

欢迎贡献!

许可证

PyBloqs根据GNU LGPL v2.1授权。许可证副本包含在LICENSE

变更日志

1.0.0 (2017-04-07)

  • 首次公开发布

1.0.1 (2017-04-13)

  • 与pypi和ReadTheDocs集成。

  • 在Mac和Windows上安装。

1.0.2 (2017-04-26)

  • 元数据和Python版本徽章。

  • Python 3兼容性更改,第1部分。

  • 使用Coveralls安装。

1.0.3 (2017-04-26)

  • 错误修复:修正了urlparse的导入,修复了Block.show()。

1.1.0 (2017-05-10)

  • jQuery DataTables支持。

  • HTML锚点。

  • 错误修复:HTML-body的宽度不再硬编码。

1.1.1 (2017-05-10)

  • 错误修复:包括DataTables CSS的静态数据。

1.1.2 (2017-06-2)

  • 错误修复:Matplotlib图象的大小不再截断为整数。

  • 在CI设置中更新了wkhtmltopdf的下载路径。

1.1.3 (2017-06-6)

  • 错误修复:show()中用户主目录的展开。

  • 修复错误:允许更新对Block()的默认类型处理的灵活定义。

1.1.4 (2017-06-22)

  • 修复错误:在应用行或列上的操作符(例如在总计行中),将NaN替换为零。

1.1.5 (2017-08-22)

  • 修复错误:多索引格式化器现在可以处理具有非唯一多索引的DataFrame。

  • 修复错误:ReadTheDocs自动文档构建已修复。

1.1.6 (2017-08-23)

  • 修复错误:在HTML输出中设置Unicode元标签,并使Unicode字符串与Raw()块一起工作。

1.1.7 (2018-02-23)

  • 新增功能:更多SMTP选项。

  • 新增功能:UTF-8电子邮件MIME类型。

  • 新增功能:允许电子邮件的BCC。

1.1.8 (2018-03-26)

  • 修复错误:FmtHighlightText - 明确设置列标题非粗体。

  • 新增功能:将分页示例添加到文档中。

  • 修复错误:在所有格式化器上将apply_to_header_and_index传递给基类。

1.1.9 (2018-09-19)

  • 修复错误:在具有非唯一索引的table.html中的索引错误。

  • 修复错误:在测试中删除Pandas警告。

  • 删除WidePanel,更新ipynb。

  • 新增功能:为多索引级别添加指定不同文本颜色的支持。

  • 新增功能:添加一个上下文管理器以临时设置绘图格式/DPI。

1.2.0 (2018-11-21)

  • 新增功能:支持Python 3。

  • 新增功能:支持Bokeh绘图。

  • 新增功能:支持Plotly绘图。

  • 新增功能:允许使用不同的HTML转换后端。

  • 新增功能:添加Chrome-headless后端以进行HTML->PDF转换。

  • 已更新CircleCI配置到版本2。

1.2.1 (2018-11-23)

  • 修复错误:从顶层init.py中删除pybloqs.plot导入。

  • 修复错误:puppeteer.js现在包含在egg/wheel打包中。

1.2.2 (2018-11-27)

  • 修复错误:为wkhtmltox失败日志添加缺少的格式化器参数。

1.2.3 (2018-12-03)

  • 修复错误:确保python2字符串被正确编码。

1.2.4 (2019-03-27)

  • 修复错误:维护静态导入顺序。

1.2.5 (2019-06-25)

  • 修复错误:总计行格式化器不再为非数字列插入NaN。

1.2.6 (2019-07-17)

  • 新增功能:将kwargs传递给plotly绘图函数。

1.2.7 (2019-08-06)

  • 修复错误:在Jupyter中使用require.js为Plotly和Highcharts。

  • 将id_precision移动到用户配置。

  • 在所有地方使用tmp_html_dir。

1.2.8 (2020-08-25)

  • 修复错误:使用colgroup标签指定FmtHeader宽度。

  • 修复错误:如果父单元格未合并,则不合并多索引单元格。

  • 修复错误:将实际标题单元格内容传递给格式化器方法。

  • 新增功能:添加垂直合并多索引标签的能力。

1.2.9 (2020-12-02)

  • 修复错误:当索引为多索引时修复标题位置。

  • 修复错误:修复多索引样式。

  • 新增功能:添加垂直对齐格式化器。

1.2.10 (2020-12-03)

  • 修复错误:从Jinja表格模板中仅传递单行名称到格式化器。

1.2.11 (2020-12-03)

  • 修复错误:停止渲染多索引展平列。

1.2.12 (2022-01-18)

  • 新增功能:将CommonTableFormatter构建器添加到配置表格格式。

  • 修复错误:修复表格格式的条纹背景。

  • 弃用Python 2.7,将Python 3.6设置为最低要求版本。

1.2.13 (2022-01-25)

  • 修复错误:修复Plotly块输出在Jupyter的新版本中不再显示的问题。

  • 修复错误:将静态输出添加到Bokeh和Plotly以启用在电子邮件正文中发送。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定要选择哪一个,请了解更多关于安装包的信息。

源分布

pybloqs-1.2.13.tar.gz (138.9 kB 查看散列值)

上传时间 源代码

构建版本

pybloqs-1.2.13-py3.6.egg (132.7 kB 查看散列值)

上传时间 源代码

pybloqs-1.2.13-py2.py3-none-any.whl (142.7 kB 查看散列值)

上传时间 Python 2 Python 3

由以下支持