Для задания мне нужно найти время реакции на основе данных эксперимента с мышью. Для этой части задания мне нужно выбрать каждую первую строку из столбцов пользователя, проб и времени, где отметка времени не равна нулю:
Давайте сначала исследуем следующее предлагаемое определение: реакция время для испытания - первая ненулевая отметка времени в таблице путей. Причина этого выбора заключается в следующем: операционная система отправляет обновления о положении мыши в компьютерную программу только в том случае, если мышь фактически перемещена. Следовательно, это будет соответствовать первому перемещению мыши после появления цели.
Используйте запрос SQL, чтобы создать таблицу со столбцами, содержащими идентификатор пользователя, идентификатор испытания и время реакции в соответствии с этим. определение. Сохраните сам запрос в виде строки в переменной query_reaction_1. Сохраните таблицу в кадре данных с именем df_reaction_1. Переименуйте столбцы в «user», «trial» и «response_time_1». Установите для индекса df_reaction_1 значение ['user', 'trial'].
Итак, я написал следующий код:
query_reaction_1 = '''
SELECT user, trial , MIN(t) AS "reaction_time_1"
FROM paths
WHERE t > 0
GROUP BY trial
'''
df_reaction_1 = pd.read_sql_query(query_reaction_1, conn_experiment).set_index(['user','trial'])
, который я считал, даст мне самое низкое значение каждого испытания, где отметка времени больше нуля. Вместо этого я получил
[ reaction_time_1
user trial
716 0 0.289951
1 0.340627
1805 2 0.390221
3 0.292502
716 4 0.263152
2798 5 0.000798
2467 6 0.001771
1010 7 0.000476
845 8 0.001806
355 9 0.001337
1724 10 0.001048
1655 11 0.000864
422 12 0.000984
972 13 0.001077
143 14 0.000552
2313 15 0.001089
1381 16 0.001190
133 17 0.008049
2079 18 0.001317
355 19 0.000810
1618 20 0.000383
440 21 0.000766
831 22 0.001102
2698 23 0.002148
1775 24 0.001681
1504 25 0.003318
2860 26 0.001677
983 27 0.001730
293 28 0.004176
2147 29 0.001141
... ...
2249 67 0.133002
205 68 0.281682
2871 69 0.142689
366 70 0.020042
1086 71 0.178978
72 0.330284
2847 73 0.317462
2871 74 0.337271
366 75 0.303912
449 76 0.387284
312 77 0.083590
1086 78 0.341847
366 79 0.001777
1086 80 0.365535
965 81 0.436551
1571 82 0.458118
83 0.388497
84 0.497493
2847 85 0.483023
86 0.474587
1571 87 0.441423
2847 88 0.475590
1571 89 0.178574
90 0.483690
2847 91 0.501311
1571 92 0.397213
2847 93 0.464619
94 0.431014
95 0.453860
96 0.528495
Для некоторых из них я мог бы полагать, что они были очень быстрыми, но я не думаю, что время реакции может быть 0,000864 секунды.
Существует также тот факт, что когда я просто использую функцию df_paths.head()
, с df_paths в качестве версии dataframe части путей базы данных, я получаю это:
[ x y
user trial t
1226 5 0.000000 0 2
2.334113 -2 -2
2.348045 -5 -8
2.361388 -9 -14
2.369874 -12 -17]
Но если я выполню df_reaction_1.loc[[1226,5],:]
, он возвращает пустую рамку, что говорит о том, что они не находятся в рамке df_reaction_1
.
Кто-нибудь из вас знает, где что-то идет не так и как я могу это исправить?
Или Я делаю это правильно, и у людей действительно есть такие времена реакции?
Редактировать:
Я теперь добавил user
к части GROUP BY
, что означает, что теперь это
query_reaction_1 = '''
SELECT user, trial , MIN(t) AS "reaction_time_1"
FROM paths
WHERE t > 0
GROUP BY user, trial
'''
Что также заставило пользователя 1226 появиться в индексе. df_reaction_1
теперь показывает
[ reaction_time_1
user trial
1 5 0.324846
6 0.393842
7 0.423749
8 0.443900
9 0.367530
10 0.468536
11 0.366834
12 0.503146
13 0.249816
14 0.383003
15 0.477718
16 0.416280
17 0.504980
18 0.706420
19 0.298123
20 0.516621
21 0.553745
22 0.480228
23 0.409048
24 0.454911
25 0.504354
26 0.554510
27 0.571132
28 0.557804
29 0.520687
30 0.524451
31 0.475840
32 0.518764
33 0.629982
34 0.195311
... ...
2995 5 0.416200
6 0.398748
7 0.400937
8 0.326452
9 0.301367
10 0.460324
11 0.330990
12 0.677126
13 0.473631
14 0.651821
15 0.403097
16 0.138970
17 0.338505
18 0.323884
19 0.446353
20 0.456253
21 0.717606
22 0.951657
23 0.603192
24 0.793026
25 0.702073
26 0.509107
27 0.553334
28 0.532367
29 0.563675
30 0.991101
31 0.772922
32 1.523124
33 0.612417
34 0.598583
, что больше, чем я ожидал, но все еще очень быстро, если вы спросите меня. Это возможно для времени реакции, или все еще что-то не так?