熊猫计算三角时间

时间:2020-02-12 21:26:25

标签: python pandas data-science

这里有一些代码将生成一些随机数据,并在图表上加上代表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()

输出:(减去图表的突出显示部分)

enter image description here

我试图找出是否有可能计算从绿色到红线到达(突出显示的黄色)数据所花费的时间。

我可以手动输入数据:

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%返回。.但是我可能不得不考虑如何完成了。

1 个答案:

答案 0 :(得分:0)

minStart = df.loc[df['Random_Number'] < df.quantile(0.3)[0]].index[0]

maxStart = df.loc[df['Random_Number'] > df.quantile(0.90)[0]].index[0]

hours = maxStart - minStart
hours

df.quantile不返回数字,因此您需要获取它的第一个条目

相关问题