API 文档
本文档提供了Rust PyFunc库中所有公开函数的详细说明和使用示例。这些示例基于真实的Python运行结果生成。
文本处理函数
jaccard_similarity
计算两个句子之间的Jaccard相似度。 Jaccard相似度是两个集合交集大小除以并集大小,用于衡量两个句子的相似程度。 这里将每个句子视为单词集合,忽略单词出现的顺序和频率。
min_word_edit_distance
计算将一个句子转换为另一个句子所需的最少单词操作次数(添加/删除)。
参数
str1
- 源句子str2
- 目标句子
示例
```python from rust_pyfunc import min_word_edit_distance
示例1:添加一个单词
da = "We expect demand to increase" db = "We expect worldwide demand to increase" print(min_word_edit_distance(da, db)) # 输出: 1 (添加 "worldwide")
示例2:多次修改
dc = "We expect weakness in sales" print(min_word_edit_distance(da, dc)) # 输出: 6 (删除3个单词,添加3个单词) ```
vectorize_sentences_list
将多个句子转换为词频向量列表。 生成的所有向量长度相同,等于所有句子中不同单词的总数。 每个向量中的每个位置对应一个单词,值表示该单词在对应句子中出现的次数。
序列分析函数
find_follow_volume_sum_same_price_and_flag
计算每一行在其后time_window秒内具有相同flag、price和volume的行的volume总和。
find_max_range_product
在数组中找到一对索引(x, y),使得min(arr[x], arr[y]) * |x-y|的值最大。 这个函数可以用来找到数组中距离最远的两个元素,同时考虑它们的最小值。
统计分析函数
RollingFutureAccessor
用于在pandas DataFrame或Series上实现向后滚动窗口计算的访问器。
支持的统计量类型:
- mean: 计算后面窗口内的均值
- sum: 计算后面窗口内的总和
- max: 计算后面窗口内的最大值
- min: 计算后面窗口内的最小值
- std: 计算后面窗口内的标准差
- median: 计算后面窗口内的中位数
- count: 计算后面窗口内的数据点数量
- rank: 计算当前值在后面窗口内的分位数(0到1之间)
- skew: 计算后面窗口的偏度
- trend_time: 计算后面窗口内数据序列与时间序列的相关系数
- trend_oneton: 计算后面窗口内数据序列与1到n序列的相关系数(忽略时间间隔)
- last: 计算后面窗口内的最后一个值
注意:所有计算都不包括当前时间点的值,只考虑后面窗口内的值
使用方法:
import pandas as pd from rust_pyfunc import rolling_future
DataFrame示例
df = pd.DataFrame({ ... 'time': pd.date_range('2024-01-01', periods=5, freq='s'), ... 'value': [1, 2, 3, 4, 5] ... }) df.set_index('time', inplace=True) df.rolling_future('2s').mean() # 计算每个时间点之后2秒内的均值 df.rolling_future('2s').rank() # 计算每个值在后面2秒内的分位数
Series示例
s = pd.Series([1, 2, 3, 4, 5], ... index=pd.date_range('2024-01-01', periods=5, freq='s')) s.rolling_future('2s').mean() # 计算每个时间点之后2秒内的均值 s.rolling_future('2s').trend_time() # 计算后面2秒内的趋势
calculate_shannon_entropy_change_at_low
在价格创新低时计算香农熵变
参数: * exchtime: 交易时间数组 * order: 订单号数组 * volume: 成交量数组 * price: 价格数组 * window_seconds: 时间窗口大小(秒) * bottom_k: 如果提供,则只计算价格最低的k个点的熵变,默认为None(计算所有价格创新低点)
返回: * 香农熵变数组,只在价格创新低时有值,其他位置为NaN
mark_follow_groups
标记每一行在其后0.1秒内具有相同price和volume的行组。 对于同一个时间窗口内的相同交易组,标记相同的组号。 组号从1开始递增,每遇到一个新的交易组就分配一个新的组号。
mark_follow_groups_with_flag
标记每一行在其后time_window秒内具有相同flag、price和volume的行组。 对于同一个时间窗口内的相同交易组,标记相同的组号。 组号从1开始递增,每遇到一个新的交易组就分配一个新的组号。
rolling_cv
计算价格序列的滚动变异系数(CV)。
对于位置i,从数据范围[i-lookback+1, i]中每隔interval个点取样, 然后计算相邻样本之间的对数收益率(后面的价格除以前面的价格的对数), 最后计算这些收益率的变异系数(标准差除以均值)。
rolling_qcv
计算价格序列的滚动四分位变异系数(QCV)。
对于位置i,从数据范围[i-lookback+1, i]中每隔interval个点取样, 然后计算相邻样本之间的对数收益率(后面的价格除以前面的价格的对数), 最后计算这些收益率的四分位变异系数(四分位间距除以中位数的绝对值)。 这种方法对异常值和均值接近零的情况更加稳健。
rolling_volatility
计算价格序列的滚动波动率。
对于位置i,从数据范围[i-lookback+1, i]中每隔interval个点取样, 然后计算相邻样本之间的对数收益率(后面的价格除以前面的价格的对数), 最后计算这些收益率的标准差作为波动率。
transfer_entropy
计算从序列x到序列y的转移熵(Transfer Entropy)。 转移熵衡量了一个时间序列对另一个时间序列的影响程度,是一种非线性的因果关系度量。 具体来说,它测量了在已知x的过去k个状态的情况下,对y的当前状态预测能力的提升程度。