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()