Notebook séance 6

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

Histogramme

Faire un histogramme de la quantité d’essais selon le temps de réaction.

On fait l’histogramme sur la série qui contient uniquement les RT, car le tracé sur la dataframe est trop long.

df["RT"].plot.hist(bins=10)
<AxesSubplot:ylabel='Frequency'>

png

Ajout des réussites

reussites = (
    ((df['Response'] == 1) & (df['Dist_A'] < df['Dist_B'])) 
  | ((df['Response'] == 2) & (df['Dist_A'] > df['Dist_B']))
)
df["reussit"] = reussites

Bar

Créer une dataframe contenant les essais en mode Dic(hotique) à gauche et enfaire une copie via

df_copie = pandas.DataFrame(df_a_copier)

Ajouter un attribut mode_side contenant la valeur "Dic_G"

En créer deux autres versions: une pour Dic à droite et une pour Dio (tique) (sans différencier les côtés)

Assembler les 3 dataframes obtenues.

Faire un affichage de barres avec le nombre d’essais réussis (filtrer et compter).

df_d = pandas.DataFrame(df[(df["Mode"] ==  "Dic") & (df["Side"] == "D")])
df_d["mode_side"] = "Dic_D"
df_g = pandas.DataFrame(df[(df["Mode"] ==  "Dic") & (df["Side"] == "G")])
df_g["mode_side"] = "Dic_G"
df_dio = pandas.DataFrame(df[df["Mode"] ==  "Dio"])
df_dio["mode_side"] = "Dio"
df_mode = pandas.concat([df_d, df_g, df_dio])
s_reussits_mode_side = df_mode[df_mode["reussit"]].groupby(by="mode_side")["Subject"].count()
s_mode_side = df_mode.groupby(by="mode_side")["Subject"].count()
df_norm = pandas.DataFrame(
    {
        "total": s_mode_side, 
        "reussits": s_reussits_mode_side
    }
)
df_norm["reussits_n"] = df_norm["reussits"] / df_norm["total"]
df_norm["reussits_n"].plot.bar()
<AxesSubplot:xlabel='mode_side'>

png

Changements d’indexes

Obtenir la DataFrame indexée par Subject et Space

df.set_index(["Subject","Space"])

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

9594 rows × 9 columns

Obtenir la DataFrame indexée par Subject, Space et l’index original avec un niveau nommé essai (on peut utiliser .rename sur un index)

df.set_index(["Subject","Space", df.index.rename("essai")])

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

9594 rows × 9 columns

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