# Advanced demo: Analyze CSV with filtering, grouping, and custom visualization
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

def advanced_csv_analysis(file):
    df = pd.read_csv(file)
    filtered_df = df[(df["Feature1"] > 1.0) & (df["Feature2"] < 3.0)]
    grouped = filtered_df.groupby("Category").agg({"Feature1": "mean", "Feature2": "std"})
    grouped["Log Mean"] = np.log(grouped["Feature1"])
    return grouped

def advanced_visualize(grouped):
    fig, ax = plt.subplots(figsize=(8, 5))
    grouped["Log Mean"].plot(kind='bar', ax=ax, color='purple', label='Log Mean')
    ax.set_title('Advanced CSV Analysis', fontsize=14)
    ax.set_ylabel('Log Mean Value', fontsize=12)
    ax.legend()
    ax.annotate('High Log Mean', xy=(grouped["Log Mean"].idxmax(), grouped["Log Mean"].max()), xytext=(grouped["Log Mean"].idxmax() + 0.5, grouped["Log Mean"].max() - 0.5), arrowprops=dict(facecolor='black', shrink=0.05))
    plt.show()

# Assume csv3.csv with Feature1, Feature2, Category columns
grouped = advanced_csv_analysis("csv3.csv")
advanced_visualize(grouped)
print("Grouped Analysis:\n", grouped)