import sqlite3
import pandas as pd
import numpy as np
import os

# Config to match your project structure
class Config:
    DB_L3_PATH = r'd:\Documents\trae_projects\yrtv\database\L3\L3_Features.sqlite'

def check_variance():
    db_path = Config.DB_L3_PATH
    if not os.path.exists(db_path):
        print(f"L3 DB not found at {db_path}")
        return

    conn = sqlite3.connect(db_path)
    try:
        # Read all features
        df = pd.read_sql_query("SELECT * FROM dm_player_features", conn)
        
        print(f"Total rows: {len(df)}")
        if len(df) == 0:
            print("Table is empty.")
            return

        numeric_cols = df.select_dtypes(include=['number']).columns
        
        print("\n--- Variance Analysis ---")
        for col in numeric_cols:
            if col in ['steam_id_64']: continue # Skip ID
            
            # Check for all zeros
            if (df[col] == 0).all():
                print(f"[ALL ZERO] {col}")
                continue

            # Check for single value (variance = 0)
            if df[col].nunique() <= 1:
                val = df[col].iloc[0]
                print(f"[SINGLE VAL] {col} = {val}")
                continue

            # Check for mostly zeros
            zero_pct = (df[col] == 0).mean()
            if zero_pct > 0.9:
                print(f"[MOSTLY ZERO] {col} ({zero_pct:.1%} zeros)")
                
            # Basic stats for valid ones
            # print(f"{col}: min={df[col].min():.2f}, max={df[col].max():.2f}, mean={df[col].mean():.2f}")

    finally:
        conn.close()

if __name__ == "__main__":
    check_variance()
