跳转到主要内容

用于分布式数据减少的可组合直方图原语。

项目描述

histogrammar 是一个用于创建直方图的Python包。histogrammar 具有多种直方图类型,支持数值和分类特征,并与Numpy数组以及Pandas和Spark数据框一起工作。一旦直方图填充完成,就可以轻松地绘制它、以JSON格式存储它(并检索它),或将它转换为Numpy数组进行进一步分析。

在其核心,histogrammar 是一套旨在用于并行处理的数据聚合原语。在最简单的情况下,您可以使用它来计算直方图,但原语的一般性允许做更多的事情。

Matplotlib、Bokeh 和 PyROOT 等工具可以通过单次方法调用绘制多种常见的直方图类型。如果安装了 Numpy 或 Pandas,则可以通过 Numpy 命令将直方图和其他聚合器从数组中填充,速度比 Python 循环快十到一百倍。如果可用 PyROOT,则可以通过 JIT 编译专门的 C++ 填充器,将直方图和其他聚合器从 ROOT TTrees 中填充,速度快数百倍。直方图和其他聚合器还可以转换为 CUDA 代码,以便在 GPU 工作流程中使用。如果可用 PyCUDA,还可以通过 JIT 编译 CUDA 代码从 Numpy 数组中填充。

此 Python 实现的 histogrammar 已经过测试,以保证与 Scala 实现的兼容性。

最新 Python 版本:v1.0.33(2022 年 12 月)。

公告

变更

请在此处查看变更日志 https://github.com/histogrammar/histogrammar-python/blob/master/CHANGES.rst

Spark 3.0

Spark 3.0 基于 Scala 2.12,请确保选择正确的 histogrammar jar 文件。

spark = SparkSession.builder.config("spark.jars.packages", "io.github.histogrammar:histogrammar_2.12:1.0.20,io.github.histogrammar:histogrammar-sparksql_2.12:1.0.20").getOrCreate()

对于 Spark 2.X,与 Scala 2.11 编译的,在上面的字符串中只需将“2.12”替换为“2.11”。

2021 年 2 月

示例笔记本

教程

Colab 链接

基础教程

Open in Colab

详细示例(包括配置、Apache Spark 等)

Open in Colab

练习

Open in Colab

文档

请参阅 histogrammar-docs 以了解关于 histogrammar 的完整介绍。(虽然有点过时,但仍然很好。)在那里您还可以找到关于 histogrammar 的 Scala 实现的文档。

查看

historgrammar 库需要 Python 3.6+ 并且对 pip 友好。要开始,只需执行

$ pip install histogrammar

或从我们的 GitHub 仓库检查代码

$ git clone https://github.com/histogrammar/histogrammar-python
$ pip install -e histogrammar-python

其中在这个例子中代码以编辑模式安装(选项 -e)。

现在您可以使用以下方式在 Python 中使用该包

import histogrammar

恭喜,您现在可以使用 histogrammar 库了!

快速运行

作为一个快速示例,您可以这样做

import pandas as pd
import histogrammar as hg
from histogrammar import resources

# open synthetic data
df = pd.read_csv(resources.data('test.csv.gz'), parse_dates=['date'])
df.head()

# create a histogram, tell it to look for column 'age'
# fill the histogram with column 'age' and plot it
hist = hg.Histogram(num=100, low=0, high=100, quantity='age')
hist.fill.numpy(df)
hist.plot.matplotlib()

# generate histograms of all features in the dataframe using automatic binning
# (importing histogrammar automatically adds this functionality to a pandas or spark dataframe)
hists = df.hg_make_histograms()
print(hists.keys())

# multi-dimensional histograms are also supported. e.g. features longitude vs latitude
hists = df.hg_make_histograms(features=['longitude:latitude'])
ll = hists['longitude:latitude']
ll.plot.matplotlib()

# store histogram and retrieve it again
ll.toJsonFile('longitude_latitude.json')
ll2 = hg.Factory().fromJsonFile('longitude_latitude.json')

这些示例也适用于 Spark 数据帧(sdf)

from pyspark.sql.functions import col
hist = hg.Histogram(num=100, low=0, high=100, quantity=col('age'))
hist.fill.sparksql(sdf)

有关更多示例,请参阅示例笔记本和教程。

项目贡献者

此包最初由 DIANA-HEP 编写,现在由志愿者维护。

联系和支持

请注意,histogrammar 仅提供最努力的支持。

许可

histogrammar 完全免费,开源,并使用 Apache-2.0 许可证 许可。

项目详情


下载文件

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

源分发

histogrammar-1.0.33.tar.gz (355.4 kB 查看哈希值)

上传时间

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面