如何将每日数据添加到熊猫的数据框中以增量方式计算移动平均线?

时间:2019-07-20 01:20:20

标签: python pandas

我有每日数据,想计算每个用户的5天,30天和90天移动平均值,并写出CSV。每天都有新数据出现。假设我将使用最近89天的数据和今天的数据加载数据框,如何只计算新数据的平均值。

日期用户daily_sales 5_days_MA 30_days_MV 90_days_MV 2019-05-01 1 34 2019-05-01 2 20 ....

2019-07-18 .....

每天的行数约为一百万。如果90天的数据太多,则30天就可以了

1 个答案:

答案 0 :(得分:0)

如果数据集采用DataFrame格式,则可以在数据集中应用string input; int year, month, day; cin >> input; // input can be 2005:03:09 or 2005/04/02 or whatever stringstream ss(input); char ch; ss >> year >> ch >> month >> ch >> day; 方法。

rolling()

如果需要不同的窗口来计算移动平均值,只需更改your_df['MA_30_days'] = df[where_to_apply].rolling(window = 30).mean() 参数。在我的示例中,我使用了window进行计算,但您也可以选择其他一些统计信息。

此代码将创建另一个名为'MA_30_days'的列,并在您的DataFrame中计算出移动平均值。

您还可以创建另一个DataFrame,在其中收集和循环数据集以计算所有移动平均值,并根据需要将其保存为CSV格式。

mean()

在您进行计算时,应仅考虑最新数据。如果要对最新数据执行此操作,请对其进行切片。但是,第一行将是your_df.to_csv('filename.csv') (取决于NaN)。

window

这将计算某些df中特定列的最后90行的移动平均值,而前29行将为df[where_to_apply][-90:].rolling(window = 30).mean() 。如果最新的90行应该都是有意义的数据,则可以比最后90行更早地开始计算-取决于NaN的大小。