2024-04-25 17:45:30 发布
网友
我有一个多项式特征的时间序列数据多次超过上下限
我想数一数超过上限和下限的次数。在
例如,我的上限是35°C,下限是-45°C
如何编写一个函数来计算数据超过上下限阈值的次数以及数据在范围内的时间?在
有没有一种Python式的方法来解决这个问题?在
我认为需要^{}作为布尔掩码,将其~和{}的True反转:
~
True
print ((~df['data'].between(-45, 35)).sum())
样本:
详细信息:
print (df['data'].between(-45, 35)) 0 False 1 True 2 True 3 True 4 False Name: data, dtype: bool print (~df['data'].between(-45, 35)) 0 True 1 False 2 False 3 False 4 True Name: data, dtype: bool
如果数据可以包含高于、低于或介于阈值之间的连续值的“运行”,并且您希望计数运行而不是单个数据点,则可以标记数据、折叠连续标签、过滤和计数:
In [64]: df = pd.DataFrame({'Temp': [50, 47.7, 45, 0, 0, -1, -1, -2, -10, -30, ...: -45, -45, -46, -20, -1, 2, 2, 10, 10, 20, ...: 35.5, 35, 36, 20, 0, -10, -45.1, -50]})
创建标签:
然后使用^{}到{a2}:
In [69]: df[df['Category'].shift() != df['Category']] Out[69]: Temp Category 0 50.0 1 3 0.0 0 10 -45.0 -1 13 -20.0 0 20 35.5 1 23 20.0 0 26 -45.1 -1
从这里可以很容易地根据类别进行筛选和计数:
In [70]: collapsed = df[df['Category'].shift() != df['Category']] In [71]: (collapsed['Category'] != 0).sum() Out[71]: 4 In [72]: (collapsed['Category'] == 0).sum() Out[72]: 3
^{}也可能有用:
In [73]: collapsed['Category'].value_counts() Out[73]: 0 3 -1 2 1 2 Name: Category, dtype: int64
How do I write a function which ... the time when the data was in range?
如果您有时间序列数据,很容易再次移动折叠的数据以计算运行持续时间(此处使用整数索引演示):
In [74]: fake_time_series = collapsed.reset_index() In [75]: fake_time_series Out[75]: index Temp Category 0 0 50.0 1 1 3 0.0 0 2 10 -45.0 -1 3 13 -20.0 0 4 20 35.5 1 5 23 20.0 0 6 26 -45.1 -1 In [76]: fake_time_series.shift(-1)['index'] - fake_time_series['index'] Out[76]: 0 3.0 1 7.0 2 3.0 3 7.0 4 3.0 5 3.0 6 NaN Name: index, dtype: float64
我认为需要^{} 作为布尔掩码,将其}的
~
和{True
反转:样本:
^{pr2}$详细信息:
如果数据可以包含高于、低于或介于阈值之间的连续值的“运行”,并且您希望计数运行而不是单个数据点,则可以标记数据、折叠连续标签、过滤和计数:
创建标签:
^{pr2}$然后使用^{} 到{a2}:
从这里可以很容易地根据类别进行筛选和计数:
^{} 也可能有用:
如果您有时间序列数据,很容易再次移动折叠的数据以计算运行持续时间(此处使用整数索引演示):
相关问题 更多 >
编程相关推荐