UE8: notebook séance 3

Notebook de la séance 3

import pandas
df = pandas.read_excel("Donnees_M2_RD.xlsx")
df

Subject Name_A Name_B Dist_A Dist_B Mode Space Side Response RT
0 P_ADI_331 0 2 2 4 Dic E D 2 18865
1 P_ADI_331 1 4 4 1 Dic E D 2 13157
2 P_ADI_331 4 3 3 2 Dic E D 1 11628
3 P_ADI_331 2 4 4 1 Dic E D 1 10068
4 P_ADI_331 1 2 2 4 Dic E D 1 11801
... ... ... ... ... ... ... ... ... ... ...
9589 P_VAR_330 0 1 3 5 Dio I D 1 7626
9590 P_VAR_330 3 2 5 1 Dio I D 2 6349
9591 P_VAR_330 2 0 4 2 Dio I D 2 9031
9592 P_VAR_330 0 2 2 1 Dio I D 2 16323
9593 P_VAR_330 0 3 5 1 Dio I D 2 10139

9594 rows × 10 columns

Donner le nombre de sujets.

df['Subject'].drop_duplicates().count()
24

Donner le nombre d’essais pour lesquels le deuxième prénom est Justin.

# df[df['Name_B'] == 3].count()
# ne marche pas car fait un décompte par colonne

df[df['Name_B'] == 3]['RT'].count()
# Fonctionne mais ["RT"] est juste là pour obtenir une serie à décompter
1918

Donner le nombre d’essais ayant un temps de réponse supérieur à 20000 dixièmes de ms.

df[df["RT"] > 20000]["RT"].count()
943

Donner la moyenne des temps de réponse lorsque le prénom joué en premier est celui du sujet.

df[df["Name_A"] == 0]["RT"].mean()
12154.498435870699

Les sujets ayant au moins une fois répondu en plus de 50000 dixièmes de ms.

df[df["RT"] > 50000]["Subject"].drop_duplicates()
650     P_ALM_345
1733    P_BEH_340
2798    P_BOA_321
3232    P_BOC_342
3872    P_CAR_327
4953    P_GAM_338
6447    P_LAC_354
7609    P_ROS_336
8424    P_TAI_343
9091    P_VAL_329
9373    P_VAR_330
Name: Subject, dtype: object
(df["RT"] + 20000) > 50000
0       False
1       False
2       False
3       False
4       False
        ...  
9589    False
9590    False
9591    False
9592    False
9593    False
Name: RT, Length: 9594, dtype: bool
df['Dist_A'] - df['Dist_B']
0      -2
1       3
2       1
3       3
4      -2
       ..
9589   -2
9590    4
9591    2
9592    1
9593    4
Length: 9594, dtype: int64
df

Subject Name_A Name_B Dist_A Dist_B Mode Space Side Response RT
0 P_ADI_331 0 2 2 4 Dic E D 2 18865
1 P_ADI_331 1 4 4 1 Dic E D 2 13157
2 P_ADI_331 4 3 3 2 Dic E D 1 11628
3 P_ADI_331 2 4 4 1 Dic E D 1 10068
4 P_ADI_331 1 2 2 4 Dic E D 1 11801
... ... ... ... ... ... ... ... ... ... ...
9589 P_VAR_330 0 1 3 5 Dio I D 1 7626
9590 P_VAR_330 3 2 5 1 Dio I D 2 6349
9591 P_VAR_330 2 0 4 2 Dio I D 2 9031
9592 P_VAR_330 0 2 2 1 Dio I D 2 16323
9593 P_VAR_330 0 3 5 1 Dio I D 2 10139

9594 rows × 10 columns

df[df["RT"]>10000]["Dist_A"] - df[df["RT"]<11000]["Dist_B"]
0       NaN
1       NaN
2       NaN
3       3.0
4       NaN
       ... 
9589    NaN
9590    NaN
9591    NaN
9592    NaN
9593    4.0
Length: 9594, dtype: float64
df['diff_dist'] = df['Dist_A'] - df['Dist_B']
df

Subject Name_A Name_B Dist_A Dist_B Mode Space Side Response RT diff_dist
0 P_ADI_331 0 2 2 4 Dic E D 2 18865 -2
1 P_ADI_331 1 4 4 1 Dic E D 2 13157 3
2 P_ADI_331 4 3 3 2 Dic E D 1 11628 1
3 P_ADI_331 2 4 4 1 Dic E D 1 10068 3
4 P_ADI_331 1 2 2 4 Dic E D 1 11801 -2
... ... ... ... ... ... ... ... ... ... ... ...
9589 P_VAR_330 0 1 3 5 Dio I D 1 7626 -2
9590 P_VAR_330 3 2 5 1 Dio I D 2 6349 4
9591 P_VAR_330 2 0 4 2 Dio I D 2 9031 2
9592 P_VAR_330 0 2 2 1 Dio I D 2 16323 1
9593 P_VAR_330 0 3 5 1 Dio I D 2 10139 4

9594 rows × 11 columns

Création d’une colonne qui indique si le sujet s’est trompé dans sa réponse. Si la réponse est 1, le sujet a bien répondu si Dist_A est inférieur à Dist_B. Sinon, la bonne réponse est 2.

reponse1_et_juste = (df["Response"] == 1) & (df["Dist_A"] < df["Dist_B"])
reponse2_et_juste = (df["Response"] == 2) & (df["Dist_A"] > df["Dist_B"])
reponse_juste = reponse1_et_juste | reponse2_et_juste
reponse_juste
0       False
1        True
2       False
3       False
4        True
        ...  
9589     True
9590     True
9591     True
9592     True
9593     True
Length: 9594, dtype: bool
df["reponse_juste"] = reponse_juste
df

Subject Name_A Name_B Dist_A Dist_B Mode Space Side Response RT diff_dist reponse_juste
0 P_ADI_331 0 2 2 4 Dic E D 2 18865 -2 False
1 P_ADI_331 1 4 4 1 Dic E D 2 13157 3 True
2 P_ADI_331 4 3 3 2 Dic E D 1 11628 1 False
3 P_ADI_331 2 4 4 1 Dic E D 1 10068 3 False
4 P_ADI_331 1 2 2 4 Dic E D 1 11801 -2 True
... ... ... ... ... ... ... ... ... ... ... ... ...
9589 P_VAR_330 0 1 3 5 Dio I D 1 7626 -2 True
9590 P_VAR_330 3 2 5 1 Dio I D 2 6349 4 True
9591 P_VAR_330 2 0 4 2 Dio I D 2 9031 2 True
9592 P_VAR_330 0 2 2 1 Dio I D 2 16323 1 True
9593 P_VAR_330 0 3 5 1 Dio I D 2 10139 4 True

9594 rows × 12 columns

  • Découper les données en 2:
    • une Dataframe pour les essais où le temps de réponse est plus petit ou égal à 2 s
    • une Dataframe pour les essais où le temps de réponse est plus grand que 2 s
  • Réassembler les Dataframes via concat
  • Que dire de l’ordre de l’index ?
df_inf2 = df[df["RT"] <= 20000]
df_sup2 = df[df["RT"] > 20000]
pandas.concat([df_inf2, df_sup2])

Subject Name_A Name_B Dist_A Dist_B Mode Space Side Response RT diff_dist reponse_juste
0 P_ADI_331 0 2 2 4 Dic E D 2 18865 -2 False
1 P_ADI_331 1 4 4 1 Dic E D 2 13157 3 True
2 P_ADI_331 4 3 3 2 Dic E D 1 11628 1 False
3 P_ADI_331 2 4 4 1 Dic E D 1 10068 3 False
4 P_ADI_331 1 2 2 4 Dic E D 1 11801 -2 True
... ... ... ... ... ... ... ... ... ... ... ... ...
9525 P_VAR_330 4 2 2 5 Dic I G 2 22072 -3 False
9544 P_VAR_330 1 4 3 2 Dio I D 2 26522 1 True
9549 P_VAR_330 0 3 5 4 Dio I D 2 65102 1 True
9577 P_VAR_330 3 1 3 5 Dio I D 1 21278 -2 True
9583 P_VAR_330 0 4 4 5 Dio I D 2 45627 -1 False

9594 rows × 12 columns

Emmanuel Coquery
Emmanuel Coquery
Maître de conférences en Informatique