python - pandas.Series:如何获得下一个值的速率
问题描述
关于熊猫,我想知道如何获得下一个值的比率。以下系列是一个示例。
import pandas as pd
s = pd.Series([1,2,1,1,1,3])
>>> s
0 1
1 2
2 1
3 1
4 1
5 3
# What I wanna get are below rates.
# 1 to 2 : 1/5(0.2)
# 2 to 1 : 1/5(0.2)
# 1 to 1 : 2/5(0.4)
# 1 to 3 : 1/5(0.2)
抱歉描述不好,但有谁知道如何做到这一点?
解决方案
一种可能的解决方案是strides、聚合计数GroupBy.size
和除以长度DataFrame
:
import pandas as pd
import numpy as np
s = pd.Series([1,2,1,1,1,3])
def rolling_window(a, window):
shape = a.shape[:-1] + (a.shape[-1] - window + 1, window)
strides = a.strides + (a.strides[-1],)
return np.lib.stride_tricks.as_strided(a, shape=shape, strides=strides)
df1 = pd.DataFrame(rolling_window(s.values, 2), columns=['from','to'])
df1 = df1.groupby(['from','to'], sort=False).size().div(len(df1)).reset_index(name='rate')
print (df1)
from to rate
0 1 2 0.2
1 2 1 0.2
2 1 1 0.4
3 1 3 0.2
推荐阅读
- abap - 如何从第二张表的薪水列中的第一张表中查找具有第二高和第三低薪水的员工姓名,而无需在 ABAP 中进行排序
- java - 使用 WHERE IN SQL 子句将字符串值从单个值拆分为多个值以获取数据
- azure - 连接运行状况代理 - 防火墙规则(到 Azure 服务终结点的出站连接)
- angular - 我如何解决角度反应形式的错误
- angular - 将 db 中的选定值放入 mat 选项 angular 12
- android - Android Studio 显示 Unresolved reference: Gson 即使我在 gradle 中有它并且它可以工作
- javascript - 如何获取和设置时间输入值?
- algorithm - 尽可能短地遍历无向图的所有顶点?
- django - Django 搜索功能:表单返回无
- c# - 除非从文件夹运行,否则 .NET SDK 不会显示