Python中如何分析序列数据?求大佬指点

我有一个超级长的 list,正常情况下,里面包含的数字是这样的[3,1,0,2,3,1,0,2。。。。] 总之就是一直循环 3102 就对了。注意 list 第一个数字不一定是 3 呢,可以是 3、1、0、2 四个数中的一个。
但是有 bug 修改了这个 list,我想分析出,如果以一个完整或者不完整的一个循环(完整的循环就是 3、1、0、2 )为一步,这个被修改过的 list 里有多少步是连续不完整的。(完整的定义就是有连续的 3、1、0、2 四个数字)
Python中如何分析序列数据?求大佬指点

10 回复

抛砖:
’’.join(map(str,your_list)).split(‘3102’)


Python里分析序列数据,最直接的就是用pandas。你先把数据读到DataFrame里,然后就能用各种方法看它的统计特征和变化趋势了。

比如,假设你有个时间序列数据,可以这样快速上手:

import pandas as pd
import numpy as np

# 创建示例时间序列数据
dates = pd.date_range('2023-01-01', periods=100, freq='D')
data = pd.DataFrame({
    'date': dates,
    'value': np.random.randn(100).cumsum() + 50  # 模拟随机游走
})
data.set_index('date', inplace=True)

# 基本统计信息
print("基本统计:")
print(data.describe())

# 滚动窗口分析(比如7天移动平均)
data['rolling_mean'] = data['value'].rolling(window=7).mean()

# 重采样(比如按周汇总)
weekly_data = data['value'].resample('W').mean()
print("\n周平均值:")
print(weekly_data.head())

# 可视化(需要matplotlib)
import matplotlib.pyplot as plt
fig, axes = plt.subplots(2, 1, figsize=(10, 6))
data['value'].plot(ax=axes[0], title='原始序列')
data['rolling_mean'].plot(ax=axes[1], title='7天移动平均')
plt.tight_layout()
plt.show()

关键操作就这几点:用describe()看统计概况,rolling()做滑动窗口分析,resample()进行重采样。如果数据有季节性,还可以用statsmodels库做更专业的时序分解。

总结:pandas配合简单统计方法就能解决大部分序列分析需求。

楼主描述问题不是太清楚,让人听了云里雾里的。
思路很简单,把 list 按 4 个元素分割 然后 用每个子 list 做 set 和 set((3,1,0,2))比较
if (set((3,1,0,2)) - set([2,0,1,3]))
或者 if len(set((3,1,0,2)) & set([2,0,1,3]))==4 就可以判断出来了。

骚断腿

“不完整” 可以任意长吗?如果长度不定,还存在确定的步数吗?

这么做有 bug

感觉问题没有良好定义

不过要分析直接遍历就行了吧?

用 cur 标记当前应该是什么值

用 startIndex 标记计算起始 index

用 curIndex 标记当前计算的 index

然后开始遍历, 直到结束

cur = 3, startIndex=0, curIndex=0

如果当前值和 cur 不等, 那么就是不符合的值, 记录 startIndex 和 curIndex, 标记这一段都是不符合的, cur 重置回 3

如果值相等并且不是 2, 那么 curIndex++, 同时 cur 往后走一位

如果值相等是 2, 那么 startIndex 和 curIndex 是满足条件的序列, 同时 ++ 开始新的判定, 并且 cur 重置回 3

#5 原文:“hjq98765 这么做有 bug ”
======
回复:嗯,忘了 split 里面是每个字符单独视为分隔符,不是整体作为分隔符……

有个小毛病, 如果相等而且是 2 应该是 curIndex++ 并且 startIndex = curIndex

1 楼++
import re
re.split(‘3102’, ‘’.join(map(str,your_list)))
然后去数连续非 ‘’ 元素的个数。方法很多~

回到顶部