【发布时间】:2020-12-23 17:14:06
【问题描述】:
我有一个数据框,其中包含多年的数据,其中多个环境参数作为列。数据框如下所示:
import pandas as pd
import numpy as np
from scipy import stats
Parameters= ['Temperature','Rain', 'Pressure', 'Humidity']
nrows = 365
daterange = pd.date_range('1/1/2019', periods=nrows, freq='D')
Vals = pd.DataFrame(np.random.randint(10, 150, size=(nrows, len(Parameters))), columns=Parameters)
Vals = Vals.set_index(daterange)
print(Vals)
我创建了一个月份名称为Vals['Month'] = Vals.index.month_name().str.slice(stop=3) 的列,我想从两个变量Rain and Temperature 之间的回归计算斜率并将它们提取到数据框中。我尝试了以下解决方案:
pd.DataFrame.from_dict({y:stats.linregress(Vals['Temperature'], Vals['Rain'])[:2] for y, x in
Vals.groupby('Month')},'index').\
rename(columns={0:'Slope',1:'Intercept'})
但输出不是我所期望的。我想要每月回归统计但结果是这样的
Slope Intercept
Apr -0.016868 81.723291
Aug -0.016868 81.723291
Dec -0.016868 81.723291
Feb -0.016868 81.723291
Jan -0.016868 81.723291
Jul -0.016868 81.723291
Jun -0.016868 81.723291
Mar -0.016868 81.723291
May -0.016868 81.723291
Nov -0.016868 81.723291
Oct -0.016868 81.723291
Sep -0.016868 81.723291
似乎回归是根据总数据集计算的,并存储在每个月的索引中。我怎样才能从类似的过程中计算每月的统计数据?
【问题讨论】:
标签: python pandas dataframe regression