python - python中的变化点检测

标签 python python-2.7 pandas

我有一个 pandas DataFrame,其中一列包含以下元素:

[2,2.5,3,2,2.6,10,10.3,10,10.1,10.3,10], 

是否有一个 python 函数可以检测到该列表中从 2.6 到 10 的突然变化?我读了一点点R可以做到这一点。 python中有类似的功能吗?

最佳答案

IIUC 你可以使用 pct_change为了找到邻居之间的差异,然后与您的限制(无论它是什么)进行比较:

s = pd.Series([2,2.5,3,2,2.6,10,10.3,10,10.1,10.3,10])

In [105]: s.pct_change()
Out[105]:
0          NaN
1     0.250000
2     0.200000
3    -0.333333
4     0.300000
5     2.846154
6     0.030000
7    -0.029126
8     0.010000
9     0.019802
10   -0.029126
dtype: float64

In [107]: s[s.pct_change() > 1]
Out[107]:
5    10
dtype: float64

In [117]: s[s.pct_change() > 1].index.tolist()
Out[117]: [5]    

关于python - python中的变化点检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34992672/

相关文章:

python - 如何理解负 k 索引的 python 切片?

python - 在 Pandas 中使用合并列和索引

python - Hadoop 流在 map/reduce 操作中崩溃

python - 为从文件中读取的行分配名称

python - 为什么 python 中的空函数调用对于动态编译的 python 代码要慢 15% 左右

python - 使用 Pandas 读取数据(.dat 文件)

python - 如何在具有两个 DataFrame 的 Pandas 中使用替换?

python - 获得一组线性方程的非平凡解

python - 如何使用 split() 而不是 re.findall 进行相同的字符串分割

python - 将 Pandas 数据框转换为包含索引、数据和列的列表列表