# Complex demo: Read/write CSV for AI data, preprocess, visualize with Pandas/Matplotlib
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from sklearn.datasets import load_iris

def advanced_file_handling_demo():
    # Generate and write complex AI data to CSV
    iris = load_iris()
    df = pd.DataFrame(iris.data, columns=iris.feature_names)
    df['Target'] = iris.target
    df['Feature_Engineered'] = df['petal length (cm)'] * df['petal width (cm)']  # Complex feature
    df.to_csv('iris_data.csv', index=False)
    # Read CSV, preprocess
    df_read = pd.read_csv('iris_data.csv')
    df_read = df_read.dropna()
    scaler = StandardScaler()
    X_scaled = scaler.fit_transform(df_read.drop('Target', axis=1))
    df_scaled = pd.DataFrame(X_scaled, columns=df_read.drop('Target', axis=1).columns)
    df_scaled['Target'] = df_read['Target']
    # Visualize
    plt.scatter(df_scaled['petal length (cm)'], df_scaled['petal width (cm)'], c=df_scaled['Target'])
    plt.title('Preprocessed Iris Data from CSV')
    plt.xlabel('Scaled Petal Length')
    plt.ylabel('Scaled Petal Width')
    plt.annotate('Cluster Center', xy=(0, 0), xytext=(1, 1), arrowprops=dict(facecolor='black'))
    plt.show()
    # Write preprocessed data to new CSV
    df_scaled.to_csv('preprocessed_iris_data.csv', index=False)
    print("Preprocessed data saved to 'preprocessed_iris_data.csv'")

advanced_file_handling_demo()