[{'role': 'system', 'content': "You are an expert in machine learning and your task is to classify code snippets into one of the following categories: ['helper_functions', 'load_data', 'data_exploration', 'data_preprocessing', 'evaluation', 'modelling', 'prediction', 'result_visualization', 'save_results', 'comment_only']."}, {'role': 'user', 'content': 'Identify the single most appropriate category to which the provided code belongs. Provide your response as a single category label without any additional information, commentary, or personal opinions.\\nPython Code:def f(x):\npassed = x[x.action == "passed"]\nnot_passed = x[~(x.step_id.isin(passed.step_id))]\navg_attempts_per_day = np.mean([t.time.values.size for t in [x[(x.action == "started_attempt") & (x.step_id == id_)] for id_ in x.step_id.unique()]])\nnot_passed = not_passed.drop_duplicates("step_id")\ndays = 10*3600*24\nborder = passed.time.max() - days\npassed_steps = len([1 for t in passed.time if t >= border])\nskipped_steps = not_passed.time.values.size\npassed_balls = passed.step_cost.sum()\nviewed_balls = not_passed[not_passed.action == "viewed"].step_cost.sum()\nthis_day = x.time.min() // 86400\nlast_day = x.time.max() // 86400\nt = np.zeros((last_day - this_day, ))\ni, cur_sum = 0, 0\nfor _, step in x.sort_values("time").iterrows():\nif step.time // 86400 >= this_day + 1:\nt[i] = cur_sum\ni += 1\nthis_day += 1\ncur_sum = 0\ncur_sum += step.step_cost\nif np.sum(t):\nmedian_balls_per_day = np.median(t)\nelse:\nmedian_balls_per_day = 0\nres = [passed_steps, skipped_steps, avg_attempts_per_day, passed_balls, viewed_balls, median_balls_per_day]\nreturn res'}, {'role': 'assistant', 'content': 'data_preprocessing'}]