Как сгруппировать данные, проиндексированные по дате, и извлечь информацию о временных сериях - PullRequest
0 голосов
/ 13 ноября 2018

Работа с упрощенными данными выборки учащихся, которые выглядят следующим образом:

    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

Хотел бы сгруппировать (Loc, SID, Test) и рассчитать средний балл и средневзвешенный балл на основе еженедельной повторной выборкитак что это выглядит примерно так (не завершено, только показывает Неделю 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()

Я считаю, что у меня есть правильная информация для "# Times Test Taken "и" Средняя оценка ".Как я могу передать эту информацию в новые столбцы в том же кадре данных?

Для взвешенного среднего.балл, я открыт для предложений о том, как рассчитать его так, чтобы он мог отражать различия в типе теста (T1-T3) в том, что касается балла.Я даже не уверен, что я даже думаю об этой метрике в правильном направлении.

Будет продолжать обновляться по мере моего прогресса.Любая обратная связь с благодарностью.

...