用于分布式数据减少的可组合直方图原语。
项目描述
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 链接 |
---|---|
文档
请参阅 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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 435edbcec141a28ea39219a006d6ac098e7f55e6f68becf9e757cbab8a33b51b |
|
MD5 | f3492c015347992784245b4eaf5aefee |
|
BLAKE2b-256 | ba777a314e863d9bdf8cbe3ff2b9a9d063c4f990c74f7eb5eb85f8a03434ba2d |