【问题标题】:Average of n lowest priced hourly intervals in a day pandas dataframe一天熊猫数据框中n个最低价格的小时间隔的平均值
【发布时间】:2021-08-24 12:52:33
【问题描述】:

我有一个由每小时电价数据组成的数据框。我想要做的是找到一种方法来计算一天中 n 个最低价格小时时段的平均值。数据跨越多年,旨在获取每天 n 个最低价格时段的平均值。可以使用以下方法创建合成数据:

np.random.seed(0)
rng = pd.date_range('2020-01-01', periods=24, freq='T')
df = pd.DataFrame({ 'Date': rng, 'Price': np.random.randn(len(rng)) }) 

我通过以下方式设法获得了每天的最低价格:

df_max = df.groupby([pd.Grouper(key='Date', freq='D')]).min() 

有没有办法获得一天中 n 个最低时段的平均值?

提前感谢您的帮助。

【问题讨论】:

    标签: python pandas dataframe trading


    【解决方案1】:

    我们可以将数据帧按Grouper 对象与每日频率分组,然后使用nsmallest 聚合Price 以获得n 最小值,现在计算level=0 上的mean 以获得@ 的平均值987654327@一天中的最小值

    df.groupby(pd.Grouper(key='Date', freq='D'))['Price'].nsmallest(5).mean(level=0)
    

    每日5最小值的平均值计算结果

    Date
    2020-01-01   -1.066337
    Name: Price, dtype: float64
    

    【讨论】:

    • 谢谢舒巴姆。完美运行....优雅!欢迎任何关于如何将其扩展到具有多个价格列的数据框的建议(而不是遍历每一列)。但再次感谢。
    【解决方案2】:

    您还可以尝试以下方法:

    bottom_5_prices_mean=df.sort_index(ascending=True).head(5)['Price'].mean() top_5_prices_mean=df.sort_index(ascending=True).tail(5)['Price'].mean()

    【讨论】:

    • 感谢 Sunil,看起来像一个整洁的解决方案,但不确定它是否能管理每日频率。
    • 感谢您的回复。 Shubham 的答案是完美的。我只是想分享替代品。我是一名量化分析师,这个解决方案会奏效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 2018-05-15
    • 2021-06-14
    • 2013-03-24
    • 2020-11-04
    相关资源
    最近更新 更多