Séance 5
import pandas
Préparation des données
Lecture du fichier excel, puis merge avec les bonnes distances en mètres.
df = pandas.read_excel("Donnees_M2_RD.xlsx")
dist_i_m = pandas.DataFrame(
{ "Dist_I_m": [ 0.2, 0.3, 0.4, 0.6, 0.8 ] },
index = [1,2,3,4,5]
)
dist_e_m = pandas.DataFrame(
{ "Dist_E_m": [ 2, 3, 4, 6, 8 ] },
index = [1,2,3,4,5]
)
df_e = df[df['Space'] == 'E']
df1 = pandas.merge(df_e, dist_e_m, left_on='Dist_A', right_index=True)
df2 = df1.rename(columns={ 'Dist_E_m': 'Dist_A_m' })
df3 = pandas.merge(df2, dist_e_m, left_on='Dist_B', right_index=True)
df_e_m = df3.rename(columns={ 'Dist_E_m': 'Dist_B_m' })
df_i = df[df['Space'] == 'I']
df1 = pandas.merge(df_i, dist_i_m, left_on='Dist_A', right_index=True)
df2 = df1.rename(columns={ 'Dist_I_m': 'Dist_A_m' })
df3 = pandas.merge(df2, dist_i_m, left_on='Dist_B', right_index=True)
df_i_m = df3.rename(columns={ 'Dist_I_m': 'Dist_B_m' })
df_m = pandas.concat([df_e_m,df_i_m])
df_m
Subject | Name_A | Name_B | Dist_A | Dist_B | Mode | Space | Side | Response | RT | Dist_A_m | Dist_B_m | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | P_ADI_331 | 0 | 2 | 2 | 4 | Dic | E | D | 2 | 18865 | 3.0 | 6.0 |
4 | P_ADI_331 | 1 | 2 | 2 | 4 | Dic | E | D | 1 | 11801 | 3.0 | 6.0 |
7 | P_ADI_331 | 0 | 3 | 2 | 4 | Dic | E | D | 1 | 13237 | 3.0 | 6.0 |
36 | P_ADI_331 | 3 | 1 | 2 | 4 | Dic | E | D | 1 | 9523 | 3.0 | 6.0 |
51 | P_ADI_331 | 2 | 4 | 2 | 4 | Dio | E | G | 1 | 11331 | 3.0 | 6.0 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
9498 | P_VAR_330 | 4 | 2 | 4 | 3 | Dic | I | G | 2 | 4811 | 0.6 | 0.4 |
9503 | P_VAR_330 | 3 | 0 | 4 | 3 | Dic | I | G | 2 | 6628 | 0.6 | 0.4 |
9526 | P_VAR_330 | 0 | 1 | 4 | 3 | Dic | I | G | 2 | 5458 | 0.6 | 0.4 |
9535 | P_VAR_330 | 2 | 4 | 4 | 3 | Dic | I | G | 1 | 8956 | 0.6 | 0.4 |
9546 | P_VAR_330 | 2 | 3 | 4 | 3 | Dio | I | D | 2 | 13525 | 0.6 | 0.4 |
9594 rows × 12 columns
Une première courbe
- Créer une Series contenant le temps de réaction moyen en fonction de la distance A en mètres
- Tracer la courbe correspondant à la série
- Créer la série et tracer la courbe correspondante pour la distance B.
rt_by_distam = df_m.groupby(by='Dist_A_m')['RT'].mean()
rt_by_distam.plot()
rt_by_distbm = df_m.groupby(by='Dist_B_m')['RT'].mean()
rt_by_distbm.plot()
<AxesSubplot:xlabel='Dist_B_m'>
Box plot temps de réaction vs différence de distance
- Ajouter au besoin une colonne pour la différence entre Dist_A et Dist_B
- Faire un box plot du temps de réaction selon la différence de distance
- Faire un deuxième box plot en se limitant aux essais réussis et un troisième pour les échecs
df_m['diff_dist'] = df_m['Dist_A'] - df_m['Dist_B']
df_m.plot.box(by='diff_dist', column='RT', showfliers=False)
RT AxesSubplot(0.125,0.125;0.775x0.755)
dtype: object
Les essais réussis
reussites = (
((df_m['Response'] == 1) & (df_m['Dist_A'] < df_m['Dist_B']))
| ((df_m['Response'] == 2) & (df_m['Dist_A'] > df_m['Dist_B']))
)
df_m["reussit"] = reussites
df_m
Subject | Name_A | Name_B | Dist_A | Dist_B | Mode | Space | Side | Response | RT | Dist_A_m | Dist_B_m | diff_dist | reussit | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | P_ADI_331 | 0 | 2 | 2 | 4 | Dic | E | D | 2 | 18865 | 3.0 | 6.0 | -2 | False |
4 | P_ADI_331 | 1 | 2 | 2 | 4 | Dic | E | D | 1 | 11801 | 3.0 | 6.0 | -2 | True |
7 | P_ADI_331 | 0 | 3 | 2 | 4 | Dic | E | D | 1 | 13237 | 3.0 | 6.0 | -2 | True |
36 | P_ADI_331 | 3 | 1 | 2 | 4 | Dic | E | D | 1 | 9523 | 3.0 | 6.0 | -2 | True |
51 | P_ADI_331 | 2 | 4 | 2 | 4 | Dio | E | G | 1 | 11331 | 3.0 | 6.0 | -2 | True |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
9498 | P_VAR_330 | 4 | 2 | 4 | 3 | Dic | I | G | 2 | 4811 | 0.6 | 0.4 | 1 | True |
9503 | P_VAR_330 | 3 | 0 | 4 | 3 | Dic | I | G | 2 | 6628 | 0.6 | 0.4 | 1 | True |
9526 | P_VAR_330 | 0 | 1 | 4 | 3 | Dic | I | G | 2 | 5458 | 0.6 | 0.4 | 1 | True |
9535 | P_VAR_330 | 2 | 4 | 4 | 3 | Dic | I | G | 1 | 8956 | 0.6 | 0.4 | 1 | False |
9546 | P_VAR_330 | 2 | 3 | 4 | 3 | Dio | I | D | 2 | 13525 | 0.6 | 0.4 | 1 | True |
9594 rows × 14 columns
df_m[df_m['reussit']].plot.box(by='diff_dist', column='RT', showfliers=False)
df_m[~df_m['reussit']].plot.box(by='diff_dist', column='RT', showfliers=False)
RT AxesSubplot(0.125,0.125;0.775x0.755)
dtype: object