数据框中每日数据与工作日和周末平均值的偏差

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据框中每日数据与工作日和周末平均值的偏差相关的知识,希望对你有一定的参考价值。

我有一些日常数据,我想计算每个数据点与月平均值的偏差,但我想区分工作日和周末的月平均值。

一些样本数据。

import pandas as pd
import numpy as np
from datetime import datetime, timedelta
date_today = datetime.now()
days = pd.date_range(date_today, date_today + timedelta(100), freq='D')
np.random.seed(seed=1111)
data = 66*np.random.randint(1, high=100, size=len(days))/100
df = pd.DataFrame('Date': days, 'vals': data)
df = df.set_index('Date')
print(df)

如果我把所有的日子都一样,我就可以做到这一点。

df['valdifftoavg']= df['vals'].sub(df.resample("M")['vals'].transform('mean'))

但我想区分,所以如果每天的数据是工作日,就减去该月的工作日平均值 如果是周末,就减去该月的周末平均值。

答案

我会做。

is_weekend = df.index.weekday >= 5

# groupby month and is_weekend
means = (df.groupby([df.index.to_period('M'),is_weekend])
           ['vals'].transform('mean')
        )

df['deviation'] = df['vals'] - means

以上是关于数据框中每日数据与工作日和周末平均值的偏差的主要内容,如果未能解决你的问题,请参考以下文章

试图弄清楚如何使用列表返回数据框中每一列的平均值

如何识别从今天到过去和未来(不包括周末)的三个工作日,并将它们放入熊猫数据框中?

计算 MAD(平均绝对偏差) GroupBy Pandas

用 Python 用该列的平均值减去数据框中的每一列

Python - 每列中所选行的标准偏差

在 pyspark 数据框中检索最大值时遇到问题