如何使用numpy计算表上的第95个百分位数?

2024-04-27 03:45:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用numpy计算表中的第95个百分位和其他百分位。但是,我似乎不清楚执行此操作的函数,因为它需要一个数组才能工作:

>>> a = np.array([[10, 7, 4], [3, 2, 1]])
>>> a
array([[10,  7,  4],
       [ 3,  2,  1]])
>>> np.percentile(a, 50)

这将是阵列上第50百分位的方法。你知道吗

我的桌子是这样的:

Date        Hour    Month       Value
9/1/2019    0:00    SEPTEMBER   377.3333333
9/1/2019    0:00    SEPTEMBER   268.8
9/1/2019    0:00    SEPTEMBER   400.8
9/1/2019    0:00    SEPTEMBER   279.1304348
9/1/2019    0:05    SEPTEMBER   440
9/1/2019    0:05    SEPTEMBER   228
9/1/2019    0:05    SEPTEMBER   350
9/1/2019    0:05    SEPTEMBER   283.2
9/1/2019    0:10    SEPTEMBER   385.3333333
9/1/2019    0:10    SEPTEMBER   240
9/1/2019    0:10    SEPTEMBER   347.5
9/1/2019    0:10    SEPTEMBER   175.2
9/1/2019    0:15    SEPTEMBER   440
9/1/2019    0:15    SEPTEMBER   202.8
9/1/2019    0:15    SEPTEMBER   204
9/1/2019    0:15    SEPTEMBER   182.4
...
9/2/2019    0:00    SEPTEMBER   416
9/2/2019    0:00    SEPTEMBER   134.4
9/2/2019    0:00    SEPTEMBER   370
...

直到九月底

我想每5分钟计算一次第95百分位。你知道吗

最终结果应该是:

Time    September
0:00    95th Value
0:05    95th Value
0:10    95th Value
0:15    95th Value

。。。。你知道吗


Tags: 方法函数numpydatetimevaluenp数组
1条回答
网友
1楼 · 发布于 2024-04-27 03:45:13
import re
import pandas as pd

data = '''9/1/2019    0:00    SEPTEMBER   377.3333333
9/1/2019    0:00    SEPTEMBER   268.8
9/1/2019    0:00    SEPTEMBER   400.8
9/1/2019    0:00    SEPTEMBER   279.1304348
9/1/2019    0:05    SEPTEMBER   440
9/1/2019    0:05    SEPTEMBER   228
9/1/2019    0:05    SEPTEMBER   350
9/1/2019    0:05    SEPTEMBER   283.2
9/1/2019    0:10    SEPTEMBER   385.3333333
9/1/2019    0:10    SEPTEMBER   240
9/1/2019    0:10    SEPTEMBER   347.5
9/1/2019    0:10    SEPTEMBER   175.2
9/1/2019    0:15    SEPTEMBER   440
9/1/2019    0:15    SEPTEMBER   202.8
9/1/2019    0:15    SEPTEMBER   204
9/1/2019    0:15    SEPTEMBER   182.4
9/1/2019    0:20    SEPTEMBER   416
9/1/2019    0:20    SEPTEMBER   134.4
9/1/2019    0:20    SEPTEMBER   370
9/2/2019    0:05    SEPTEMBER   145.9
9/2/2019    0:05    SEPTEMBER   360'''

data = [re.split('[ ]+', x) for x in data.split('\n')]
df = pd.DataFrame(data, columns=['date','hour','month','value'])
df['value'] = df['value'].astype(float)
print(df.groupby(['date','hour']).value.quantile(0.95))

相关问题 更多 >