Python 按整数天数计算熊猫的滚动平均数
我从csv中获取了一些数据,并将其放入数据框中:Python 按整数天数计算熊猫的滚动平均数,python,pandas,time-series,dataframe,Python,Pandas,Time Series,Dataframe,我从csv中获取了一些数据,并将其放入数据框中: from pandas import read_csv df = read_csv('C:\...', delimiter = ',', encoding = 'utf-8') df2 = df.groupby(['i-j','day'])['i-j'].agg({'count'}) 我想计算每个“I-j”的七天移动平均数。首先,我想我需要将计数为零的天数添加到表中。有没有一种简单的方法可以通过修改上面的代码来实现这一点?换句话说,我希望丢失
from pandas import read_csv
df = read_csv('C:\...', delimiter = ',', encoding = 'utf-8')
df2 = df.groupby(['i-j','day'])['i-j'].agg({'count'})
我想计算每个“I-j”的七天移动平均数。首先,我想我需要将计数为零的天数添加到表中。有没有一种简单的方法可以通过修改上面的代码来实现这一点?换句话说,我希望丢失的值计算为0
然后,我需要在数据框中添加另一列,用于计算前七天每个I-j的平均计数。为了使用一些滚动统计函数,我是否需要将天数转换为熊猫识别为日期值的值?或者我可以更改“日期”列的类型并继续
非常感谢 可能有更好的方法来实现这一点,但是考虑到您的起始数据帧
df2
,以下方法应该可以工作
首先重新索引df2,用零填充缺失的天数:
new_index = pd.MultiIndex.from_product([df2.index.get_level_values(0).unique(), range(31)])
df2 = df2.reindex(new_index, fill_value=0)
(我假设您需要31天,但您可以根据需要进行更改。)
现在,如果您unstack
此重新编制索引的数据帧并进行转置,则会有一个数据帧,其中每列都是i-j
的条目,并包含每天的计数:
df2.unstack().T
您可以计算此数据帧的滚动平均值:
rm = pd.rolling_mean(df2.unstack().T, 7)
要完成此操作,您可以stack
此滚动帧意味着恢复原始重新索引的形状df2
:
rm.T.stack(dropna=False)
让我们看看你到目前为止都做了些什么。似乎reindex(新索引,填充值=0)正在将count列中的所有内容设置为0。df2下面的代码中的ie与上面的相同,而df3每天都有一个条目,但每个地方的计数都为0
code df2=df.groupby(['i-j','day'])['i-j'].agg({'count'})new_index=pd.MultiIndex.from_product([df2.index.get_level_values(0).unique(),range(30)]df3=df2.reindex(new_index,fill_value=0)
Hmmm-除非现有数据框中的索引都不在new_index
中,否则不会发生这种情况。也许day
列包含字符串而不是整数?这正是问题所在。强制日期列为整数可以解决此问题。再次感谢