import numpy as np import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv("C:\\Users\\eden2\\Desktop\\Thesis\\test8_Exp2_new\\final_project\\Raw_data_EXP2-new-pilot_19(1)+60(2)+52(3)+54(4)+54(5)+56(6).csv") ## Import CSV df = df.rename(columns={'player.choice_val': 'choice_val'}) ## Changing column name df = df.rename(columns={"player.environment_info": "environment_info"}) df["environment_info"] = df["environment_info"].replace([0, 1], ["Target", "Surrounding"]) df["player.condition_info"] = df["player.condition_info"].replace([1, 2], ["Gain", "Loss"]) df["player.group_info"] = df["player.group_info"].replace([1, 2], ["Feedback", "No_feedback"]) df.sort_values(by=["participant.code", "player.current_round"], inplace=True) ## Sort based on Participants & Rounds df = df[df.choice_val.notnull()] ## Filter out rows without input (choice) demo_df = df[["player.age", "player.gender", "player.connect_id"]] demo_df.fillna(method="ffill", inplace=True) ## Filling demographic info df[["player.age", "player.gender", "player.connect_id"]] = demo_df[["player.age", "player.gender", "player.connect_id"]] ## Combine df again df.fillna(method="bfill", inplace=True) ### Export completed Raw Data # df.to_csv("Raw_data_EXP2-new-56(6).csv") ### DOES ANYONE COMPLETE THE TASK? check_not_50_df = df.groupby("participant.code").count() # check_not_50_df.to_csv("Who_Complete?1111.csv") print(check_not_50_df) ### Getting the Data ordered (Up to here) attention_df = df[df["player.attention_result"] == 1] ##### ONLY WHO PASSED AC attention_df.to_csv("attention_df.csv") ############################################################################################################### gain_df = attention_df[df["player.condition_info"] == "Gain"] ##### CON 1 loss_df = attention_df[df["player.condition_info"] == "Loss"] ##### CON 2 ##### 4 Groups (2X2) feedback_gain_df = gain_df[df["player.group_info"] == "Feedback"] # feedback_pos no_feedback_gain_df = gain_df[df["player.group_info"] == "No_feedback"] # no_feedback_pos feedback_loss_df = loss_df[df["player.group_info"] == "Feedback"] # feedback_neg no_feedback_loss_df = loss_df[df["player.group_info"] == "No_feedback"] # no_feedback_neg ## EXPORT # feedback_gain_df.to_csv("feedback_pos_df.csv") # no_feedback_gain_df.to_csv("no_feedback_pos_df.csv") # feedback_loss_df.to_csv("feedback_neg_df.csv") # no_feedback_loss_df.to_csv("no_feedback_neg_df.csv") #### 8 Groups (2X4) Feedback_gain_tar = feedback_gain_df[feedback_gain_df["environment_info"] == "Target"] # feedback_pos_balanced Feedback_gain_sur = feedback_gain_df[feedback_gain_df["environment_info"] == "Surrounding"] # feedback_pos_unbalanced Feedback_loss_tar = feedback_loss_df[feedback_loss_df["environment_info"] == "Target"] # feedback_neg_balanced Feedback_loss_sur = feedback_loss_df[feedback_loss_df["environment_info"] == "Surrounding"] # feedback_neg_unbalanced No_feedback_gain_tar = no_feedback_gain_df[no_feedback_gain_df["environment_info"] == "Target"] # no_feedback_pos_balanced No_feedback_gain_sur = no_feedback_gain_df[no_feedback_gain_df["environment_info"] == "Surrounding"] # no_feedback_pos_unbalanced No_feedback_loss_tar = no_feedback_loss_df[no_feedback_loss_df["environment_info"] == "Target"] # no_feedback_neg_balanced No_feedback_loss_sur = no_feedback_loss_df[no_feedback_loss_df["environment_info"] == "Surrounding"] # no_feedback_neg_unbalanced # Feedback_gain_tar.to_csv("Feedback_gain_tar.csv") # Feedback_gain_sur.to_csv("Feedback_gain_sur.csv") # Feedback_loss_tar.to_csv("Feedback_loss_tar.csv") # Feedback_loss_sur.to_csv("Feedback_loss_sur.csv") # No_feedback_gain_tar.to_csv("No_feedback_gain_tar.csv") # No_feedback_gain_sur.to_csv("No_feedback_gain_sur.csv") # No_feedback_loss_tar.to_csv("No_feedback_loss_tar.csv") # No_feedback_loss_sur.to_csv("No_feedback_loss_sur.csv") # # feedback_pos_env_df = feedback_pos_df.groupby(["environment_info"]).agg({"choice_val": "mean"}) ### switch with the one under # feedback_pos_env_df = feedback_pos_df.groupby(["participant.code"]).agg({"choice_val": "mean"}) # feedback_pos_env_df["Group X Condition"] = "Feedback X Positive" # feedback_pos_env_df["n"] = len(feedback_pos_df.index)//50 ##### Also change back to 50 # # feedback_neg_env_df = feedback_neg_df.groupby(["environment_info"]).agg({"choice_val": "mean"}) ### switch with the one under # feedback_neg_env_df = feedback_neg_df.groupby(["participant.code"]).agg({"choice_val": "mean"}) # feedback_neg_env_df["Group X Condition"] = "Feedback X Negative" # feedback_neg_env_df["n"] = len(feedback_neg_df.index)//50 ##### Also change back to 50 # # # no_feedback_pos_env_df = no_feedback_pos_df.groupby(["environment_info"]).agg({"choice_val": "mean"}) ### switch with the one under # no_feedback_pos_env_df = no_feedback_pos_df.groupby(["participant.code"]).agg({"choice_val": "mean"}) # no_feedback_pos_env_df["Group X Condition"] = "No_Feedback X Positive" # no_feedback_pos_env_df["n"] = len(no_feedback_pos_df.index)//50 ##### Also change back to 50 # # # no_feedback_neg_env_df = no_feedback_neg_df.groupby(["environment_info"]).agg({"choice_val": "mean"}) ### switch with the one under # no_feedback_neg_env_df = no_feedback_neg_df.groupby(["participant.code"]).agg({"choice_val": "mean"}) # no_feedback_neg_env_df["Group X Condition"] = "No_Feedback X Negative" # no_feedback_neg_env_df["n"] = len(no_feedback_neg_df.index)//50 ##### Also change back to 50 #EXPORT # feedback_pos_env_df.to_csv("feedback_pos_env_df.csv") # no_feedback_pos_env_df.to_csv("no_feedback_pos_env_df.csv") # feedback_neg_env_df.to_csv("feedback_neg_env_df.csv") # no_feedback_neg_env_df.to_csv("no_feedback_neg_env_df.csv") # Feedback | Gain | Target Feedback_gain_tar_sum = Feedback_gain_tar.groupby(["participant.code"]).agg({"choice_val": "mean"}) Feedback_gain_tar_sum["Group"] = "Feedback" Feedback_gain_tar_sum["Condition"] = "Gain" Feedback_gain_tar_sum["Task"] = "Target" Feedback_gain_tar_sum["n"] = len(Feedback_gain_tar.index)//25 # Feedback | Gain | Surroundings Feedback_gain_sur_sum = Feedback_gain_sur.groupby(["participant.code"]).agg({"choice_val": "mean"}) Feedback_gain_sur_sum["Group"] = "Feedback" Feedback_gain_sur_sum["Condition"] = "Gain" Feedback_gain_sur_sum["Task"] = "Surroundings" Feedback_gain_sur_sum["n"] = len(Feedback_gain_sur.index)//25 # Feedback | Loss | Target Feedback_loss_tar_sum = Feedback_loss_tar.groupby(["participant.code"]).agg({"choice_val": "mean"}) Feedback_loss_tar_sum["Group"] = "Feedback" Feedback_loss_tar_sum["Condition"] = "Loss" Feedback_loss_tar_sum["Task"] = "Target" Feedback_loss_tar_sum["n"] = len(Feedback_loss_tar.index)//25 # Feedback | Loss | Surroundings Feedback_loss_sur_sum = Feedback_loss_sur.groupby(["participant.code"]).agg({"choice_val": "mean"}) Feedback_loss_sur_sum["Group"] = "Feedback" Feedback_loss_sur_sum["Condition"] = "Loss" Feedback_loss_sur_sum["Task"] = "Surroundings" Feedback_loss_sur_sum["n"] = len(Feedback_loss_sur.index)//25 # No-Feedback | Gain | Target No_feedback_gain_tar_sum = No_feedback_gain_tar.groupby(["participant.code"]).agg({"choice_val": "mean"}) No_feedback_gain_tar_sum["Group"] = "No_feedback" No_feedback_gain_tar_sum["Condition"] = "Gain" No_feedback_gain_tar_sum["Task"] = "Target" No_feedback_gain_tar_sum["n"] = len(No_feedback_gain_tar.index)//25 # No-Feedback | Gain | Surroundings No_feedback_gain_sur_sum = No_feedback_gain_sur.groupby(["participant.code"]).agg({"choice_val": "mean"}) No_feedback_gain_sur_sum["Group"] = "No_feedback" No_feedback_gain_sur_sum["Condition"] = "Gain" No_feedback_gain_sur_sum["Task"] = "Surroundings" No_feedback_gain_sur_sum["n"] = len(No_feedback_gain_sur.index)//25 # No-Feedback | Loss | Target No_feedback_loss_tar_sum = No_feedback_loss_tar.groupby(["participant.code"]).agg({"choice_val": "mean"}) No_feedback_loss_tar_sum["Group"] = "No_feedback" No_feedback_loss_tar_sum["Condition"] = "Loss" No_feedback_loss_tar_sum["Task"] = "Target" No_feedback_loss_tar_sum["n"] = len(No_feedback_loss_tar.index)//25 # No-Feedback | Loss | Surroundings No_feedback_loss_sur_sum = No_feedback_loss_sur.groupby(["participant.code"]).agg({"choice_val": "mean"}) No_feedback_loss_sur_sum["Group"] = "No_feedback" No_feedback_loss_sur_sum["Condition"] = "Loss" No_feedback_loss_sur_sum["Task"] = "Surroundings" No_feedback_loss_sur_sum["n"] = len(No_feedback_loss_sur.index)//25 #EXPORT # Feedback_gain_tar_sum.to_csv("Feedback_gain_tar_sum.csv") # Feedback_gain_sur_sum.to_csv("Feedback_gain_sur_sum.csv") # Feedback_loss_tar_sum.to_csv("Feedback_loss_tar_sum.csv") # Feedback_loss_sur_sum.to_csv("Feedback_loss_sur_sum.csv") # No_feedback_gain_tar_sum.to_csv("No_feedback_gain_tar_sum.csv") # No_feedback_gain_sur_sum.to_csv("No_feedback_gain_sur_sum.csv") # No_feedback_loss_tar_sum.to_csv("No_feedback_loss_tar_sum.csv") # No_feedback_loss_sur_sum.to_csv("No_feedback_loss_sur_sum.csv") all_df = [Feedback_gain_tar_sum, Feedback_gain_sur_sum, Feedback_loss_tar_sum, Feedback_loss_sur_sum, No_feedback_gain_tar_sum, No_feedback_gain_sur_sum, No_feedback_loss_tar_sum, No_feedback_loss_sur_sum] all_df_together = pd.concat(all_df) # # all_df_together.sort_values(by=["Group", "Condition"], inplace=True) all_df_together = all_df_together.rename(columns={"choice_val": "Risk rate"}) all_df_together["Risk rate"] = all_df_together["Risk rate"].round(3) # print(all_df_together) all_df_together.to_csv("SUM_Par_DF.csv") ### EXPORT all_df_new = pd.read_csv("C:\\Users\\eden2\\Desktop\\Thesis\\test8_Exp2_new\\final_project\\SUM_Par_DF.csv") all_df_new = all_df_new.groupby(["Group", "Condition", "Task", "n"]).agg({"Risk rate": "mean"}) status = ["Feedback, Gain, Surroundings", "Feedback, Gain, Target", "Feedback, Loss, Surroundings", "Feedback, Loss, Target", "No_feedback, Gain, Surroundings", "No_feedback, Gain, Target", "No_feedback, Loss, Surroundings", "No_feedback, Loss, Target"] all_df_new["Status"] = status all_df_new.to_csv("SUM_RR_DF.csv") ### EXPORT print(all_df_new) final = all_df_new.groupby(["Status"]).agg({"Risk rate": "mean"}) final.to_csv("final.csv") all_final = pd.read_csv("C:\\Users\\eden2\\Desktop\\Thesis\\test8_Exp2_new\\final_project\\final.csv") ### PLOT # all_final.plot(kind="bar", x="Status", y="Risk rate", color="orange") # plt.show() print(final["Risk rate"].round(3)) # # # present the plot # plt.bar(all_df_together_tar["Group"], all_df_together_tar["Risk rate"], color = "orange") # plt.show() # # # # labels = ["Feedback & Gain", "Feedback & Loss", "No Feedback & Gain", "No Feedback & Loss"] # # labels = ["Feedback & Positive", "Feedback & Negative"] # tar_means = all_df_together_tar["Risk rate"] # sur_means = all_df_together_sur["Risk rate"] # # x = np.arange(len(labels)) # the label locations # width = 0.35 # the width of the bars # # fig, ax = plt.subplots() # rects1 = ax.bar(x - width/2, tar_means, width, label="Target") # rects2 = ax.bar(x + width/2, sur_means, width, label="Surroundings") # # # Add some text for labels, title and custom x-axis tick labels, etc. # ax.set_ylabel('Risk rate') # ax.set_title('Risk rate by Group and Condition') # ax.set_xticks(x, labels) # ax.legend() # # ax.bar_label(rects1, padding=3) # ax.bar_label(rects2, padding=3) # # fig.tight_layout() # plt.ylim(0,1) # plt.show() # plt.plot(sorted_expert_df_by_round["Block"], sorted_expert_df_by_round["Choice"], color = "blue") # # plt.ylim(0,1) # plt.title("Risk rates across 200 trials, Exp 1.") # plt.legend(["Experience (n=135)", "Description (n=109)"]) # plt.xlabel("Block") # plt.ylabel("Risk rate") # # # plt.savefig("plot.png") # #save the plot as a picture # # print(expert_df_by_round.loc[[0,1,99,100,101,102]])