def clean_data(): selected = data_list.curselection() if selected: dataset_name = data_list.get(selected[0]) df = data_dict.get(dataset_name) if df is not None: try: # Remove duplicates df.drop_duplicates(inplace=True) # Remove missing values df.dropna(inplace=True) # Convert string columns to lowercase str_cols = df.select_dtypes(include=['object']).columns for col in str_cols: df[col] = df[col].str.lower() # Save cleaned data back to the data_dict data_dict[dataset_name] = df messagebox.showinfo("Success", "Data cleaned successfully") except Exception as e: messagebox.showerror("Error", str(e)) else: messagebox.showinfo("Error", "No data selected") else: messagebox.showinfo("Error", "No dataset selected")