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

如何用Python统计S连续序列的长度及出现频次(按长度降序)

解决方案代码

以下是统计所有连续S序列长度及频率的Python代码,基于Pandas实现,效率更高且逻辑清晰:

import pandas as pd

# 读取CSV数据
df = pd.read_csv('C:\\teste\\pergunta.csv')

# 生成连续相同响应的分组ID
df['group_id'] = df['Responses'].ne(df['Responses'].shift()).cumsum()

# 筛选所有S的分组,计算每个连续序列的长度
s_sequence_lengths = df[df['Responses'] == 'S'].groupby('group_id').size()

# 统计各长度的出现频率,并重命名列
frequency_stats = s_sequence_lengths.value_counts().reset_index()
frequency_stats.columns = ['Sequence', 'Frequency']

# 按序列长度从长到短排序
frequency_stats = frequency_stats.sort_values('Sequence', ascending=False)

# 将频率格式化为指定的"X times"形式
frequency_stats['Frequency'] = frequency_stats['Frequency'].apply(lambda x: f"{x} times")

# 输出Markdown格式的结果表格
print(frequency_stats.to_markdown(index=False))

代码说明

  • 分组连续序列:通过ne(不等于)和shift(上移一行)识别响应值的变化点,再用cumsum生成唯一分组ID,确保同一连续序列的行拥有相同ID。
  • 计算序列长度:筛选出所有值为S的行,按分组ID聚合计算每组的行数,即连续S序列的长度。
  • 统计频率并排序:用value_counts统计各长度的出现次数,再按长度降序排序,最后格式化频率列的显示格式。

示例输出

执行代码后会输出如下格式的Markdown表格:

SequenceFrequency
82 times
71 times
63 times
51 times
4x times
3x times
2x times

内容的提问来源于stack exchange,提问作者Alexsander Santos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 14:52:20