这是一些将生成一些随机数据的代码,以及代表第 30 和第 90 百分位数的图表和线条。
import pandas as pd
import numpy as np
from numpy.random import randint
import matplotlib.pyplot as plt
%matplotlib inline
np.random.seed(10) # added for reproductibility
rng = pd.date_range('10/9/2018 00:00', periods=10, freq='1H')
df = pd.DataFrame({'Random_Number':randint(1, 100, 10)}, index=rng)
df.plot()
plt.axhline(df.quantile(0.3)[0], linestyle="--", color="g")
plt.axhline(df.quantile(0.90)[0], linestyle="--", color="r")
plt.show()
输出:(减去图表中突出显示的部分)
我试图弄清楚是否可以计算从绿色到红线到达(突出显示的黄色)数据所需的时间。
我可以手动输入数据:
minStart = df.loc[df['Random_Number'] < 18].index[0]
maxStart = df.loc[df['Random_Number'] > 90].index[0]
hours = maxStart - minStart
hours
这将输出:
Timedelta('0 days 05:00:00')
但如果我尝试使用:
minStart = df.loc[df['Random_Number'] < df.quantile(0.3)].index[0]
maxStart = df.loc[df['Random_Number'] > df.quantile(0.90)].index[0]
hours = maxStart - minStart
hours
这将抛出一个ValueError: Can only compare identically-labeled Series objects
有没有更好的发疯方法?理想情况下,创建某种算法可以计算从第 30 到第 90 个百分位然后从第 90 到第 30 位返回所需的增量时间,这将是很好的。但我可能需要考虑一下如何实现完成..
慕莱坞森
相关分类