import numpy as np import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv("C:\\Users\\eden2\\Desktop\\Thesis\\test4\\final_project\\Raw_data_completed_EXP_2_fix_175_participants.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], ["Balanced", "Unbalanced"]) 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_completed_fix_658_participants.csv") ### DOES ANYONE COMPLETE THE TASK? # check_not_50_df = df.groupby("participant.code").count() # print(check_not_50_df) # check_not_50_df.to_csv("Who_Complete???###.csv") ### Getting the Data ordered (Up to here) attention_df = df[df["player.attention_result"] == 1] ##### ONLY WHO PASSED AC #### Filtering out all the experiment (POS/NEG) trials (FOR TTEST PURPOSES) >>> Need to fix back the attention_df_1 above to attention_df only # attention_df = attention_df_1[df["environment_info"] == "Balanced"] attention_df.to_csv("attention_df_EXP_2_165(175).csv") ############################################################################################################### # pos_df = attention_df[df["player.condition_info"] == 1] ##### CON 1 # neg_df = attention_df[df["player.condition_info"] == 2] ##### CON 2 ##### 4 Groups (2X2) # feedback_pos_df = pos_df[df["player.group_info"] == 1] # feedback_pos # no_feedback_pos_df = pos_df[df["player.group_info"] == 2] # no_feedback_pos # # feedback_neg_df = neg_df[df["player.group_info"] == 1] # feedback_neg # no_feedback_neg_df = neg_df[df["player.group_info"] == 2] # no_feedback_neg ## EXPORT attention_df_demo = attention_df.groupby(["participant.code", "player.gender", "player.submission_code"]).agg({"player.age": "mean"}) # attention_df_gender = attention_df.groupby(["participant.code"]).agg({"player.age": "mean"}) #EXPORT attention_df_demo.to_csv("ATTENTION_DF_DEMO_EXP_2.csv") new_attention_df_demo = pd.read_csv("C:\\Users\\eden2\\Desktop\\Thesis\\test4\\final_project\\ATTENTION_DF_DEMO_EXP_2.csv") gender_df = new_attention_df_demo.groupby(["player.gender"])["player.gender"].count() code_df = new_attention_df_demo.groupby(["player.submission_code"])["player.submission_code"].count() mean_age_df = new_attention_df_demo.groupby(["player.gender"]).agg({"player.age": "mean"}) sd_age_df = new_attention_df_demo.groupby(["player.gender"]).agg({"player.age": "std"}) # mean_attention_df_demo = new_attention_df_demo.mean("player.age") mean_age_df["n"] = gender_df mean_age_df["std"] = sd_age_df mean_age_df["submission_code"] = code_df # gender_df.to_csv("GENDER_DF_DEMO.csv") mean_age_df.to_csv("DEMOGRAPHICS_INFO_EPX_2_165(175).csv") print(gender_df,mean_age_df,code_df) # present the plot # # labels = ["Feedback & Positive", "Feedback & Negative", "No Feedback & Positive", "No Feedback & Negative"] # # labels = ["Feedback & Positive", "Feedback & Negative"] # balanced_means = all_df_together_Balanced["Risk rate"] # unbalanced_means = all_df_together_Unbalanced["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, balanced_means, width, label="Target") # rects2 = ax.bar(x + width/2, unbalanced_means, width, label="Context") # # # 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()