规范化数据集以寻找季节性和平均值 python pandas
Normalizing a data set to look for seasonalities and average python pandas
使用数据集,我想使用 pandas 围绕中心日期重新索引以下内容。例如,在第一个数据集上,我想在 2009 年 12 月 22 日左右生成一个索引,并给它赋值 0,之前的任何值都是 -1、-2、-3、-4 等,之后的值是 1, 2,3,4,5。有没有人对如何动态管理重建索引有任何建议?我预计必须使用 df.merge(how = 'outer') 将数据集合并在一起,并添加一个额外的列来平均这些值。
重新索引到以下
合并并return以0
为中心
是否如你所愿?
输入数据:
>>> df1
date value
0 2009-12-14 4.829653
1 2009-12-15 4.941522
2 2009-12-16 4.066554
3 2009-12-17 4.374824
4 2009-12-18 4.919813
5 2009-12-21 4.774057
6 2009-12-22 4.431368
7 2009-12-23 4.794788
8 2009-12-24 4.496606
9 2009-12-25 4.408936
10 2009-12-28 4.467351
11 2009-12-29 4.834504
>>> df2
date value
0 2009-11-24 4.852626
1 2009-11-25 4.785530
2 2009-11-26 4.676981
3 2009-11-27 4.030883
4 2009-11-30 4.563335
5 2009-12-01 4.226778
6 2009-12-02 4.073694
7 2009-12-03 4.715326
8 2009-12-04 4.709705
9 2009-12-07 4.469377
10 2009-12-08 4.727273
11 2009-12-09 4.923308
12 2009-12-10 4.742808
13 2009-12-11 4.168057
>>> pivot_dates
['2009-12-21','2009-12-04']
dfs = [df1[::-1].set_index(df1.index - df1['date'].eq(pivot_dates[0]).argmax() - 1)['value'],
df2[::-1].set_index(df2.index - df2['date'].eq(pivot_dates[1]).argmax() - 1)['value']]
df = pd.concat(dfs, axis='columns')
df.columns = ['A', 'B']
输出结果:
>>> df
A B
-9 NaN 4.168057
-8 NaN 4.742808
-7 NaN 4.923308
-6 4.834504 4.727273
-5 4.467351 4.469377
-4 4.408936 4.709705
-3 4.496606 4.715326
-2 4.794788 4.073694
-1 4.431368 4.226778
0 4.774057 4.563335
1 4.919813 4.030883
2 4.374824 4.676981
3 4.066554 4.785530
4 4.941522 4.852626
5 4.829653 NaN
使用数据集,我想使用 pandas 围绕中心日期重新索引以下内容。例如,在第一个数据集上,我想在 2009 年 12 月 22 日左右生成一个索引,并给它赋值 0,之前的任何值都是 -1、-2、-3、-4 等,之后的值是 1, 2,3,4,5。有没有人对如何动态管理重建索引有任何建议?我预计必须使用 df.merge(how = 'outer') 将数据集合并在一起,并添加一个额外的列来平均这些值。
重新索引到以下
合并并return以0
为中心是否如你所愿?
输入数据:
>>> df1
date value
0 2009-12-14 4.829653
1 2009-12-15 4.941522
2 2009-12-16 4.066554
3 2009-12-17 4.374824
4 2009-12-18 4.919813
5 2009-12-21 4.774057
6 2009-12-22 4.431368
7 2009-12-23 4.794788
8 2009-12-24 4.496606
9 2009-12-25 4.408936
10 2009-12-28 4.467351
11 2009-12-29 4.834504
>>> df2
date value
0 2009-11-24 4.852626
1 2009-11-25 4.785530
2 2009-11-26 4.676981
3 2009-11-27 4.030883
4 2009-11-30 4.563335
5 2009-12-01 4.226778
6 2009-12-02 4.073694
7 2009-12-03 4.715326
8 2009-12-04 4.709705
9 2009-12-07 4.469377
10 2009-12-08 4.727273
11 2009-12-09 4.923308
12 2009-12-10 4.742808
13 2009-12-11 4.168057
>>> pivot_dates
['2009-12-21','2009-12-04']
dfs = [df1[::-1].set_index(df1.index - df1['date'].eq(pivot_dates[0]).argmax() - 1)['value'],
df2[::-1].set_index(df2.index - df2['date'].eq(pivot_dates[1]).argmax() - 1)['value']]
df = pd.concat(dfs, axis='columns')
df.columns = ['A', 'B']
输出结果:
>>> df
A B
-9 NaN 4.168057
-8 NaN 4.742808
-7 NaN 4.923308
-6 4.834504 4.727273
-5 4.467351 4.469377
-4 4.408936 4.709705
-3 4.496606 4.715326
-2 4.794788 4.073694
-1 4.431368 4.226778
0 4.774057 4.563335
1 4.919813 4.030883
2 4.374824 4.676981
3 4.066554 4.785530
4 4.941522 4.852626
5 4.829653 NaN