如何对日期索引的数据进行分组并提取时间序列信息

时间:2018-11-12 22:26:45

标签: python pandas dataframe time-series weighted-average

使用如下所示的简化的学生样本数据:

    Date  |  Loc  |  SID  |  Test  |  Score
----------------------------------------------
2018-03-01    L1     S1       T1       3
2018-03-01    L1     S1       T1       5
2018-03-01    L2     S3       T1       3
2018-03-03    L2     S3       T2       4
2018-03-03    L1     S2       T1       1
2018-03-03    L1     S1       T2       5
2018-03-03    L1     S1       T1       4
2018-03-03    L1     S2       T3       7
2018-03-03    L2     S1       T1       5
2018-03-05    L1     S2       T2       3
2018-03-05    L2     S1       T1       1
2018-03-05    L1     S3       T2       5
2018-03-05    L1     S2       T1       8
2018-03-05    L1     S1       T1       6
2018-03-05    L2     S1       T1       3
2018-03-05    L2     S3       T3       5
2018-03-08    L2     S2       T2       4
2018-03-08    L2     S1       T2       2
2018-03-09    L1     S3       T1       6
2018-03-09    L2     S3       T1       5
2018-03-09    L1     S1       T3       8
2018-03-09    L1     S1       T3       6
2018-03-11    L1     S3       T2       6
2018-03-11    L2     S3       T1       9
2018-03-11    L1     S3       T2       3
2018-03-11    L1     S1       T1       5
2018-03-11    L2     S1       T1       4
2018-03-11    L1     S1       T3       9
2018-03-14    L2     S2       T1       3
2018-03-14    L1     S2       T1       3

想分组(定位,SID,测试)并基于每周的重新采样来计算平均得分和加权平均得分,因此看起来像以下内容(不完整,仅显示第1周):

                    | # Times Test Taken  |  Avg. Score  |  Wgtd Avg. Score      
        ------------|------------------------------------------------------
Week 1| L1  S1   T1 |          4          |     4.50     |
                 T2 |          1          |     5.00     |
            S2   T1 |          2          |     4.50     |
                 T2 |          1          |     3.00     |
                 T3 |          1          |     7.00     |
            S3   T2 |          1          |     5.00     |
        L2  S1   T1 |          3          |     3.00     |
            S3   T1 |          1          |     4.00

到目前为止,我已经:

import pandas as pd

df = pd.read_csv(TheData)
df2 = df.copy()

df2.Date = pd.to_datetime(df2.Date)
df2.set_index('Date', inplace=True)

df3 = df2.copy()
df3.groupby(['Loc', 'SID', 'Test']).resample('W')['Score'].count()
# df3.groupby(['Loc', 'SID', 'Test']).resample('W').count()

df3.groupby(['Loc', 'SID', 'Test']).resample('W').mean()

我认为我拥有“#次考试时间”和“平均得分”的正确信息。如何将这些信息输入到同一数据框的新列中?

对于加权平均。分数,我愿意就如何计算分数提出建议,以便它可以反映与分数有关的测试类型(T1-T3)中的差异。我什至不确定我是否正在以正确的方式考虑这个指标。

随着我的进步,将继续更新。任何反馈,不胜感激。

0 个答案:

没有答案