You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测DataFrame中股票聚类的时间变化及统计最大/最小变化次数

检测股票聚类变化及统计变化次数的方法

假设你使用Pandas处理聚类结果DataFrame(行是股票代码symbol,列是按时间排序的日期,值为聚类标签),以下是具体实现步骤:

1. 确保日期列按时间排序

如果你的日期列未按时间顺序排列,先执行排序:

import pandas as pd

# 假设聚类结果存储在cluster_df中
cluster_df = cluster_df.sort_index(axis=1)

2. 计算每只股票的聚类变化次数

对每一行(单只股票)计算相邻日期的聚类标签差异,统计标签发生变化的次数:

# 计算相邻日期的聚类标签差异,统计非零差异的数量(即变化次数)
change_counts = cluster_df.diff(axis=1).ne(0).sum(axis=1)
  • diff(axis=1):按行计算相邻列(日期)的标签差值,第一列会生成NaN
  • ne(0):筛选出差值不为0的位置(即聚类发生变化的日期点)
  • sum(axis=1):对每一行求和,得到该股票的总变化次数

3. 筛选聚类发生变化的股票

直接提取变化次数大于0的股票代码:

changed_stocks = change_counts[change_counts > 0].index.tolist()
print("聚类发生变化的股票:", changed_stocks)

4. 统计变化次数的最大值和最小值

对变化次数序列直接调用聚合函数:

max_change = change_counts.max()
min_change = change_counts.min()

print(f"所有股票聚类变化次数的最大值:{max_change}")
print(f"所有股票聚类变化次数的最小值:{min_change}")

示例验证(基于你提供的样本数据)

以AAPL为例,其聚类标签序列为:3→4→1→4→0→0→0→1→2→3→1→1,相邻对比共11次,其中8次标签发生变化,对应change_counts['AAPL'] = 8,与代码计算结果一致。

内容的提问来源于stack exchange,提问作者Ryan Shuell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 15:47:34