#!/usr/bin/env python3 """ Inspect NQ.FUT Parquet file schema and validate data. Agent: W12-08 """ import pandas as pd import pyarrow.parquet as pq PARQUET_FILE = "test_data/NQ_FUT_180d.parquet" def main(): """Inspect Parquet file.""" print("=" * 80) print("NQ.FUT Parquet Inspection") print("=" * 80) print() # Read Parquet metadata parquet_file = pq.ParquetFile(PARQUET_FILE) print("📊 Parquet Metadata:") print(f" Format version: {parquet_file.metadata.format_version}") print(f" Num rows: {parquet_file.metadata.num_rows:,}") print(f" Num row groups: {parquet_file.metadata.num_row_groups}") print(f" Serialized size: {parquet_file.metadata.serialized_size:,} bytes") print() # Schema print("📋 Schema:") for i, field in enumerate(parquet_file.schema): print(f" {i}: {field.name} ({field.physical_type})") print() # Read data df = pd.read_parquet(PARQUET_FILE) print("📊 DataFrame Info:") print(f" Shape: {df.shape}") print(f" Columns: {list(df.columns)}") print(f" Index: {df.index.name} ({df.index.dtype})") print() print("📈 OHLCV Statistics:") print(f" Open: min=${df['open'].min():.2f}, max=${df['open'].max():.2f}") print(f" High: min=${df['high'].min():.2f}, max=${df['high'].max():.2f}") print(f" Low: min=${df['low'].min():.2f}, max=${df['low'].max():.2f}") print(f" Close: min=${df['close'].min():.2f}, max=${df['close'].max():.2f}") print(f" Volume: total={df['volume'].sum():,.0f}, avg={df['volume'].mean():.0f}") print() print("🕐 Timestamp Info:") print(f" First: {df.index[0]}") print(f" Last: {df.index[-1]}") print(f" Total bars: {len(df):,}") print() # Sample rows print("📋 First 5 rows:") print(df.head(5)[['open', 'high', 'low', 'close', 'volume']]) print() print("=" * 80) print("✅ Parquet file validated successfully!") print("=" * 80) if __name__ == "__main__": main()