Skip to main content

基于数学阶跃函数建模和操作的数据分析包。与 pandas 高度一致。

项目描述

楼梯标志

staircase 包可以通过数学阶跃函数进行数据分析。阶跃函数可用于表示连续的时间序列 - 考虑状态随时间的变化、队列大小随时间的变化、利用率随时间的变化、成功率随时间的变化等。

该软件包建立在后者的基础上,numpypandas在风格上与后者进行了有意的对齐,以便无缝集成到pandas 生态系统中。

staircase 包使将原始时态数据转换为时间序列变得容易且可读。此外,除了用于单变量分析聚合和与日期时间兼容的功能外,还有丰富的算术运算关系运算逻辑运算统计运算,可以进行分析。

2022 年新增功能: staircase 现在提供对pandas 扩展数组Series 访问器的支持。

一个例子

在此示例中,我们考虑与 2021 年 10 月网站浏览量相对应的数据。除了三个国家代码(澳大利亚、英国、美国)之一之外,还记录了每个会话的开始和结束时间。这些时间记录pandas.Timestamp为 10 月以外的任何时间,记录为NAT

>>> data
                       start                   end   country
0                        NaT   2021-10-01 00:00:50        AU
1                        NaT   2021-10-01 00:07:45        AU
2                        NaT   2021-10-01 00:05:58        AU
3                        NaT   2021-10-01 00:08:48        AU
4                        NaT   2021-10-01 00:05:26        AU
...                      ...                   ...       ...
425728   2021-10-31 23:57:16                   NaT        US
425729   2021-10-31 23:57:25                   NaT        US
425730   2021-10-31 23:58:59                   NaT        US
425731   2021-10-31 23:59:45                   NaT        US
425732   2021-10-31 23:59:59                   NaT        US

请注意,随着时间的推移查看站点的用户数量可以建模为阶跃函数。该函数的值在用户每次到达站点时增加 1,并且在用户每次离开站点时减少 1。这个阶梯函数可以被认为是三个阶梯函数的总和:AU 用户 + UK 用户 + US 用户。例如,为 AU 用户创建阶梯函数很简单。为了实现它,我们使用了Stairs类,它代表了一个阶梯函数:

>>> import staircase as sc

>>> views_AU = sc.Stairs(data.query("country == 'AU'"), "start", "end")
>>> views_AU
<staircase.Stairs, id=1609972469384>

我们可以使用 plot 函数可视化该函数:

>>> views_AU.plot()

AU 视图示例

pandas.Series我们可以为每个国家创建一个阶梯函数,而不是为每个国家创建一个单独的变量。我们甚至可以给这个系列一个“楼梯”类型。

>>> october = (pd.Timestamp("2021-10"), pd.Timestamp("2021-11"))
>>> series_stepfunctions = (
...     data.groupby("country")
...     .apply(sc.Stairs, "start", "end")
...     .apply(sc.Stairs.clip, october)  # set step functions to be undefined outside of October
...     .astype("Stairs")
... )
>>> series_stepfunctions
country
AU    <staircase.Stairs, id=2516367680328>
UK    <staircase.Stairs, id=2516362550664>
US    <staircase.Stairs, id=2516363585928>
dtype: Stairs

绘图后端staircasematplotlib.

>>> import matplotlib.pyplot as plt
>>> _, ax = plt.subplots(figsize=(15,4))
>>> series_stepfunctions.sc.plot(ax, alpha=0.7)
>>> ax.legend()

所有视图示例

现在绘制阶跃函数很有用,但真正有趣的是当我们超越这一点时:

楼梯分析示例

安装

可以从 PyPI 安装楼梯:

python -m pip install staircase

或者也可以使用 conda:

conda install -c conda-forge staircase

文档

可以在staircase.dev上找到使用楼梯的完整指南

贡献

可以通过多种方式做出贡献——首先是使用楼梯并提供反馈

可以通过Github 问题跟踪器提交错误报告、功能请求和想法。

此外,错误修复。代码和文档的增强和改进也值得赞赏,可以通过拉取请求来完成。看看当前的问题,如果有你想要处理的问题,请对此发表评论。

请参阅此初学者的贡献指南Pandas 的贡献指南,以了解有关该过程的更多信息。

版本控制

我们使用SemVer进行版本控制。有关可用版本,请参阅此存储库上的标签。强烈建议使用 staircase 2.*,以获得性能和附加功能。

执照

该项目在 MIT 许可下获得许可 - 请参阅LICENSE文件了解详细信息

致谢

楼梯的种子在猎人谷煤炭链协调员开始发展,在那里它在分析模拟数据方面得到了强大的应用。感谢您的支持!

项目详情