【问题标题】:Deviation to weekday and weekend mean on daily data in dataframe数据框中每日数据与工作日和周末的偏差
【发布时间】:2020-05-29 14:43:36
【问题描述】:

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

一些样本数据:

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'))

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

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    我愿意:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多