基于数学阶跃函数建模和操作的数据分析包。与 pandas 高度一致。
项目描述
staircase 包可以通过数学阶跃函数进行数据分析。阶跃函数可用于表示连续的时间序列 - 考虑状态随时间的变化、队列大小随时间的变化、利用率随时间的变化、成功率随时间的变化等。
该软件包建立在后者的基础上,numpy并pandas在风格上与后者进行了有意的对齐,以便无缝集成到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()
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
绘图后端staircase由matplotlib.
>>> 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
文档
贡献
可以通过多种方式做出贡献——首先是使用楼梯并提供反馈。
可以通过Github 问题跟踪器提交错误报告、功能请求和想法。
此外,错误修复。代码和文档的增强和改进也值得赞赏,可以通过拉取请求来完成。看看当前的问题,如果有你想要处理的问题,请对此发表评论。
请参阅此初学者的贡献指南或Pandas 的贡献指南,以了解有关该过程的更多信息。
版本控制
我们使用SemVer进行版本控制。有关可用版本,请参阅此存储库上的标签。强烈建议使用 staircase 2.*,以获得性能和附加功能。
执照
该项目在 MIT 许可下获得许可 - 请参阅LICENSE文件了解详细信息
致谢
楼梯的种子在猎人谷煤炭链协调员开始发展,在那里它在分析模拟数据方面得到了强大的应用。感谢您的支持!