Practical 1: 
Data Cleaning missing values
Code:-
import pandas as pd
from sklearn.preprocessing import MinMaxScaler, StandardScaler
try:
    df = pd.read_csv("data.csv")
    print("Columns detected in csv file:", df.columns.tolist())
except Exception as e:
    print(f"Error loading csv file: {e}")
    exit()
print("\nOriginal DataFrame:")
print(df)
print("\nMissing Values Summary:")
print(df.isna().sum())
print("\nRows with Any missing values:")
print(df[df.isna().any(axis=1)])
print("\nRows with ALL missing values:")
print(df[df.isna().all(axis=1)])
print("\n################ FILL MISSING DATA ###################")
if "Name" in df.columns:
    df["Name"] = df["Name"].fillna("Unknown")
if "City" in df.columns:
    df["City"] = df["City"].ffill().bfill()
if 'Dob' in df.columns:
    df['Dob'].fillna('1900-01-01')
if 'Marks' in df.columns:
    df['Marks'] = pd.to_numeric(df['Marks'], errors='coerce')
    df['Marks']=df['Marks'].fillna(df['Marks'].mean())
print("\nDataFrame After Filling Missing Values:")
print(df)
if 'Marks' in df.columns and not df['Marks'].isna().all():
    # Min-Max Scaling
    scaler = MinMaxScaler()
    df['Marks_MINMAX'] = scaler.fit_transform(df[['Marks']])
    zscaler = StandardScaler()
    df['Marks_ZSCORE'] = zscaler.fit_transform(df[['Marks']])
    print("\nDataFrame with Scaled Marks:")
    print(df[['Name', 'Roll_no', 'Marks', 'Marks_MINMAX', 'Marks_ZSCORE']])
else:
    print("\nNo valid Marks column available for scaling")
if 'Marks' in df.columns:
    print("\nMarks Statistics:")
    print(f"Mean: {df['Marks'].mean():.2f}")
    print(f"Median: {df['Marks'].median():.2f}")
    print(f"Max: {df['Marks'].max():.2f}")
    print(f"Min: {df['Marks'].min():.2f}")
df_clean = df.dropna(how='any')
print("\nDataFrame after dropping rows with ANY missing values:")
print(df_clean)
df_clean_all = df.dropna(how='all')
print("\nDataFrame after dropping rows with ALL missing values:")
print(df_clean_all)
df.to_csv('student_cleaned.csv', index=False)
print("\nCleaned data saved to 'student_cleaned.csv'")
Output:-