JustPaste.it
import pandas as pd
df=pd.read_csv(r'your_csv_here put the path here(written by ankush')
print(df.head())
def clean_data(df):
    # Drop the 'director' column from df
    df = df.drop(columns=['director'])
    # Drop the 'country' column from df
    df = df.drop(columns=['country'])
    # Drop rows with any missing values
    df = df.dropna()
    # Drop the 'description' column from df
    df = df.drop(columns=['description'])
    # Split 'cast' column into separate columns for male and female actors
    df['cast'] = df['cast'].fillna('')  # Handle missing values
    df['male_actors'] = df['cast'].apply(lambda x: ', '.join([name for name in x.split(', ') if name not in ['Ahsaas Channa', 'Revathi Pillai', 'Urvi Singh', 'Nabiha Akkari', 'Sofia Lesaffre', 'Ama Qamata', 'Khosi Ngema', 'Gail Mabalane', 'Natasha Thahane', 'Cindy Mahlangu', 'Greteli Fincham', 'Mekaila Mathys', 'Shamilla Miller']]))
    df['female_actors'] = df['cast'].apply(lambda x: ', '.join([name for name in x.split(', ') if name in ['Ahsaas Channa', 'Revathi Pillai', 'Urvi Singh', 'Nabiha Akkari', 'Sofia Lesaffre', 'Ama Qamata', 'Khosi Ngema', 'Gail Mabalane', 'Natasha Thahane', 'Cindy Mahlangu', 'Greteli Fincham', 'Mekaila Mathys', 'Shamilla Miller']]))
    # Remove 'female_actors' and 'cast' columns
    df = df.drop(columns=['female_actors', 'cast'])
    # Split male_actors column into separate columns
    actor_columns = df['male_actors'].str.split(', ', expand=True)
    actor_columns.columns = [f'Actor_{i+1}' for i in range(actor_columns.shape[1])]
    df = pd.concat([df, actor_columns], axis=1)
    # Drop the 'male_actors' column
    df = df.drop(columns=['male_actors'])
    # Combine all male actors into one column and drop Actor_4, Actor_3, Actor_2, and Actor_1
    df['Male_Actors'] = df[['Actor_1', 'Actor_2', 'Actor_3', 'Actor_4']].apply(
        lambda x: ', '.join(filter(None, x)), axis=1
    )
    df = df.drop(columns=['Actor_1', 'Actor_2', 'Actor_3', 'Actor_4'])
    # Drop male actor columns Actor_1 to Actor_50
    columns_to_drop = [f"Actor_{i}" for i in range(1, 51) if f"Actor_{i}" in df.columns]
    df = df.drop(columns=columns_to_drop)
    # Display all rows and columns of df
    df = df
    # Replace 'TV Show' with 'Series' in the 'type' column
    df['type'] = df['type'].replace('TV Show', 'Series')
    # Split 'duration' into 'duration_value' and 'duration_type'
    df[['duration_value', 'duration_type']] = df['duration'].str.extract(r'(\d+)\s*(\w+)')
    df['duration_value'] = df['duration_value'].astype(int)
    # Split 'listed_in' column into multiple categories
    df = df.assign(listed_in=df['listed_in'].str.split(', '))
    # One-hot encode the split categories
    df = df.explode('listed_in')
    df = pd.get_dummies(df, columns=['listed_in'], prefix='', prefix_sep='')
    # Combine back into a single DataFrame
    df = df.groupby('show_id', as_index=False).max()
    # Split and explode Male_Actors column for analysis
    df = df.assign(Male_Actors=df['Male_Actors'].str.split(', '))  # Splitting into lists
    df = df.explode('Male_Actors')  # Exploding into rows
    return df

df_clean = clean_data(df.copy())
df_clean.head()