一天中 n 个最低价格每小时间隔的平均值 pandas 数据帧
Average of n lowest priced hourly intervals in a day pandas dataframe
我有一个由每小时电价数据组成的数据框。我想做的是找到一种方法来计算一天中 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 个最低时段的平均值?
在此先感谢您的帮助。
我们可以按 Grouper
对象按日频率对数据帧进行分组,然后使用 nsmallest
聚合 Price
以获得 n
最小值,现在计算 mean
在 level=0
上获取一天中 n
个最小值的平均值
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
您也可以尝试以下方法:
bottom_5_prices_mean=df.sort_index(升序=真).head(5)['Price'].mean()
top_5_prices_mean=df.sort_index(升序=真).tail(5)['Price'].mean()
我有一个由每小时电价数据组成的数据框。我想做的是找到一种方法来计算一天中 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 个最低时段的平均值?
在此先感谢您的帮助。
我们可以按 Grouper
对象按日频率对数据帧进行分组,然后使用 nsmallest
聚合 Price
以获得 n
最小值,现在计算 mean
在 level=0
上获取一天中 n
个最小值的平均值
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
您也可以尝试以下方法:
bottom_5_prices_mean=df.sort_index(升序=真).head(5)['Price'].mean() top_5_prices_mean=df.sort_index(升序=真).tail(5)['Price'].mean()