带有freq ='W-MON'的Pandas Groupby中的线性回归

时间:2019-05-28 17:28:18

标签: python python-3.x timestamp linear-regression pandas-groupby

我有一年多时间的数据。我有兴趣按周对数据进行分组,并按周获取两个变量的斜率。数据如下所示:

Date               | Total_Sales| Products
2015-12-30 07:42:50| 2900       | 24
2015-12-30 09:10:10| 3400       | 20
2016-02-07 07:07:07| 5400       | 25
2016-02-07 07:08:08| 1000       | 64

因此,理想情况下,我希望在此数据的每周上对total_sales和产品执行线性回归并记录斜率。当数据中表示每周时,此方法有效,但当数据中跳过几周时,我会遇到问题。我知道我可以通过将日期转换为星期数来完成此操作,但是我觉得结果会出现偏差,因为有超过一年的数据价值。

这是我到目前为止的代码:

df['Date']=pd.to_datetime(vals['EventDate']) - pd.to_timedelta(7,unit='d')
df.groupby(pd.Grouper(key='Week', freq='W-MON')).apply(lambda v: linregress(v.Total_Sales, v.Products)[0]).reset_index()

但是,出现以下错误:

ValueError: Inputs must not be empty.

我希望输出看起来像这样:

Date       | Slope
2015-12-28 | -0.008     
2016-02-01 | -0.008

1 个答案:

答案 0 :(得分:0)

我认为发生这种情况是因为python无法正确分组,并且由于Date列的时间戳也不同,因此无法将datetime识别为键。

尝试以下代码。它对我有用:

export default class Users extends Component{
    static get propTypes(){
        return {
           //validate users must be an array
           users: PropTypes.array
        }
    }

    constructor(props){
        super(props);
        this.state ={
          man: this.props.users
        }
    }
   // rest of the code
  }